filename | src/sh4/sh4.def |
changeset | 359:c588dce7ebde |
author | nkeynes |
date | Mon Jun 08 04:12:21 2009 +0000 (14 years ago) |
permissions | -rw-r--r-- |
last change | General cleanup of the GD-rom subsystem - merge gdrom_image_t and gdrom_disc_t - Abstract MMC devices using a lower-level scsi transport - OSX: only look at the whole disc device, and ignore partitions |
file | annotate | diff | log | raw |
nkeynes@359 | 1 | ## |
nkeynes@359 | 2 | ## Instruction file for the SH4 - from the SH4 manual. |
nkeynes@359 | 3 | ## line ::= bitpattern WHITESPACE result NEWLINE |
nkeynes@359 | 4 | ## bitpattern ::= { '0' | '1' | '(' operand ')' } |
nkeynes@359 | 5 | ## operand ::= IDENTIFIER ':' NUMBER signspec |
nkeynes@359 | 6 | ## signspec ::= 'u' | 's' | |
nkeynes@359 | 7 | ## result ::= { IDENTIFIER | NON-IDENT-CHAR } |
nkeynes@359 | 8 | |
nkeynes@359 | 9 | registers { |
nkeynes@359 | 10 | uint32 Rm, Rn = r0..r15 |
nkeynes@359 | 11 | uint32 Rm_BANK, Rn_BANK = r8_bank..r15_bank |
nkeynes@359 | 12 | float Frm, Frn = fr0..fr15 |
nkeynes@359 | 13 | float XFm, XFn = xf0..xf15 |
nkeynes@359 | 14 | double Drm, Drn = dr0..dr8 overlaps fr0..fr15 swapped |
nkeynes@359 | 15 | double XDm, XDn = xd0..xd8 overlaps xf0..xf15 swapped |
nkeynes@359 | 16 | float[4] FVm, FVn = fv0..fv3 overlaps fr0..fr15 |
nkeynes@359 | 17 | float[16] XMTRX = xmtrx overlaps xf0..xf15 |
nkeynes@359 | 18 | |
nkeynes@359 | 19 | ## Special registers |
nkeynes@359 | 20 | uint32 GBR, SR, VBR, SSR, SGR SPC, DBR |
nkeynes@359 | 21 | uint32 FPSCR, FPUL, MACH, MACL, PR, PC |
nkeynes@359 | 22 | |
nkeynes@359 | 23 | } |
nkeynes@359 | 24 | |
nkeynes@359 | 25 | 0011(Rn:4)(Rm:4)1100 ADD Rm, Rn |
nkeynes@359 | 26 | 0111(Rn:4)(imm:8s) ADD #imm, Rn |
nkeynes@359 | 27 | 0011(Rn:4)(Rm:4)1110 ADDC Rm, Rn |
nkeynes@359 | 28 | 0011(Rn:4)(Rm:4)1111 ADDV Rm, Rn |
nkeynes@359 | 29 | 0010(Rn:4)(Rm:4)1001 AND Rm, Rn |
nkeynes@359 | 30 | 11001001(imm:8u) AND #imm, R0 |
nkeynes@359 | 31 | 11001101(imm:8u) AND.B #imm, @(R0, GBR) |
nkeynes@359 | 32 | 10001011(disp:8s<<1) BF disp |
nkeynes@359 | 33 | 10001111(disp:8s<<1) BF/S disp |
nkeynes@359 | 34 | 1010(disp:12s<<1) BRA disp |
nkeynes@359 | 35 | 0000(Rn:4)00100011 BRAF Rn |
nkeynes@359 | 36 | 1011(disp:12s<<1) BSR disp |
nkeynes@359 | 37 | 0000(Rn:4)00000011 BSRF Rn |
nkeynes@359 | 38 | 10001001(disp:8s<<1) BT disp |
nkeynes@359 | 39 | 10001101(disp:8s<<1) BT/S disp |
nkeynes@359 | 40 | 0000000000101000 CLRMAC |
nkeynes@359 | 41 | 0000000001001000 CLRS |
nkeynes@359 | 42 | 0000000000001000 CLRT |
nkeynes@359 | 43 | 0011(Rn:4)(Rm:4)0000 CMP/EQ Rm, Rn |
nkeynes@359 | 44 | 10001000(imm:8s) CMP/EQ #imm, R0 |
nkeynes@359 | 45 | 0011(Rn:4)(Rm:4)0011 CMP/GE Rm, Rn |
nkeynes@359 | 46 | 0011(Rn:4)(Rm:4)0111 CMP/GT Rm, Rn |
nkeynes@359 | 47 | 0011(Rn:4)(Rm:4)0110 CMP/HI Rm, Rn |
nkeynes@359 | 48 | 0011(Rn:4)(Rm:4)0010 CMP/HS Rm, Rn |
nkeynes@359 | 49 | 0100(Rn:4)00010101 CMP/PL Rn |
nkeynes@359 | 50 | 0100(Rn:4)00010001 CMP/PZ Rn |
nkeynes@359 | 51 | 0010(Rn:4)(Rm:4)1100 CMP/STR Rm, Rn |
nkeynes@359 | 52 | 0010(Rn:4)(Rm:4)0111 DIV0S Rm, Rn |
nkeynes@359 | 53 | 0000000000011001 DIV0U |
nkeynes@359 | 54 | 0011(Rn:4)(Rm:4)0100 DIV1 Rm, Rn |
nkeynes@359 | 55 | 0011(Rn:4)(Rm:4)1101 DMULS.L Rm, Rn |
nkeynes@359 | 56 | 0011(Rn:4)(Rm:4)0101 DMULU.L Rm, Rn |
nkeynes@359 | 57 | 0100(Rn:4)00010000 DT Rn |
nkeynes@359 | 58 | 0110(Rn:4)(Rm:4)1110 EXTS.B Rm, Rn |
nkeynes@359 | 59 | 0110(Rn:4)(Rm:4)1111 EXTS.W Rm, Rn |
nkeynes@359 | 60 | 0110(Rn:4)(Rm:4)1100 EXTU.B Rm, Rn |
nkeynes@359 | 61 | 0110(Rn:4)(Rm:4)1101 EXTU.W Rm, Rn |
nkeynes@359 | 62 | 1111(FRn:4)01011101 FABS FRn |
nkeynes@359 | 63 | 1111(FRn:4)(FRm:4)0000 FADD FRm, FRn |
nkeynes@359 | 64 | 1111(FRn:4)(FRm:4)0100 FCMP/EQ FRm, FRn |
nkeynes@359 | 65 | 1111(FRn:4)(FRm:4)0101 FCMP/GT FRm, FRn |
nkeynes@359 | 66 | 1111(FRm:4)10111101 FCNVDS FRm, FPUL |
nkeynes@359 | 67 | 1111(FRn:4)10101101 FCNVSD FPUL, FRn |
nkeynes@359 | 68 | 1111(FRn:4)(FRm:4)0011 FDIV FRm, FRn |
nkeynes@359 | 69 | 1111(FVn:2)(FVm:2)11101101 FIPR FVm, FVn |
nkeynes@359 | 70 | 1111(FRm:4)00011101 FLDS FRm, FPUL |
nkeynes@359 | 71 | 1111(FRn:4)10001101 FLDI0 FRn |
nkeynes@359 | 72 | 1111(FRn:4)10011101 FLDI1 FRn |
nkeynes@359 | 73 | 1111(FRn:4)00101101 FLOAT FPUL, FRn |
nkeynes@359 | 74 | 1111(FRn:4)(FRm:4)1110 FMAC FR0, FRm, FRn |
nkeynes@359 | 75 | 1111(FRn:4)(FRm:4)1100 FMOV FRm, FRn |
nkeynes@359 | 76 | 1111(Rn:4)(FRm:4)1010 FMOV FRm, @Rn |
nkeynes@359 | 77 | 1111(Rn:4)(FRm:4)1011 FMOV FRm, @-Rn |
nkeynes@359 | 78 | 1111(Rn:4)(FRm:4)0111 FMOV FRm, @(R0, Rn) |
nkeynes@359 | 79 | 1111(FRn:4)(Rm:4)1000 FMOV @Rm, FRn |
nkeynes@359 | 80 | 1111(FRn:4)(Rm:4)1001 FMOV @Rm+, FRn |
nkeynes@359 | 81 | 1111(FRn:4)(Rm:4)0110 FMOV @(R0, Rm), FRn |
nkeynes@359 | 82 | 1111(FRn:4)(FRm:4)0010 FMUL FRm, FRn |
nkeynes@359 | 83 | 1111(FRn:4)01001101 FNEG FRn |
nkeynes@359 | 84 | 1111101111111101 FRCHG |
nkeynes@359 | 85 | 1111(FRn:3<<1)011111101 FSCA FPUL, FRn |
nkeynes@359 | 86 | 1111001111111101 FSCHG |
nkeynes@359 | 87 | 1111(FRn:4)01101101 FSQRT FRn |
nkeynes@359 | 88 | 1111(FRn:4)01111101 FSRRA FRn |
nkeynes@359 | 89 | 1111(FRn:4)00001101 FSTS FPUL, FRn |
nkeynes@359 | 90 | 1111(FRn:4)(FRm:4)0001 FSUB FRm, FRn |
nkeynes@359 | 91 | 1111(FRm:4)00111101 FTRC FRm, FPUL |
nkeynes@359 | 92 | 1111(FVn:2)0111111101 FTRV XMTRX, FVn |
nkeynes@359 | 93 | 0100(Rn:4)00101011 JMP @Rn |
nkeynes@359 | 94 | 0100(Rn:4)00001011 JSR @Rn |
nkeynes@359 | 95 | 0100(Rm:4)00011110 LDC Rm, GBR |
nkeynes@359 | 96 | 0100(Rm:4)00001110 LDC Rm, SR |
nkeynes@359 | 97 | 0100(Rm:4)00101110 LDC Rm, VBR |
nkeynes@359 | 98 | 0100(Rm:4)00111110 LDC Rm, SSR |
nkeynes@359 | 99 | 0100(Rm:4)00111010 LDC Rm, SGR |
nkeynes@359 | 100 | 0100(Rm:4)01001110 LDC Rm, SPC |
nkeynes@359 | 101 | 0100(Rm:4)11111010 LDC Rm, DBR |
nkeynes@359 | 102 | 0100(Rm:4)1(Rn_BANK:3)1110 LDC Rm, Rn_BANK |
nkeynes@359 | 103 | 0100(Rm:4)00010111 LDC.L @Rm+, GBR |
nkeynes@359 | 104 | 0100(Rm:4)00000111 LDC.L @Rm+, SR |
nkeynes@359 | 105 | 0100(Rm:4)00100111 LDC.L @Rm+, VBR |
nkeynes@359 | 106 | 0100(Rm:4)00110111 LDC.L @Rm+, SSR |
nkeynes@359 | 107 | 0100(Rm:4)00110110 LDC.L @Rm+, SGR |
nkeynes@359 | 108 | 0100(Rm:4)01000111 LDC.L @Rm+, SPC |
nkeynes@359 | 109 | 0100(Rm:4)11110110 LDC.L @Rm+, DBR |
nkeynes@359 | 110 | 0100(Rm:4)1(Rn_BANK:3)0111 LDC.L @Rm+, Rn_BANK |
nkeynes@359 | 111 | 0100(Rm:4)01101010 LDS Rm, FPSCR |
nkeynes@359 | 112 | 0100(Rm:4)01100110 LDS.L @Rm+, FPSCR |
nkeynes@359 | 113 | 0100(Rm:4)01011010 LDS Rm, FPUL |
nkeynes@359 | 114 | 0100(Rm:4)01010110 LDS.L @Rm+, FPUL |
nkeynes@359 | 115 | 0100(Rm:4)00001010 LDS Rm, MACH |
nkeynes@359 | 116 | 0100(Rm:4)00000110 LDS.L @Rm+, MACH |
nkeynes@359 | 117 | 0100(Rm:4)00011010 LDS Rm, MACL |
nkeynes@359 | 118 | 0100(Rm:4)00010110 LDS.L @Rm+, MACL |
nkeynes@359 | 119 | 0100(Rm:4)00101010 LDS Rm, PR |
nkeynes@359 | 120 | 0100(Rm:4)00100110 LDS.L @Rm+, PR |
nkeynes@359 | 121 | 0000000000111000 LDTLB |
nkeynes@359 | 122 | 0000(Rn:4)(Rm:4)1111 MAC.L @Rm+, @Rn+ |
nkeynes@359 | 123 | 0100(Rn:4)(Rm:4)1111 MAC.W @Rm+, @Rn+ |
nkeynes@359 | 124 | 0110(Rn:4)(Rm:4)0011 MOV Rm, Rn |
nkeynes@359 | 125 | 1110(Rn:4)(imm:8s) MOV #imm, Rn |
nkeynes@359 | 126 | 0010(Rn:4)(Rm:4)0000 MOV.B Rm, @Rn |
nkeynes@359 | 127 | 0010(Rn:4)(Rm:4)0100 MOV.B Rm, @-Rn |
nkeynes@359 | 128 | 0000(Rn:4)(Rm:4)0100 MOV.B Rm, @(R0, Rn) |
nkeynes@359 | 129 | 11000000(disp:8) MOV.B R0, @(disp, GBR) |
nkeynes@359 | 130 | 10000000(Rn:4)(disp:4) MOV.B R0, @(disp, Rn) |
nkeynes@359 | 131 | 0110(Rn:4)(Rm:4)0000 MOV.B @Rm, Rn |
nkeynes@359 | 132 | 0110(Rn:4)(Rm:4)0100 MOV.B @Rm+, Rn |
nkeynes@359 | 133 | 0000(Rn:4)(Rm:4)1100 MOV.B @(R0, Rm), Rn |
nkeynes@359 | 134 | 11000100(disp:8) MOV.B @(disp, GBR), R0 |
nkeynes@359 | 135 | 10000100(Rm:4)(disp:4) MOV.B @(disp, Rm), R0 |
nkeynes@359 | 136 | 0010(Rn:4)(Rm:4)0010 MOV.L Rm, @Rn |
nkeynes@359 | 137 | 0010(Rn:4)(Rm:4)0110 MOV.L Rm, @-Rn |
nkeynes@359 | 138 | 0000(Rn:4)(Rm:4)0110 MOV.L Rm, @(R0, Rn) |
nkeynes@359 | 139 | 11000010(disp:8<<2) MOV.L R0, @(disp, GBR) |
nkeynes@359 | 140 | 0001(Rn:4)(Rm:4)(disp:4<<2) MOV.L Rm, @(disp, Rn) |
nkeynes@359 | 141 | 0110(Rn:4)(Rm:4)0010 MOV.L @Rm, Rn |
nkeynes@359 | 142 | 0110(Rn:4)(Rm:4)0110 MOV.L @Rm+, Rn |
nkeynes@359 | 143 | 0000(Rn:4)(Rm:4)1110 MOV.L @(R0, Rm), Rn |
nkeynes@359 | 144 | 11000110(disp:8<<2) MOV.L @(disp, GBR), R0 |
nkeynes@359 | 145 | 1101(Rn:4)(disp:8<<2) MOV.L @(disp, PC), Rn |
nkeynes@359 | 146 | 0101(Rn:4)(Rm:4)(disp:4<<2) MOV.L @(disp, Rm), Rn |
nkeynes@359 | 147 | 0010(Rn:4)(Rm:4)0001 MOV.W Rm, @Rn |
nkeynes@359 | 148 | 0010(Rn:4)(Rm:4)0101 MOV.W Rm, @-Rn |
nkeynes@359 | 149 | 0000(Rn:4)(Rm:4)0101 MOV.W Rm, @(R0, Rn) |
nkeynes@359 | 150 | 11000001(disp:8<<1) MOV.W R0, @(disp, GBR) |
nkeynes@359 | 151 | 10000001(Rn:4)(disp:4<<1) MOV.W R0, @(disp, Rn) |
nkeynes@359 | 152 | 0110(Rn:4)(Rm:4)0001 MOV.W @Rm, Rn |
nkeynes@359 | 153 | 0110(Rn:4)(Rm:4)0101 MOV.W @Rm+, Rn |
nkeynes@359 | 154 | 0000(Rn:4)(Rm:4)1101 MOV.W @(R0, Rm), Rn |
nkeynes@359 | 155 | 11000101(disp:8<<1) MOV.W @(disp, GBR), R0 |
nkeynes@359 | 156 | 1001(Rn:4)(disp:8<<1) MOV.W @(disp, PC), Rn |
nkeynes@359 | 157 | 10000101(Rm:4)(disp:4<<1) MOV.W @(disp, Rm), R0 |
nkeynes@359 | 158 | 11000111(disp:8<<2) MOVA @(disp, PC), R0 |
nkeynes@359 | 159 | 0000(Rn:4)11000011 MOVCA.L R0, @Rn |
nkeynes@359 | 160 | 0000(Rn:4)00101001 MOVT Rn |
nkeynes@359 | 161 | 0000(Rn:4)(Rm:4)0111 MUL.L Rm, Rn |
nkeynes@359 | 162 | 0010(Rn:4)(Rm:4)1111 MULS.W Rm, Rn |
nkeynes@359 | 163 | 0010(Rn:4)(Rm:4)1110 MULU.W Rm, Rn |
nkeynes@359 | 164 | 0110(Rn:4)(Rm:4)1011 NEG Rm, Rn |
nkeynes@359 | 165 | 0110(Rn:4)(Rm:4)1010 NEGC Rm, Rn |
nkeynes@359 | 166 | 0000000000001001 NOP |
nkeynes@359 | 167 | 0110(Rn:4)(Rm:4)0111 NOT Rm, Rn |
nkeynes@359 | 168 | 0000(Rn:4)10010011 OCBI @Rn |
nkeynes@359 | 169 | 0000(Rn:4)10100011 OCBP @Rn |
nkeynes@359 | 170 | 0000(Rn:4)10110011 OCBWB @Rn |
nkeynes@359 | 171 | 0010(Rn:4)(Rm:4)1011 OR Rm, Rn |
nkeynes@359 | 172 | 11001011(imm:8) OR #imm, R0 |
nkeynes@359 | 173 | 11001111(imm:8) OR.B #imm, @(R0, GBR) |
nkeynes@359 | 174 | 0000(Rn:4)10000011 PREF @Rn |
nkeynes@359 | 175 | 0100(Rn:4)00100100 ROTCL Rn |
nkeynes@359 | 176 | 0100(Rn:4)00100101 ROTCR Rn |
nkeynes@359 | 177 | 0100(Rn:4)00000100 ROTL Rn |
nkeynes@359 | 178 | 0100(Rn:4)00000101 ROTR Rn |
nkeynes@359 | 179 | 0000000000101011 RTE |
nkeynes@359 | 180 | 0000000000001011 RTS |
nkeynes@359 | 181 | 0000000001011000 SETS |
nkeynes@359 | 182 | 0000000000011000 SETT |
nkeynes@359 | 183 | 0100(Rn:4)(Rm:4)1100 SHAD Rm, Rn |
nkeynes@359 | 184 | 0100(Rn:4)00100000 SHAL Rn |
nkeynes@359 | 185 | 0100(Rn:4)00100001 SHAR Rn |
nkeynes@359 | 186 | 0100(Rn:4)(Rm:4)1101 SHLD Rm, Rn |
nkeynes@359 | 187 | 0100(Rn:4)00000000 SHLL Rn |
nkeynes@359 | 188 | 0100(Rn:4)00001000 SHLL2 Rn |
nkeynes@359 | 189 | 0100(Rn:4)00011000 SHLL8 Rn |
nkeynes@359 | 190 | 0100(Rn:4)00101000 SHLL16 Rn |
nkeynes@359 | 191 | 0100(Rn:4)00000001 SHLR Rn |
nkeynes@359 | 192 | 0100(Rn:4)00001001 SHLR2 Rn |
nkeynes@359 | 193 | 0100(Rn:4)00011001 SHLR8 Rn |
nkeynes@359 | 194 | 0100(Rn:4)00101001 SHLR16 Rn |
nkeynes@359 | 195 | 0000000000011011 SLEEP |
nkeynes@359 | 196 | 0000(Rn:4)00000010 STC SR, Rn |
nkeynes@359 | 197 | 0000(Rn:4)00010010 STC GBR, Rn |
nkeynes@359 | 198 | 0000(Rn:4)00100010 STC VBR, Rn |
nkeynes@359 | 199 | 0000(Rn:4)00110010 STC SSR, Rn |
nkeynes@359 | 200 | 0000(Rn:4)01000010 STC SPC, Rn |
nkeynes@359 | 201 | 0000(Rn:4)00111010 STC SGR, Rn |
nkeynes@359 | 202 | 0000(Rn:4)11111010 STC DBR, Rn |
nkeynes@359 | 203 | 0000(Rn:4)1(Rm_BANK:3)0010 STC Rm_BANK, Rn |
nkeynes@359 | 204 | 0100(Rn:4)00000011 STC.L SR, @-Rn |
nkeynes@359 | 205 | 0100(Rn:4)00100011 STC.L VBR, @-Rn |
nkeynes@359 | 206 | 0100(Rn:4)00110011 STC.L SSR, @-Rn |
nkeynes@359 | 207 | 0100(Rn:4)01000011 STC.L SPC, @-Rn |
nkeynes@359 | 208 | 0100(Rn:4)00110010 STC.L SGR, @-Rn |
nkeynes@359 | 209 | 0100(Rn:4)11110010 STC.L DBR, @-Rn |
nkeynes@359 | 210 | 0100(Rn:4)1(Rm_BANK:3)0011 STC.L Rm_BANK, @-Rn |
nkeynes@359 | 211 | 0100(Rn:4)00010011 STC.L GBR, @-Rn |
nkeynes@359 | 212 | 0000(Rn:4)01101010 STS FPSCR, Rn |
nkeynes@359 | 213 | 0100(Rn:4)01100010 STS.L FPSCR, @-Rn |
nkeynes@359 | 214 | 0000(Rn:4)01011010 STS FPUL, Rn |
nkeynes@359 | 215 | 0100(Rn:4)01010010 STS.L FPUL, @-Rn |
nkeynes@359 | 216 | 0000(Rn:4)00001010 STS MACH, Rn |
nkeynes@359 | 217 | 0100(Rn:4)00000010 STS.L MACH, @-Rn |
nkeynes@359 | 218 | 0000(Rn:4)00011010 STS MACL, Rn |
nkeynes@359 | 219 | 0100(Rn:4)00010010 STS.L MACL, @-Rn |
nkeynes@359 | 220 | 0000(Rn:4)00101010 STS PR, Rn |
nkeynes@359 | 221 | 0100(Rn:4)00100010 STS.L PR, @-Rn |
nkeynes@359 | 222 | 0011(Rn:4)(Rm:4)1000 SUB Rm, Rn |
nkeynes@359 | 223 | 0011(Rn:4)(Rm:4)1010 SUBC Rm, Rn |
nkeynes@359 | 224 | 0011(Rn:4)(Rm:4)1011 SUBV Rm, Rn |
nkeynes@359 | 225 | 0110(Rn:4)(Rm:4)1000 SWAP.B Rm, Rn |
nkeynes@359 | 226 | 0110(Rn:4)(Rm:4)1001 SWAP.W Rm, Rn |
nkeynes@359 | 227 | 0100(Rn:4)00011011 TAS.B @Rn |
nkeynes@359 | 228 | 11000011(imm:8) TRAPA #imm |
nkeynes@359 | 229 | 0010(Rn:4)(Rm:4)1000 TST Rm, Rn |
nkeynes@359 | 230 | 11001000(imm:8) TST #imm, R0 |
nkeynes@359 | 231 | 11001100(imm:8) TST.B #imm, @(R0, GBR) |
nkeynes@359 | 232 | 0010(Rn:4)(Rm:4)1010 XOR Rm, Rn |
nkeynes@359 | 233 | 11001010(imm:8) XOR #imm, R0 |
nkeynes@359 | 234 | 11001110(imm:8) XOR.B #imm, @(R0, GBR) |
nkeynes@359 | 235 | 0010(Rn:4)(Rm:4)1101 XTRCT Rm, Rn |
nkeynes@359 | 236 | 1111111111111101 UNDEF |
.