dsmSimhppaLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* dshppa.h - simhppa disassembler library header */
  2. /* Copyright 1984-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,05jan96,kab  changed INSN_TAB and deleted DSM_TAB
  7. */
  8. #ifndef __dsmhppah
  9. #define __dsmhppah
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. #ifdef PARISC_HPUX9
  14. #include "wtxtclp.h"
  15. #else
  16. #include "vwModNum.h"
  17. /* XXX p_m should find a better error code here */
  18. #define S_dsmLib_UNKNOWN_INSTRUCTION    (0x20000 | 1)
  19. #endif /*PARISC_HPUX9*/
  20. /* macros for bit mask and shift for operation field */
  21. /* ?!?BUG -- len is never used, presumably it's a width?!? */
  22. #define BIT_MASK(p,len)  ((1<<(32-(p)))-1)
  23. #define BIT_SHIFT(p,len) (32 -(p) - (len))
  24. #define IMM5_MASK 0x0000001f
  25. #define IMM5_13_MASK BIT_MASK(5, 13)
  26. #define BIT27_5_MASK BIT_MASK(27, 5)
  27. #define BIT19_8_MASK BIT_MASK(19, 8)
  28. #define BIT_M_N_MASK 0x00000020
  29. #define BIT6_5_MASK BIT_MASK(6, 5)
  30. #define BIT11_5_MASK BIT_MASK(11, 5)
  31. #define BIT12_1_MASK BIT_MASK(12, 1)
  32. #define BIT13_3_MASK BIT_MASK(13, 3)
  33. #define BIT16_2_MASK BIT_MASK(16, 2)
  34. #define BIT16_3_MASK BIT_MASK(16, 3)
  35. #define BIT16_5_MASK BIT_MASK(16, 5)
  36. #define BIT21_2_MASK BIT_MASK(21, 2)
  37. #define BIT23_3_MASK BIT_MASK(23, 3)
  38. /* operation code extention definitions */
  39. /* load indexed instructions */
  40. #define EXT_LDWX_CODE 0x02
  41. #define EXT_LDHX_CODE 0x01
  42. #define EXT_LDBX_CODE 0x00
  43. #define EXT_LDWAX_CODE 0x06
  44. #define EXT_LDWAS_CODE 0x06
  45. #define EXT_LDCWX_CODE 0x07
  46. #define EXT_STWS_CODE  0x0a
  47. #define EXT_STHS_CODE 0x09
  48. #define EXT_STBS_CODE 0x08
  49. #define EXT_STWAS_CODE 0x0e
  50. #define EXT_STBYS_CODE 0x0c
  51. /* system control instructions */
  52. #define EXT_SYSCTL_MASK 0x00001fe0
  53. #define EXT_BREAK_CODE 0
  54. #define EXT_RFI_CODE 0x60
  55. #define EXT_RFIR_CODE 0x65
  56. #define EXT_SSM_CODE 0x6b
  57. #define EXT_RSM_CODE 0x73
  58. #define EXT_MTSM_CODE 0xc3
  59. #define EXT_LDSID_CODE 0x85
  60. #define EXT_MTSP_CODE 0xc1
  61. #define EXT_MTCTL_CODE 0xc2
  62. #define EXT_MFSP_CODE 0x25
  63. #define EXT_MFCTL_CODE 0x45
  64. #define EXT_SYNC_CODE 0x20
  65. #define EXT_PROBER_CODE 0x46
  66. #define EXT_PROBERI_CODE 0xc6
  67. #define EXT_PROBEW_CODE 0x47
  68. #define EXT_PROBEWI_CODE 0xc7
  69. #define EXT_LPA_CODE 0x4d
  70. /* memory managemnet instructions */
  71. #define EXT_PDTLB_CODE 0x48
  72. #define EXT_PDTLBE_CODE 0x49
  73. #define EXT_PDC_CODE 0x4e
  74. #define EXT_FDC_CODE 0x4a
  75. #define EXT_FDCE_CODE 0x4b
  76. #define EXT_PITLB_CODE 0x08
  77. #define EXT_PITLBE_CODE 0x09
  78. #define EXT_FIC_CODE 0x0a
  79. #define EXT_FICE_CODE 0x0b
  80. #define EXT_IDTLBA_CODE 0x41
  81. #define EXT_IDTLBP_CODE 0x40
  82. #define EXT_IITLBA_CODE 0x01
  83. #define EXT_IITLBP_CODE 0x00
  84. /* memory managemnet instructions */
  85. #define EXT_PDTLB_CODE 0x48
  86. #define EXT_PDTLBE_CODE 0x49
  87. #define EXT_PDC_CODE 0x4e
  88. #define EXT_FDC_CODE 0x4a
  89. #define EXT_FDCE_CODE 0x4b
  90. #define EXT_PITLB_CODE 0x08
  91. #define EXT_PITLBE_CODE 0x09
  92. #define EXT_FIC_CODE 0x0a
  93. #define EXT_FICE_CODE 0x0b
  94. #define EXT_IDTLBA_CODE 0x41
  95. #define EXT_IDTLBP_CODE 0x40
  96. #define EXT_IITLBA_CODE 0x01
  97. #define EXT_IITLBP_CODE 0x00
  98. /* deposit instructions */
  99. #define EXT_VDEP_CODE  1
  100. #define EXT_ZVDEP_CODE  0
  101. #define EXT_DEP_CODE  3
  102. #define EXT_ZDEP_CODE  2
  103. #define EXT_VDEPI_CODE  5
  104. #define EXT_ZVDEPI_CODE  4
  105. #define EXT_DEPI_CODE 7
  106. #define EXT_ZDEPI_CODE 6
  107. /* floating point load/store indexed instructions */
  108. #define EXT_FLDWX_CODE 0x00
  109. #define EXT_FLDDX_CODE 0x00
  110. #define EXT_FLDWS_CODE 0x08
  111. #define EXT_FLDDS_CODE 0x08
  112. #define EXT_FSTWX_CODE  0x01
  113. #define EXT_FSTDX_CODE 0x01
  114. #define EXT_FSTWS_CODE 0x09
  115. #define EXT_FSTDS_CODE 0x09
  116. /* load and store coprocessor instructions */
  117. #define EXT_CLDX_CODE 0
  118. #define EXT_CSTX_CODE 1
  119. #define EXT_CLDS_CODE 8
  120. #define EXT_CSTS_CODE 9
  121. /* extract and deposit instructions */
  122. #define EXT_VSHD_CODE  0
  123. #define EXT_SHD_CODE 2 
  124. #define EXT_VEXTRU_CODE 4
  125. #define EXT_VEXTRS_CODE 5
  126. #define EXT_EXTRU_CODE  6
  127. #define EXT_EXTRS_CODE  7
  128. typedef struct 
  129.     {
  130.     UINT32 mask; /* bit mask for operation code */
  131.     UINT32 opCode; /* operation code */
  132.     char *name; /* instruction name */
  133.     int flags; /* nullification? check cond flag? */
  134.     VOIDFUNCPTR pFunc;      /* disassembler function */
  135.     } INST_TAB;
  136. #if defined(__STDC__) || defined(__cplusplus)
  137. #ifdef PARISC_HPUX9
  138. IMPORT   int dsmHppaInst (UINT32 *binInst, int address,
  139.      void (*prtAddress)(), Tcl_DString *pDString);
  140. IMPORT   int dsmHppaNbytes (UINT32 *binInst);
  141. #else
  142. IMPORT   int dsmInst (UINT32 *binInst, int address,
  143.      void (*prtAddress)());
  144. IMPORT   int dsmNbytes (UINT32 *binInst);
  145. #endif /*PARISC_HPUX9 */
  146. #else
  147. #ifdef PARISC_HPUX9
  148. IMPORT   int dsmHppaInst ();
  149. IMPORT   int dsmHppaNbytes ();
  150. #else
  151. IMPORT   int dsmHppaInst ();
  152. IMPORT   int dsmHppaNbytes ();
  153. #endif /*PARISC_HPUX9*/
  154. #endif /* __STDC__ */
  155. #ifdef __cplusplus
  156. }
  157. #endif
  158. #endif /* __INCdsmhppah */