dsmArmLib.h
资源名称:ixp425BSP.rar [点击查看]
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:
VxWorks
开发平台:
C/C++
- /* dsmArmLib.h - ARM disassembler header file */
- /* Copyright 1996-1997 Wind River Systems, Inc. */
- /*
- modification history
- --------------------
- 01c,09oct97.jpd added more Thumb instructions.
- 01b,09sep97,cdp added more instructions.
- 01a,09may96,cdp created.
- */
- #ifndef __INCdsmArmLibh
- #define __INCdsmArmLibh
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "vwModNum.h"
- /* dsmLib status codes */
- #define S_dsmLib_UNKNOWN_INSTRUCTION (M_dsmLib | 1)
- /*
- * Macro and definitions for simple decoding of instuctions.
- * To check an instruction, it is ANDed with the IMASK_ and
- * the result is compared with the IOP_. The macro INSTR_IS
- * does this and returns !0 to indicate a match.
- */
- #define INSTR_IS(i,o) (((i)&(IMASK_##o))==(IOP_##o))
- #define IMASK_BL 0x0F000000 /* BL xxx */
- #define IOP_BL 0x0B000000
- #define IMASK_STMDB_SPP_FP_IP_LR_PC 0xFFFFF800 /* STMDB sp!,{..fp,ip,lr,pc} */
- #define IOP_STMDB_SPP_FP_IP_LR_PC 0xE92DD800
- #define IMASK_SUB_FP_IP_4 0xFFFFFFFF /* SUB fp,ip,#4 */
- #define IOP_SUB_FP_IP_4 0xE24CB004
- #define IMASK_SUB_FP_IP_4PLUS 0xFFFFF000 /* SUB fp,ip,#4+ */
- #define IOP_SUB_FP_IP_4PLUS 0xE24CB000
- #define IMASK_MOV_IP_SP 0xFFFFFFFF /* MOV ip,sp */
- #define IOP_MOV_IP_SP 0xE1A0C00D
- #define IMASK_MOVXX_LR_PC 0x0FFFFFFF /* MOVxx lr,pc */
- #define IOP_MOVXX_LR_PC 0x01A0E00F
- #define IMASK_STMDB_SPP_AREGS 0xFFFFFFF0 /* STMDB sp!,{a1-a4} */
- #define IOP_STMDB_SPP_AREGS 0xE92D0000
- #define IMASK_SUB_SP_SP 0xFFFFF000 /* SUB sp,sp,#n */
- #define IOP_SUB_SP_SP 0xE24DD000
- #define IMASK_MOVS_PC_LR 0xFFFFFFFF /* MOVS pc,lr */
- #define IOP_MOVS_PC_LR 0xE1B0F00E
- /* Thumb instructions */
- #define IMASK_T_BL0 0xF800 /* BL prefix */
- #define IOP_T_BL0 0xF000
- #define IMASK_T_BL1 0xF800 /* BL */
- #define IOP_T_BL1 0xF800
- #define IMASK_T_MOV_LR_PC 0xFFFF /* MOV lr,pc */
- #define IOP_T_MOV_LR_PC 0x46FE
- #define IMASK_T_SUB_SP_16 0xFFFF /* SUB sp,#16 */
- #define IOP_T_SUB_SP_16 0xB084
- #define IMASK_T_MOV_FP_LO 0xFFC7 /* MOV fp,loreg */
- #define IOP_T_MOV_FP_LO 0x4683
- #define IMASK_T_MOV_SP_LO 0xFFC7 /* MOV sp,loreg */
- #define IOP_T_MOV_SP_LO 0x4685
- #define IMASK_T_ADD_LO_SP 0xF800 /* ADD loreg, sp, #Imm */
- #define IOP_T_ADD_LO_SP 0xA800
- #define IMASK_T_POP_LO 0xFF00 /* POP {reglist} (not PC) */
- #define IOP_T_POP_LO 0xBC00
- #define IMASK_T_PUSH_LO 0xFF00 /* PUSH {reglist} (not LR) */
- #define IOP_T_PUSH_LO 0xB400
- #define IMASK_T_PUSH 0xFF00 /* PUSH {reglist} (inc LR) */
- #define IOP_T_PUSH 0xB500
- #define IMASK_T_BX_LO 0xFFC0 /* BX loreg */
- #define IOP_T_BX_LO 0x4700
- #define IMASK_T_MOV_LO_PC 0xFFF8 /* MOV loreg,pc */
- #define IOP_T_MOV_LO_PC 0x4678
- #define IMASK_T_MOV_LO_FP 0xFFF8 /* MOV loreg,fp */
- #define IOP_T_MOV_LO_FP 0x4658
- IMPORT int dsmNbytes(FAST INSTR *binInst);
- IMPORT int dsmInst(FAST INSTR *binInst, int address, VOIDFUNCPTR prtAddress);
- #ifndef _ASMLANGUAGE
- #endif /* _ASMLANGUAGE */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __INCdsmArmLibh */