diff options
Diffstat (limited to 'src/devices/cpu/i860/i860dasm.cpp')
-rw-r--r-- | src/devices/cpu/i860/i860dasm.cpp | 378 |
1 files changed, 0 insertions, 378 deletions
diff --git a/src/devices/cpu/i860/i860dasm.cpp b/src/devices/cpu/i860/i860dasm.cpp deleted file mode 100644 index 03d24e2d2a8..00000000000 --- a/src/devices/cpu/i860/i860dasm.cpp +++ /dev/null @@ -1,378 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Jason Eckhardt -#include "i860.h" - -/* Sub-group decoders */ -static void i860_dasm_core_dasm(const uint32_t op, char* buffer); -static void i860_dasm_floating_point_dasm(const uint32_t op, char* buffer); -static void i860_dasm_CTRL_dasm(const uint32_t op, char* buffer); - -/* REG-Format Opcodes*/ -static void i860_dasm_ldx(const uint32_t op, char* buffer); -static void i860_dasm_stx(const uint32_t op, char* buffer); -static void i860_dasm_ixfr(const uint32_t op, char* buffer); -static void i860_dasm_fid_fst(const uint32_t op, char* buffer); -static void i860_dasm_flush(const uint32_t op, char* buffer); -static void i860_dasm_pstd(const uint32_t op, char* buffer); -static void i860_dasm_ldc_sdc(const uint32_t op, char* buffer); -static void i860_dasm_bri(const uint32_t op, char* buffer); -static void i860_dasm_trap(const uint32_t op, char* buffer); -static void i860_dasm_bte_btne(const uint32_t op, char* buffer); -static void i860_dasm_pfidy(const uint32_t op, char* buffer); -static void i860_dasm_addu_subu(const uint32_t op, char* buffer); -static void i860_dasm_shl_shr(const uint32_t op, char* buffer); -static void i860_dasm_shrd(const uint32_t op, char* buffer); -static void i860_dasm_bla(const uint32_t op, char* buffer); -static void i860_dasm_shra(const uint32_t op, char* buffer); -static void i860_dasm_and_andh(const uint32_t op, char* buffer); -static void i860_dasm_andnot_andnoth(const uint32_t op, char* buffer); -static void i860_dasm_or_orh(const uint32_t op, char* buffer); -static void i860_dasm_xor_xorh(const uint32_t op, char* buffer); - -/* CORE Escape Opcodes */ -static void i860_dasm_CORE_lock(const uint32_t op, char* buffer); -static void i860_dasm_CORE_calli(const uint32_t op, char* buffer); -static void i860_dasm_CORE_intovr(const uint32_t op, char* buffer); -static void i860_dasm_CORE_unlock(const uint32_t op, char* buffer); - -/* CTRL-Format Opcodes */ -static void i860_dasm_CTRL_br(const uint32_t op, char* buffer); -static void i860_dasm_CTRL_call(const uint32_t op, char* buffer); -static void i860_dasm_CTRL_bc_bct(const uint32_t op, char* buffer); -static void i860_dasm_CTRL_bnc_bnct(const uint32_t op, char* buffer); - -/* Floating-Point Instructions */ - - -CPU_DISASSEMBLE( i860 ) -{ - char tempB[1024] = ""; - - /* Little Endian */ - const uint32_t op = (oprom[3] << 24) | (oprom[2] << 16) | (oprom[1] << 8) | (oprom[0] << 0); - //const uint32_t op = (oprom[2] << 24) | (oprom[3] << 16) | (oprom[0] << 8) | (oprom[1] << 0); /* Mixed Endian */ - //const uint32_t op = (oprom[0] << 24) | (oprom[1] << 16) | (oprom[2] << 8) | (oprom[3] << 0); /* Big Endian */ - //const uint32_t op = (oprom[1] << 24) | (oprom[0] << 16) | (oprom[3] << 8) | (oprom[2] << 0); /* Mixed Endian */ - - /* The opcode is the top 6 bits */ - uint8_t opcode = (op >> 26) & 0x3f; - - /* DEBUG - print this out if you feel things are going a bit wonky */ - // sprintf(buffer, "%08x : oo %02x", op, opcode); - - /* Main decode */ - switch (opcode) - { - case 0x00: - case 0x01: - case 0x04: - case 0x05: i860_dasm_ldx(op, tempB); break; - - case 0x03: - case 0x07: i860_dasm_stx(op, tempB); break; - - case 0x02: i860_dasm_ixfr(op, tempB); break; - - case 0x06: sprintf(tempB, "(reserved)"); break; - - case 0x08: - case 0x09: - case 0x0a: - case 0x0b: i860_dasm_fid_fst(op, tempB); break; - - case 0x0d: i860_dasm_flush(op, tempB); break; - - case 0x0f: i860_dasm_pstd(op, tempB); break; - - case 0x0c: - case 0x0e: i860_dasm_ldc_sdc(op, tempB); break; - - case 0x10: i860_dasm_bri(op, tempB); break; - - case 0x11: i860_dasm_trap(op, tempB); break; - - case 0x12: i860_dasm_floating_point_dasm(op, tempB); break; /* Floating point operation sub-group */ - - case 0x13: i860_dasm_core_dasm(op, tempB); break; /* Core operation sub-group */ - - case 0x14: - case 0x15: - case 0x16: - case 0x17: i860_dasm_bte_btne(op, tempB); break; - - case 0x18: - case 0x19: i860_dasm_pfidy(op, tempB); break; - - case 0x1a: - case 0x1b: - case 0x1c: - case 0x1d: - case 0x1e: - case 0x1f: i860_dasm_CTRL_dasm(op, tempB); break; /* CTRL operation sub-group */ - - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: i860_dasm_addu_subu(op, tempB); break; - - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: i860_dasm_shl_shr(op, tempB); break; - - case 0x2c: i860_dasm_shrd(op, tempB); break; - - case 0x2d: i860_dasm_bla(op, tempB); break; - - case 0x2e: - case 0x2f: i860_dasm_shra(op, tempB); break; - - case 0x30: - case 0x31: - case 0x32: - case 0x33: i860_dasm_and_andh(op, tempB); break; - - case 0x34: - case 0x35: - case 0x36: - case 0x37: i860_dasm_andnot_andnoth(op, tempB); break; - - case 0x38: - case 0x39: - case 0x3a: - case 0x3b: i860_dasm_or_orh(op, tempB); break; - - case 0x3c: - case 0x3d: - case 0x3e: - case 0x3f: i860_dasm_xor_xorh(op, tempB); break; - - default: sprintf(tempB, "(reserved)"); break; - } - - /* More Debug */ - //strcat(buffer, " : "); - //strcat(buffer, tempB); - sprintf(buffer, "%s", tempB); - - /* All opcodes are 32 bits */ - return (4 | DASMFLAG_SUPPORTED); -} - - -// BIT HELPER -// 31 27 23 19 15 11 7 3 -// 0000 0011 1111 1111 0000 0111 1110 0000 - - -/**********************/ -/* Sub-group decoders */ -/**********************/ -static void i860_dasm_core_dasm(const uint32_t op, char* buffer) -{ - //uint8_t src1 = (op >> 11) & 0x0000001f; - - /* Reserved bits must be set to 0 */ - if ( (op & 0x000007e0) || (op & 0x03ff0000) ) - { - //logerror("[i860] Reserved CORE bits must be set to 0."); - printf("CORE baddie\n"); - } - - switch(op & 0x0000001f) - { - case 0x01: i860_dasm_CORE_lock(op, buffer); break; - case 0x02: i860_dasm_CORE_calli(op, buffer); break; - case 0x04: i860_dasm_CORE_intovr(op, buffer); break; - case 0x07: i860_dasm_CORE_unlock(op, buffer); break; - - default: sprintf(buffer, "(reserved)"); break; - } -} - -static void i860_dasm_floating_point_dasm(const uint32_t op, char* buffer) -{ - sprintf(buffer, "[[F-P unit]]"); -} - -static void i860_dasm_CTRL_dasm(const uint32_t op, char* buffer) -{ - uint8_t opc = (op >> 26) & 0x07; - - switch(opc) - { - case 0x02: i860_dasm_CTRL_br(op, buffer); break; - case 0x03: i860_dasm_CTRL_call(op, buffer); break; - case 0x04: case 0x05: i860_dasm_CTRL_bc_bct(op, buffer); break; - case 0x06: case 0x07: i860_dasm_CTRL_bnc_bnct(op, buffer); break; - - default: sprintf(buffer, "(reserved)"); break; - } -} - - -/*********************/ -/* REG-Format Opcodes*/ -/*********************/ -static void i860_dasm_ldx(const uint32_t op, char* buffer) -{ - sprintf(buffer, "ldx"); -} - -static void i860_dasm_stx(const uint32_t op, char* buffer) -{ - sprintf(buffer, "stx"); -} - -static void i860_dasm_ixfr(const uint32_t op, char* buffer) -{ -// uint16_t val = op & 0x7ff; -// uint8_t opc = (op >> 26) & 0x3f; -// uint8_t src2 = (op >> 21) & 0x1f; -// uint8_t dest = (op >> 16) & 0x1f; -// uint8_t src1 = (op >> 11) & 0x1f; - - sprintf(buffer, "ixfr"); -} - -static void i860_dasm_fid_fst(const uint32_t op, char* buffer) -{ - sprintf(buffer, "fst"); -} - -static void i860_dasm_flush(const uint32_t op, char* buffer) -{ - sprintf(buffer, "flush"); -} - -static void i860_dasm_pstd(const uint32_t op, char* buffer) -{ - sprintf(buffer, "pstd"); -} - -static void i860_dasm_ldc_sdc(const uint32_t op, char* buffer) -{ - sprintf(buffer, "ldc, sdc"); -} - -static void i860_dasm_bri(const uint32_t op, char* buffer) -{ - sprintf(buffer, "bri"); -} - -static void i860_dasm_trap(const uint32_t op, char* buffer) -{ - sprintf(buffer, "trap"); -} - -static void i860_dasm_bte_btne(const uint32_t op, char* buffer) -{ - sprintf(buffer, "bte, btne"); -} - -static void i860_dasm_pfidy(const uint32_t op, char* buffer) -{ - sprintf(buffer, "pfidy"); -} - -static void i860_dasm_addu_subu(const uint32_t op, char* buffer) -{ - sprintf(buffer, "addu, subu"); -} - -static void i860_dasm_shl_shr(const uint32_t op, char* buffer) -{ - sprintf(buffer, "shl, shr"); -} - -static void i860_dasm_shrd(const uint32_t op, char* buffer) -{ - sprintf(buffer, "shrd"); -} - -static void i860_dasm_bla(const uint32_t op, char* buffer) -{ - sprintf(buffer, "bla"); -} - -static void i860_dasm_shra(const uint32_t op, char* buffer) -{ - sprintf(buffer, "shra"); -} - -static void i860_dasm_and_andh(const uint32_t op, char* buffer) -{ - sprintf(buffer, "and, andh"); -} - -static void i860_dasm_andnot_andnoth(const uint32_t op, char* buffer) -{ - sprintf(buffer, "andnot, andnoth"); -} - -static void i860_dasm_or_orh(const uint32_t op, char* buffer) -{ - sprintf(buffer, "or, orh"); -} - -static void i860_dasm_xor_xorh(const uint32_t op, char* buffer) -{ - sprintf(buffer, "xor, xorh"); -} - - -/***********************/ -/* CORE Escape Opcodes */ -/***********************/ -static void i860_dasm_CORE_lock(const uint32_t op, char* buffer) -{ - sprintf(buffer, "lock"); -} - -static void i860_dasm_CORE_calli(const uint32_t op, char* buffer) -{ - sprintf(buffer, "calli"); -} - -static void i860_dasm_CORE_intovr(const uint32_t op, char* buffer) -{ - sprintf(buffer, "intovr"); -} - -static void i860_dasm_CORE_unlock(const uint32_t op, char* buffer) -{ - sprintf(buffer, "unlock"); -} - - -/***********************/ -/* CTRL-Format Opcodes */ -/***********************/ -static void i860_dasm_CTRL_br(const uint32_t op, char* buffer) -{ - sprintf(buffer, "br"); -} - -static void i860_dasm_CTRL_call(const uint32_t op, char* buffer) -{ - sprintf(buffer, "call"); -} - -static void i860_dasm_CTRL_bc_bct(const uint32_t op, char* buffer) -{ - sprintf(buffer, "bct"); -} - -static void i860_dasm_CTRL_bnc_bnct(const uint32_t op, char* buffer) -{ - sprintf(buffer, "bnct"); -} - - -/*******************************/ -/* Floating-Point Instructions */ -/*******************************/ |