/***************************************************************************** * * This program is free software ; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id: dyncode_arm.h 271 2005-08-09 08:31:35Z picard $ * * The Core Pocket Media Player * Copyright (c) 2004-2005 Gabor Kovacs * ****************************************************************************/ #ifndef __DYNCODE_ARM_H #define __DYNCODE_ARM_H #ifdef ARM #define DYNCODE #define STACKFRAME 10 #define R0 0 #define R1 1 #define R2 2 #define R3 3 #define R4 4 #define R5 5 #define R6 6 #define R7 7 #define R8 8 #define R9 9 #define R10 10 #define R11 11 #define R12 12 #define SP 13 #define R14 14 #define PC 15 #define LR 14 #define EQ 0 #define NE 1 #define CS 2 #define CC 3 #define MI 4 #define PL 5 #define VS 6 #define VC 7 #define HI 8 #define LS 9 #define GE 10 #define LT 11 #define GT 12 #define LE 13 #define AL 14 #define LSL 0 #define LSR 1 #define ASR 2 #define ROR 3 #define AND 0 #define EOR 1 #define SUB 2 #define RSB 3 #define ADD 4 #define ADC 5 #define SBC 6 #define RSC 7 #define TST 8 #define TEQ 9 #define CMP 10 #define CMN 11 #define ORR 12 #define MOV 13 #define BIC 14 #define MVN 15 #define MUL 16 #define MLA 17 #define QADD 18 #define QSUB 19 #define QDADD 20 #define QDSUB 21 #define LDR 22 #define STR 23 #define LDR_POST 24 #define STR_POST 25 #define LDR_PRE 26 #define STR_PRE 27 #define LDR_POSTSUB 28 #define STR_POSTSUB 29 #define LDR_PRESUB 30 #define STR_PRESUB 31 #define B 32 #define BL 33 #define PLD 34 #define PLD_POST 35 #define PLD_PRE 36 #define PLD_POSTSUB 37 #define PLD_PRESUB 38 #define WR0 (0+16) #define WR1 (1+16) #define WR2 (2+16) #define WR3 (3+16) #define WR4 (4+16) #define WR5 (5+16) #define WR6 (6+16) #define WR7 (7+16) #define WR8 (8+16) #define WR9 (9+16) #define WR10 (10+16) #define WR11 (11+16) #define WR12 (12+16) #define WR13 (13+16) #define WR14 (14+16) #define WR15 (15+16) #define WCID (0+32) #define WCSSF (2+32) #define WCASF (3+32) #define WCGR0 (8+32) #define WCGR1 (9+32) #define WCGR2 (10+32) #define WCGR3 (11+32) //mode //1: I2 rd:16,rn:12 //2: I2C rd:16,rn:12,imm[3]:0 //4: I3 rd:0,rnlo:12,rnhi:16 //6: I2 rd:12,rn:16 //7: I3 rd:12,rn:16,rm:0 //8: I3C rd:12,rn:16,rm:0,imm[3]:20 //9: I2C rd:12,rn:16,imm[8]:0|20 //F: I2C,I1P rd:12,rn:16,imm[8]:0 (w or q *4) #define TBCSTB 0x1E400010 #define TBCSTH 0x1E400050 #define TBCSTW 0x1E400090 #define TINSRB 0x2E600010 #define TINSRH 0x2E600050 #define TINSRW 0x2E600090 #define TMCR 0x1E000110 #define TMCRR 0x4C400000 #define TMRC 0x6E100110 #define TMRRC 0x7C500000 #define WACCB 0x6E0001C0 #define WACCH 0x6E4001C0 #define WACCW 0x6E8001C0 #define WADDB 0x7E000180 #define WADDH 0x7E400180 #define WADDW 0x7E800180 #define WADDBUS 0x7E100180 #define WADDHUS 0x7E500180 #define WADDWUS 0x7E900180 #define WADDBSS 0x7E300180 #define WADDHSS 0x7E700180 #define WADDWSS 0x7EB00180 #define WALIGNI 0x8E000020 #define WALIGNR0 0x7E800020 #define WALIGNR1 0x7E900020 #define WALIGNR2 0x7EA00020 #define WALIGNR3 0x7EB00020 #define WAND 0x7E200000 #define WANDN 0x7E300000 #define WAVG2B 0x7E800000 #define WAVG2H 0x7EC00000 #define WAVG2BR 0x7E900000 #define WAVG2HR 0x7ED00000 #define WCMPEQB 0x7E000060 #define WCMPEQH 0x7E400060 #define WCMPEQW 0x7E800060 #define WCMPGTUB 0x7E100060 #define WCMPGTUH 0x7E500060 #define WCMPGTUW 0x7E900060 #define WCMPGTSB 0x7E300060 #define WCMPGTSH 0x7E700060 #define WCMPGTSW 0x7EB00060 #define WLDRB 0xFD900000 #define WLDRH 0xFDD00000 #define WLDRW 0xFD900100 #define WLDRD 0xFDD00100 #define WSTRB 0xFD800000 #define WSTRH 0xFDC00000 #define WSTRW 0xFD800100 #define WSTRD 0xFDC00100 #define WLDRB_PRE 0xFDB00000 #define WLDRH_PRE 0xFDF00000 #define WLDRW_PRE 0xFDB00100 #define WLDRD_PRE 0xFDF00100 #define WSTRB_PRE 0xFDA00000 #define WSTRH_PRE 0xFDE00000 #define WSTRW_PRE 0xFDA00100 #define WSTRD_PRE 0xFDE00100 #define WLDRB_PRESUB 0xFD300000 #define WLDRH_PRESUB 0xFD700000 #define WLDRW_PRESUB 0xFD300100 #define WLDRD_PRESUB 0xFD700100 #define WSTRB_PRESUB 0xFD200000 #define WSTRH_PRESUB 0xFD600000 #define WSTRW_PRESUB 0xFD200100 #define WSTRD_PRESUB 0xFD600100 #define WLDRB_POST 0xFCB00000 #define WLDRH_POST 0xFCF00000 #define WLDRW_POST 0xFCB00100 #define WLDRD_POST 0xFCF00100 #define WSTRB_POST 0xFCA00000 #define WSTRH_POST 0xFCE00000 #define WSTRW_POST 0xFCA00100 #define WSTRD_POST 0xFCE00100 #define WLDRB_POSTSUB 0xFC300000 #define WLDRH_POSTSUB 0xFC700000 #define WLDRW_POSTSUB 0xFC300100 #define WLDRD_POSTSUB 0xFC700100 #define WSTRB_POSTSUB 0xFC200000 #define WSTRH_POSTSUB 0xFC600000 #define WSTRW_POSTSUB 0xFC200100 #define WSTRD_POSTSUB 0xFC600100 #define WMACU 0x7E400100 #define WMACS 0x7E600100 #define WMACUZ 0x7E500100 #define WMACSZ 0x7E700100 #define WMADDU 0x7E800100 #define WMADDS 0x7EA00100 #define WMAXUB 0x7E000160 #define WMAXUH 0x7E400160 #define WMAXUW 0x7E800160 #define WMAXSB 0x7E200160 #define WMAXSH 0x7E600160 #define WMAXSW 0x7EA00160 #define WMINUB 0x7E100160 #define WMINUH 0x7E500160 #define WMINUW 0x7E900160 #define WMINSB 0x7E300160 #define WMINSH 0x7E700160 #define WMINSW 0x7EB00160 #define WMULUL 0x7E000100 #define WMULUM 0x7E100100 #define WMULSL 0x7E200100 #define WMULSM 0x7E300100 #define WOR 0x7E000000 #define WPACKHUS 0x7E500080 #define WPACKWUS 0x7E900080 #define WPACKDUS 0x7ED00080 #define WPACKHSS 0x7E700080 #define WPACKWSS 0x7EB00080 #define WPACKDSS 0x7EF00080 #define WRORH 0x7E700040 #define WRORW 0x7EB00040 #define WRORD 0x7EF00040 #define WRORHG 0x7E700140 #define WRORWG 0x7EB00140 #define WRORDG 0x7EF00140 #define WSADB 0x7E000120 #define WSADBZ 0x7E100120 #define WSADH 0x7E400120 #define WSADHZ 0x7E500120 #define WSHUFH 0x9E0001E0 #define WSLLH 0x7E500040 #define WSLLW 0x7E900040 #define WSLLD 0x7ED00040 #define WSLLHG 0x7E500140 #define WSLLWG 0x7E900140 #define WSLLDG 0x7ED00140 #define WSRAH 0x7E400040 #define WSRAW 0x7E800040 #define WSRAD 0x7EC00040 #define WSRAHG 0x7E400140 #define WSRAWG 0x7E800140 #define WSRADG 0x7EC00140 #define WSRLH 0x7E600040 #define WSRLW 0x7EA00040 #define WSRLD 0x7EE00040 #define WSRLHG 0x7E600140 #define WSRLWG 0x7EA00140 #define WSRLDG 0x7EE00140 #define WSUBB 0x7E0001A0 #define WSUBH 0x7E4001A0 #define WSUBW 0x7E8001A0 #define WSUBBUS 0x7E1001A0 #define WSUBHUS 0x7E5001A0 #define WSUBWUS 0x7E9001A0 #define WSUBBSS 0x7E3001A0 #define WSUBHSS 0x7E7001A0 #define WSUBWSS 0x7EB001A0 #define WUNPCKEHUB 0x6E0000C0 #define WUNPCKEHUH 0x6E4000C0 #define WUNPCKEHUW 0x6E8000C0 #define WUNPCKEHSB 0x6E2000C0 #define WUNPCKEHSH 0x6E6000C0 #define WUNPCKEHSW 0x6EA000C0 #define WUNPCKIHB 0x7E1000C0 #define WUNPCKIHH 0x7E5000C0 #define WUNPCKIHW 0x7E9000C0 #define WUNPCKELUB 0x6E0000E0 #define WUNPCKELUH 0x6E4000E0 #define WUNPCKELUW 0x6E8000E0 #define WUNPCKELSB 0x6E2000E0 #define WUNPCKELSH 0x6E6000E0 #define WUNPCKELSW 0x6EA000E0 #define WUNPCKILB 0x7E1000E0 #define WUNPCKILH 0x7E5000E0 #define WUNPCKILW 0x7E9000E0 #define WXOR 0x7E100000 void C(int); void S(); void Byte(); void Half(); void SByte(); void SHalf(); void IConst(reg Dest, int Const); void IMul(reg Dest, reg Op1, int Mul); void I3(int, reg Dest, reg Op1, reg Op2); void I3C(int, reg Dest, reg Op1, reg Op2, int Const); void I3S(int, reg Dest, reg Op1, reg Op2, int ShiftType, int Shift); void I4(int, reg Dest, reg Op1, reg Op2, reg Op3); void I2(int, reg Dest, reg Op1); void I2C(int, reg Dest, reg Op1, int Const); void I1P(int, reg Dest, dyninst* Block, int Ofs); void I0P(int, int Cond, dyninst*); void Break(); void CodeBegin(); void CodeEnd(); #endif #endif