This is the mail archive of the
sid@sources.redhat.com
mailing list for the SID project.
ARM Thumb hack patch
- From: Robert Shideleff <bigbob at shideleff dot com>
- To: sid at sources dot redhat dot com
- Cc: cgen at sources dot redhat dot com
- Date: Fri, 13 Aug 2004 15:14:29 -0400
- Subject: ARM Thumb hack patch
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
In the current SID CVS repository the ARM thumb instruction set does not work.
It appears that a macro type thing is broken in the cgen code. I don't know
the insides of cgen, and so I don't know how to fix it, but here is a patch
that fixes the generated code in SID.
It is simply a repetitive removal of an extra 16 bit shift of the entire-insn
in the thumb-decode function.
Bob
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFBHRMZ8XjOGQDr37YRAjdBAJ988HHCB8DexTdNOuwHdE2bI7KChwCdEr01
CcZGinKCy2ESgzzAiXSw9hU=
=qc/p
-----END PGP SIGNATURE-----
? .deps
? .libs
? CGEN.sh
? Makefile
? cgen-asm.lo
? cgen-dis.lo
? cgen-opc.lo
? compCGEN.lo
? config.h
? config.log
? config.status
? dis-buf.lo
? dis-init.lo
? fp.lo
? libcgencpu.la
? libtool
? stamp-h
? tracedis.lo
? arm7t/.deps
? arm7t/.libs
? arm7t/Makefile
? arm7t/arm-decode.lo
? arm7t/arm-sem.lo
? arm7t/arm-semsw.lo
? arm7t/arm7f.lo
? arm7t/config.log
? arm7t/config.status
? arm7t/libarm7t.la
? arm7t/libtool
? arm7t/thumb-decode.lo
? arm7t/thumb-sem.lo
? arm7t/thumb-semsw.lo
? m32r/.deps
? m32r/.libs
? m32r/Makefile
? m32r/config.log
? m32r/config.status
? m32r/libm32r.la
? m32r/libtool
? m32r/m32r-asm.lo
? m32r/m32r-decode.lo
? m32r/m32r-desc.lo
? m32r/m32r-dis.lo
? m32r/m32r-ibld.lo
? m32r/m32r-opc.lo
? m32r/m32r-sem.lo
? m32r/m32rbf.lo
? xstormy16/.deps
? xstormy16/.libs
? xstormy16/Makefile
? xstormy16/config.log
? xstormy16/config.status
? xstormy16/libtool
? xstormy16/libxstormy16.la
? xstormy16/xstormy16-asm.lo
? xstormy16/xstormy16-decode.lo
? xstormy16/xstormy16-desc.lo
? xstormy16/xstormy16-dis.lo
? xstormy16/xstormy16-ibld.lo
? xstormy16/xstormy16-opc.lo
? xstormy16/xstormy16-sem.lo
? xstormy16/xstormy16.lo
Index: arm7t/thumb-decode.cxx
===================================================================
RCS file: /cvs/src/src/sid/component/cgen-cpu/arm7t/thumb-decode.cxx,v
retrieving revision 1.5
diff -u -r1.5 thumb-decode.cxx
--- arm7t/thumb-decode.cxx 5 Jul 2003 17:07:20 -0000 1.5
+++ arm7t/thumb-decode.cxx 13 Aug 2004 19:04:31 -0000
@@ -280,7 +280,7 @@
case 4 : /* fall through */
case 5 : /* fall through */
case 6 : /* fall through */
- case 7 : itype = THUMB_INSN_LSL; entire_insn = base_insn >> 16; thumb_extract_sfmt_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 7 : itype = THUMB_INSN_LSL; thumb_extract_sfmt_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 8 : /* fall through */
case 9 : /* fall through */
case 10 : /* fall through */
@@ -288,7 +288,7 @@
case 12 : /* fall through */
case 13 : /* fall through */
case 14 : /* fall through */
- case 15 : itype = THUMB_INSN_LSR; entire_insn = base_insn >> 16; thumb_extract_sfmt_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 15 : itype = THUMB_INSN_LSR; thumb_extract_sfmt_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 16 : /* fall through */
case 17 : /* fall through */
case 18 : /* fall through */
@@ -296,15 +296,15 @@
case 20 : /* fall through */
case 21 : /* fall through */
case 22 : /* fall through */
- case 23 : itype = THUMB_INSN_ASR; entire_insn = base_insn >> 16; thumb_extract_sfmt_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 23 : itype = THUMB_INSN_ASR; thumb_extract_sfmt_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 24 : /* fall through */
- case 25 : itype = THUMB_INSN_ADD; entire_insn = base_insn >> 16; thumb_extract_sfmt_add (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 25 : itype = THUMB_INSN_ADD; thumb_extract_sfmt_add (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 26 : /* fall through */
- case 27 : itype = THUMB_INSN_SUB; entire_insn = base_insn >> 16; thumb_extract_sfmt_add (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 27 : itype = THUMB_INSN_SUB; thumb_extract_sfmt_add (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 28 : /* fall through */
- case 29 : itype = THUMB_INSN_ADDI; entire_insn = base_insn >> 16; thumb_extract_sfmt_addi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 29 : itype = THUMB_INSN_ADDI; thumb_extract_sfmt_addi (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 30 : /* fall through */
- case 31 : itype = THUMB_INSN_SUBI; entire_insn = base_insn >> 16; thumb_extract_sfmt_addi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 31 : itype = THUMB_INSN_SUBI; thumb_extract_sfmt_addi (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 32 : /* fall through */
case 33 : /* fall through */
case 34 : /* fall through */
@@ -312,7 +312,7 @@
case 36 : /* fall through */
case 37 : /* fall through */
case 38 : /* fall through */
- case 39 : itype = THUMB_INSN_MOV; entire_insn = base_insn >> 16; thumb_extract_sfmt_mov (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 39 : itype = THUMB_INSN_MOV; thumb_extract_sfmt_mov (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 40 : /* fall through */
case 41 : /* fall through */
case 42 : /* fall through */
@@ -320,7 +320,7 @@
case 44 : /* fall through */
case 45 : /* fall through */
case 46 : /* fall through */
- case 47 : itype = THUMB_INSN_CMP; entire_insn = base_insn >> 16; thumb_extract_sfmt_cmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 47 : itype = THUMB_INSN_CMP; thumb_extract_sfmt_cmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 48 : /* fall through */
case 49 : /* fall through */
case 50 : /* fall through */
@@ -328,7 +328,7 @@
case 52 : /* fall through */
case 53 : /* fall through */
case 54 : /* fall through */
- case 55 : itype = THUMB_INSN_ADDI8; entire_insn = base_insn >> 16; thumb_extract_sfmt_addi8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 55 : itype = THUMB_INSN_ADDI8; thumb_extract_sfmt_addi8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 56 : /* fall through */
case 57 : /* fall through */
case 58 : /* fall through */
@@ -336,16 +336,16 @@
case 60 : /* fall through */
case 61 : /* fall through */
case 62 : /* fall through */
- case 63 : itype = THUMB_INSN_SUBI8; entire_insn = base_insn >> 16; thumb_extract_sfmt_addi8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 63 : itype = THUMB_INSN_SUBI8; thumb_extract_sfmt_addi8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 64 :
{
unsigned int val = (((insn >> 6) & (3 << 0)));
switch (val)
{
- case 0 : itype = THUMB_INSN_ALU_AND; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 1 : itype = THUMB_INSN_ALU_EOR; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 2 : itype = THUMB_INSN_ALU_LSL; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 3 : itype = THUMB_INSN_ALU_LSR; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 0 : itype = THUMB_INSN_ALU_AND; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_ALU_EOR; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 2 : itype = THUMB_INSN_ALU_LSL; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 3 : itype = THUMB_INSN_ALU_LSR; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -354,10 +354,10 @@
unsigned int val = (((insn >> 6) & (3 << 0)));
switch (val)
{
- case 0 : itype = THUMB_INSN_ALU_ASR; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 1 : itype = THUMB_INSN_ALU_ADC; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_adc (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 2 : itype = THUMB_INSN_ALU_SBC; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_adc (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 3 : itype = THUMB_INSN_ALU_ROR; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 0 : itype = THUMB_INSN_ALU_ASR; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_ALU_ADC; thumb_extract_sfmt_alu_adc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 2 : itype = THUMB_INSN_ALU_SBC; thumb_extract_sfmt_alu_adc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 3 : itype = THUMB_INSN_ALU_ROR; thumb_extract_sfmt_alu_lsl (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -366,10 +366,10 @@
unsigned int val = (((insn >> 6) & (3 << 0)));
switch (val)
{
- case 0 : itype = THUMB_INSN_ALU_TST; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_tst (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 1 : itype = THUMB_INSN_ALU_NEG; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_neg (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 2 : itype = THUMB_INSN_ALU_CMP; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_cmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 3 : itype = THUMB_INSN_ALU_CMN; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_cmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 0 : itype = THUMB_INSN_ALU_TST; thumb_extract_sfmt_alu_tst (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_ALU_NEG; thumb_extract_sfmt_alu_neg (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 2 : itype = THUMB_INSN_ALU_CMP; thumb_extract_sfmt_alu_cmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 3 : itype = THUMB_INSN_ALU_CMN; thumb_extract_sfmt_alu_cmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -378,10 +378,10 @@
unsigned int val = (((insn >> 6) & (3 << 0)));
switch (val)
{
- case 0 : itype = THUMB_INSN_ALU_ORR; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 1 : itype = THUMB_INSN_ALU_MUL; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 2 : itype = THUMB_INSN_ALU_BIC; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 3 : itype = THUMB_INSN_ALU_MVN; entire_insn = base_insn >> 16; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 0 : itype = THUMB_INSN_ALU_ORR; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_ALU_MUL; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 2 : itype = THUMB_INSN_ALU_BIC; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 3 : itype = THUMB_INSN_ALU_MVN; thumb_extract_sfmt_alu_and (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -390,9 +390,9 @@
unsigned int val = (((insn >> 6) & (3 << 0)));
switch (val)
{
- case 1 : itype = THUMB_INSN_ADD_RD_HS; entire_insn = base_insn >> 16; thumb_extract_sfmt_add_rd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 2 : itype = THUMB_INSN_ADD_HD_RS; entire_insn = base_insn >> 16; thumb_extract_sfmt_add_hd_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 3 : itype = THUMB_INSN_ADD_HD_HS; entire_insn = base_insn >> 16; thumb_extract_sfmt_add_hd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_ADD_RD_HS; thumb_extract_sfmt_add_rd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 2 : itype = THUMB_INSN_ADD_HD_RS; thumb_extract_sfmt_add_hd_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 3 : itype = THUMB_INSN_ADD_HD_HS; thumb_extract_sfmt_add_hd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -401,9 +401,9 @@
unsigned int val = (((insn >> 6) & (3 << 0)));
switch (val)
{
- case 1 : itype = THUMB_INSN_CMP_RD_HS; entire_insn = base_insn >> 16; thumb_extract_sfmt_cmp_rd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 2 : itype = THUMB_INSN_CMP_HD_RS; entire_insn = base_insn >> 16; thumb_extract_sfmt_cmp_hd_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 3 : itype = THUMB_INSN_CMP_HD_HS; entire_insn = base_insn >> 16; thumb_extract_sfmt_cmp_hd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_CMP_RD_HS; thumb_extract_sfmt_cmp_rd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 2 : itype = THUMB_INSN_CMP_HD_RS; thumb_extract_sfmt_cmp_hd_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 3 : itype = THUMB_INSN_CMP_HD_HS; thumb_extract_sfmt_cmp_hd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -412,9 +412,9 @@
unsigned int val = (((insn >> 6) & (3 << 0)));
switch (val)
{
- case 1 : itype = THUMB_INSN_MOV_RD_HS; entire_insn = base_insn >> 16; thumb_extract_sfmt_mov_rd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 2 : itype = THUMB_INSN_MOV_HD_RS; entire_insn = base_insn >> 16; thumb_extract_sfmt_mov_hd_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 3 : itype = THUMB_INSN_MOV_HD_HS; entire_insn = base_insn >> 16; thumb_extract_sfmt_mov_hd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_MOV_RD_HS; thumb_extract_sfmt_mov_rd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 2 : itype = THUMB_INSN_MOV_HD_RS; thumb_extract_sfmt_mov_hd_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 3 : itype = THUMB_INSN_MOV_HD_HS; thumb_extract_sfmt_mov_hd_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -423,8 +423,8 @@
unsigned int val = (((insn >> 6) & (1 << 0)));
switch (val)
{
- case 0 : itype = THUMB_INSN_BX_RS; entire_insn = base_insn >> 16; thumb_extract_sfmt_bx_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 1 : itype = THUMB_INSN_BX_HS; entire_insn = base_insn >> 16; thumb_extract_sfmt_bx_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 0 : itype = THUMB_INSN_BX_RS; thumb_extract_sfmt_bx_rs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_BX_HS; thumb_extract_sfmt_bx_hs (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
@@ -435,23 +435,23 @@
case 76 : /* fall through */
case 77 : /* fall through */
case 78 : /* fall through */
- case 79 : itype = THUMB_INSN_LDR_PC; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldr_pc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 79 : itype = THUMB_INSN_LDR_PC; thumb_extract_sfmt_ldr_pc (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 80 : /* fall through */
- case 81 : itype = THUMB_INSN_STR; entire_insn = base_insn >> 16; thumb_extract_sfmt_str (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 81 : itype = THUMB_INSN_STR; thumb_extract_sfmt_str (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 82 : /* fall through */
- case 83 : itype = THUMB_INSN_STRH; entire_insn = base_insn >> 16; thumb_extract_sfmt_strh (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 83 : itype = THUMB_INSN_STRH; thumb_extract_sfmt_strh (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 84 : /* fall through */
- case 85 : itype = THUMB_INSN_STRB; entire_insn = base_insn >> 16; thumb_extract_sfmt_strb (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 85 : itype = THUMB_INSN_STRB; thumb_extract_sfmt_strb (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 86 : /* fall through */
- case 87 : itype = THUMB_INSN_LDSB; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldrb (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 87 : itype = THUMB_INSN_LDSB; thumb_extract_sfmt_ldrb (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 88 : /* fall through */
- case 89 : itype = THUMB_INSN_LDR; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 89 : itype = THUMB_INSN_LDR; thumb_extract_sfmt_ldr (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 90 : /* fall through */
- case 91 : itype = THUMB_INSN_LDRH; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldrh (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 91 : itype = THUMB_INSN_LDRH; thumb_extract_sfmt_ldrh (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 92 : /* fall through */
- case 93 : itype = THUMB_INSN_LDRB; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldrb (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 93 : itype = THUMB_INSN_LDRB; thumb_extract_sfmt_ldrb (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 94 : /* fall through */
- case 95 : itype = THUMB_INSN_LDSH; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldrh (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 95 : itype = THUMB_INSN_LDSH; thumb_extract_sfmt_ldrh (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 96 : /* fall through */
case 97 : /* fall through */
case 98 : /* fall through */
@@ -459,7 +459,7 @@
case 100 : /* fall through */
case 101 : /* fall through */
case 102 : /* fall through */
- case 103 : itype = THUMB_INSN_STR_IMM; entire_insn = base_insn >> 16; thumb_extract_sfmt_str_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 103 : itype = THUMB_INSN_STR_IMM; thumb_extract_sfmt_str_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 104 : /* fall through */
case 105 : /* fall through */
case 106 : /* fall through */
@@ -467,7 +467,7 @@
case 108 : /* fall through */
case 109 : /* fall through */
case 110 : /* fall through */
- case 111 : itype = THUMB_INSN_LDR_IMM; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldr_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 111 : itype = THUMB_INSN_LDR_IMM; thumb_extract_sfmt_ldr_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 112 : /* fall through */
case 113 : /* fall through */
case 114 : /* fall through */
@@ -475,7 +475,7 @@
case 116 : /* fall through */
case 117 : /* fall through */
case 118 : /* fall through */
- case 119 : itype = THUMB_INSN_STRB_IMM; entire_insn = base_insn >> 16; thumb_extract_sfmt_strb_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 119 : itype = THUMB_INSN_STRB_IMM; thumb_extract_sfmt_strb_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 120 : /* fall through */
case 121 : /* fall through */
case 122 : /* fall through */
@@ -483,7 +483,7 @@
case 124 : /* fall through */
case 125 : /* fall through */
case 126 : /* fall through */
- case 127 : itype = THUMB_INSN_LDRB_IMM; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldrb_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 127 : itype = THUMB_INSN_LDRB_IMM; thumb_extract_sfmt_ldrb_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 128 : /* fall through */
case 129 : /* fall through */
case 130 : /* fall through */
@@ -491,7 +491,7 @@
case 132 : /* fall through */
case 133 : /* fall through */
case 134 : /* fall through */
- case 135 : itype = THUMB_INSN_STRH_IMM; entire_insn = base_insn >> 16; thumb_extract_sfmt_strh_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 135 : itype = THUMB_INSN_STRH_IMM; thumb_extract_sfmt_strh_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 136 : /* fall through */
case 137 : /* fall through */
case 138 : /* fall through */
@@ -499,7 +499,7 @@
case 140 : /* fall through */
case 141 : /* fall through */
case 142 : /* fall through */
- case 143 : itype = THUMB_INSN_LDRH_IMM; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldrh_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 143 : itype = THUMB_INSN_LDRH_IMM; thumb_extract_sfmt_ldrh_imm (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 144 : /* fall through */
case 145 : /* fall through */
case 146 : /* fall through */
@@ -507,7 +507,7 @@
case 148 : /* fall through */
case 149 : /* fall through */
case 150 : /* fall through */
- case 151 : itype = THUMB_INSN_STR_SPREL; entire_insn = base_insn >> 16; thumb_extract_sfmt_str_sprel (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 151 : itype = THUMB_INSN_STR_SPREL; thumb_extract_sfmt_str_sprel (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 152 : /* fall through */
case 153 : /* fall through */
case 154 : /* fall through */
@@ -515,7 +515,7 @@
case 156 : /* fall through */
case 157 : /* fall through */
case 158 : /* fall through */
- case 159 : itype = THUMB_INSN_LDR_SPREL; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldr_sprel (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 159 : itype = THUMB_INSN_LDR_SPREL; thumb_extract_sfmt_ldr_sprel (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 160 : /* fall through */
case 161 : /* fall through */
case 162 : /* fall through */
@@ -523,7 +523,7 @@
case 164 : /* fall through */
case 165 : /* fall through */
case 166 : /* fall through */
- case 167 : itype = THUMB_INSN_LDA_PC; entire_insn = base_insn >> 16; thumb_extract_sfmt_lda_pc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 167 : itype = THUMB_INSN_LDA_PC; thumb_extract_sfmt_lda_pc (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 168 : /* fall through */
case 169 : /* fall through */
case 170 : /* fall through */
@@ -531,21 +531,21 @@
case 172 : /* fall through */
case 173 : /* fall through */
case 174 : /* fall through */
- case 175 : itype = THUMB_INSN_LDA_SP; entire_insn = base_insn >> 16; thumb_extract_sfmt_lda_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 175 : itype = THUMB_INSN_LDA_SP; thumb_extract_sfmt_lda_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 176 :
{
unsigned int val = (((insn >> 7) & (1 << 0)));
switch (val)
{
- case 0 : itype = THUMB_INSN_ADD_SP; entire_insn = base_insn >> 16; thumb_extract_sfmt_add_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 1 : itype = THUMB_INSN_SUB_SP; entire_insn = base_insn >> 16; thumb_extract_sfmt_add_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 0 : itype = THUMB_INSN_ADD_SP; thumb_extract_sfmt_add_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 1 : itype = THUMB_INSN_SUB_SP; thumb_extract_sfmt_add_sp (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}
- case 180 : itype = THUMB_INSN_PUSH; entire_insn = base_insn >> 16; thumb_extract_sfmt_push (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 181 : itype = THUMB_INSN_PUSH_LR; entire_insn = base_insn >> 16; thumb_extract_sfmt_push_lr (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 188 : itype = THUMB_INSN_POP; entire_insn = base_insn >> 16; thumb_extract_sfmt_pop (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 189 : itype = THUMB_INSN_POP_PC; entire_insn = base_insn >> 16; thumb_extract_sfmt_pop_pc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 180 : itype = THUMB_INSN_PUSH; thumb_extract_sfmt_push (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 181 : itype = THUMB_INSN_PUSH_LR; thumb_extract_sfmt_push_lr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 188 : itype = THUMB_INSN_POP; thumb_extract_sfmt_pop (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 189 : itype = THUMB_INSN_POP_PC; thumb_extract_sfmt_pop_pc (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 192 : /* fall through */
case 193 : /* fall through */
case 194 : /* fall through */
@@ -553,7 +553,7 @@
case 196 : /* fall through */
case 197 : /* fall through */
case 198 : /* fall through */
- case 199 : itype = THUMB_INSN_STMIA; entire_insn = base_insn >> 16; thumb_extract_sfmt_stmia (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 199 : itype = THUMB_INSN_STMIA; thumb_extract_sfmt_stmia (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 200 : /* fall through */
case 201 : /* fall through */
case 202 : /* fall through */
@@ -561,22 +561,22 @@
case 204 : /* fall through */
case 205 : /* fall through */
case 206 : /* fall through */
- case 207 : itype = THUMB_INSN_LDMIA; entire_insn = base_insn >> 16; thumb_extract_sfmt_ldmia (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 208 : itype = THUMB_INSN_BEQ; entire_insn = base_insn >> 16; thumb_extract_sfmt_beq (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 209 : itype = THUMB_INSN_BNE; entire_insn = base_insn >> 16; thumb_extract_sfmt_beq (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 210 : itype = THUMB_INSN_BCS; entire_insn = base_insn >> 16; thumb_extract_sfmt_bcs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 211 : itype = THUMB_INSN_BCC; entire_insn = base_insn >> 16; thumb_extract_sfmt_bcs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 212 : itype = THUMB_INSN_BMI; entire_insn = base_insn >> 16; thumb_extract_sfmt_bmi (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 213 : itype = THUMB_INSN_BPL; entire_insn = base_insn >> 16; thumb_extract_sfmt_bmi (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 214 : itype = THUMB_INSN_BVS; entire_insn = base_insn >> 16; thumb_extract_sfmt_bvs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 215 : itype = THUMB_INSN_BVC; entire_insn = base_insn >> 16; thumb_extract_sfmt_bvs (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 216 : itype = THUMB_INSN_BHI; entire_insn = base_insn >> 16; thumb_extract_sfmt_bhi (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 217 : itype = THUMB_INSN_BLS; entire_insn = base_insn >> 16; thumb_extract_sfmt_bhi (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 218 : itype = THUMB_INSN_BGE; entire_insn = base_insn >> 16; thumb_extract_sfmt_bge (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 219 : itype = THUMB_INSN_BLT; entire_insn = base_insn >> 16; thumb_extract_sfmt_bge (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 220 : itype = THUMB_INSN_BGT; entire_insn = base_insn >> 16; thumb_extract_sfmt_bgt (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 221 : itype = THUMB_INSN_BLE; entire_insn = base_insn >> 16; thumb_extract_sfmt_bgt (this, current_cpu, pc, base_insn, entire_insn); goto done;
- case 223 : itype = THUMB_INSN_SWI; entire_insn = base_insn >> 16; thumb_extract_sfmt_swi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 207 : itype = THUMB_INSN_LDMIA; thumb_extract_sfmt_ldmia (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 208 : itype = THUMB_INSN_BEQ; thumb_extract_sfmt_beq (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 209 : itype = THUMB_INSN_BNE; thumb_extract_sfmt_beq (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 210 : itype = THUMB_INSN_BCS; thumb_extract_sfmt_bcs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 211 : itype = THUMB_INSN_BCC; thumb_extract_sfmt_bcs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 212 : itype = THUMB_INSN_BMI; thumb_extract_sfmt_bmi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 213 : itype = THUMB_INSN_BPL; thumb_extract_sfmt_bmi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 214 : itype = THUMB_INSN_BVS; thumb_extract_sfmt_bvs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 215 : itype = THUMB_INSN_BVC; thumb_extract_sfmt_bvs (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 216 : itype = THUMB_INSN_BHI; thumb_extract_sfmt_bhi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 217 : itype = THUMB_INSN_BLS; thumb_extract_sfmt_bhi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 218 : itype = THUMB_INSN_BGE; thumb_extract_sfmt_bge (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 219 : itype = THUMB_INSN_BLT; thumb_extract_sfmt_bge (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 220 : itype = THUMB_INSN_BGT; thumb_extract_sfmt_bgt (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 221 : itype = THUMB_INSN_BLE; thumb_extract_sfmt_bgt (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 223 : itype = THUMB_INSN_SWI; thumb_extract_sfmt_swi (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 224 : /* fall through */
case 225 : /* fall through */
case 226 : /* fall through */
@@ -584,7 +584,7 @@
case 228 : /* fall through */
case 229 : /* fall through */
case 230 : /* fall through */
- case 231 : itype = THUMB_INSN_B; entire_insn = base_insn >> 16; thumb_extract_sfmt_b (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 231 : itype = THUMB_INSN_B; thumb_extract_sfmt_b (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 240 : /* fall through */
case 241 : /* fall through */
case 242 : /* fall through */
@@ -592,7 +592,7 @@
case 244 : /* fall through */
case 245 : /* fall through */
case 246 : /* fall through */
- case 247 : itype = THUMB_INSN_BL_HI; entire_insn = base_insn >> 16; thumb_extract_sfmt_bl_hi (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 247 : itype = THUMB_INSN_BL_HI; thumb_extract_sfmt_bl_hi (this, current_cpu, pc, base_insn, entire_insn); goto done;
case 248 : /* fall through */
case 249 : /* fall through */
case 250 : /* fall through */
@@ -600,7 +600,7 @@
case 252 : /* fall through */
case 253 : /* fall through */
case 254 : /* fall through */
- case 255 : itype = THUMB_INSN_BL_LO; entire_insn = base_insn >> 16; thumb_extract_sfmt_bl_lo (this, current_cpu, pc, base_insn, entire_insn); goto done;
+ case 255 : itype = THUMB_INSN_BL_LO; thumb_extract_sfmt_bl_lo (this, current_cpu, pc, base_insn, entire_insn); goto done;
default : itype = THUMB_INSN_X_INVALID; thumb_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
}
}