home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gdb-4.16-base.tgz / gdb-4.16-base.tar / fsf / gdb / utils / amd-udi / include / opcodes.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-23  |  10.3 KB  |  351 lines

  1. /* @(#)opcodes.h    5.19 93/08/10 17:49:11, Srini,AMD */
  2. /******************************************************************************
  3.  * Copyright 1991 Advanced Micro Devices, Inc.
  4.  *
  5.  * This software is the property of Advanced Micro Devices, Inc  (AMD)  which
  6.  * specifically  grants the user the right to modify, use and distribute this
  7.  * software provided this notice is not removed or altered.  All other rights
  8.  * are reserved by AMD.
  9.  *
  10.  * AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
  11.  * SOFTWARE.  IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
  12.  * DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
  13.  * USE OF THIS SOFTWARE.
  14.  *
  15.  * So that all may benefit from your experience, please report  any  problems
  16.  * or  suggestions about this software to the 29K Technical Support Center at
  17.  * 800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131  in  the  UK,  or
  18.  * 0031-11-1129 in Japan, toll free.  The direct dial number is 512-462-4118.
  19.  *
  20.  * Advanced Micro Devices, Inc.
  21.  * 29K Support Products
  22.  * Mail Stop 573
  23.  * 5900 E. Ben White Blvd.
  24.  * Austin, TX 78741
  25.  * 800-292-9263
  26.  *****************************************************************************
  27.  *      Engineer: Srini Subramanian.
  28.  *****************************************************************************
  29.  ** 
  30.  **       This file gives the definitions of opcodes in the Am29000
  31.  **       processor.
  32.  **
  33.  **       This file defines the opcodes used in the Am29000 processor.
  34.  **       The opcodes here are defined as the first eight-bit field in
  35.  **       the (32-bit) instruction.  Note that many instructions are
  36.  **       defined with a "mode bit" in the least significant bit of the
  37.  **       opcode field.  In this definition, instructions with
  38.  **       different mode bits are treated as different instructions.
  39.  **       This allows consistent processing of eight bit opcodes.
  40.  **
  41.  **       For instance, AND with the mode bit set to zero (M=0) defines
  42.  **       the third eight bit field in the instruction word as being
  43.  **       the content of a register.  When M=1 the content of the third
  44.  **       field is taken to be an immediate value, zero-extended to 32
  45.  **       bits.
  46.  **
  47.  **       The #define statements below will treat AND as two different
  48.  **       instructions called AND0 and AND1.  As you might suspect,
  49.  **       AND0 is describes the opcode AND when M=0 and AND1 describes
  50.  **       the opcode AND where M=1.
  51.  **
  52.  **       Note1: Wherever the name of an opcode as listed in the User's
  53.  **              Manual confilcts with either a reserved keyword, or a
  54.  **              previously defined opcode, "_op" is appended to the
  55.  **              name. 
  56.  **
  57.  **       Note2: These opcodes are sorted in numerical order.
  58.  **
  59.  **       Note3: Opcodes are broken up into groups of 16 (16#n0# to
  60.  **              16#nF#).
  61.  **
  62.  **       Note4: When no opcode is defined, a variable of the name
  63.  **              illegal_nn is declared in that space.  The value of
  64.  **              "nn" is the number of the opcode in hexadecimal.
  65.  **
  66.  *****************************************************************************
  67.  */
  68.  
  69. #ifndef    _OPCODES_H_INCLUDED_
  70. #define    _OPCODES_H_INCLUDED_
  71.  
  72. #define   ILLEGAL_00   0x00
  73. #define   CONSTN       0x01
  74. #define   CONSTH       0x02
  75. #define   CONST        0x03
  76. #define   MTSRIM       0x04
  77. #define   CONSTHZ      0x05
  78. #define   LOADL0       0x06
  79. #define   LOADL1       0x07
  80. #define   CLZ0         0x08
  81. #define   CLZ1         0x09
  82. #define   EXBYTE0      0x0A
  83. #define   EXBYTE1      0x0B
  84. #define   INBYTE0      0x0C
  85. #define   INBYTE1      0x0D
  86. #define   STOREL0      0x0E
  87. #define   STOREL1      0x0F
  88.  
  89. #define   ADDS0        0x10
  90. #define   ADDS1        0x11
  91. #define   ADDU0        0x12
  92. #define   ADDU1        0x13
  93. #define   ADD0         0x14
  94. #define   ADD1         0x15
  95. #define   LOAD0        0x16
  96. #define   LOAD1        0x17
  97. #define   ADDCS0       0x18
  98. #define   ADDCS1       0x19
  99. #define   ADDCU0       0x1A
  100. #define   ADDCU1       0x1B
  101. #define   ADDC0        0x1C
  102. #define   ADDC1        0x1D
  103. #define   STORE0       0x1E
  104. #define   STORE1       0x1F
  105.  
  106. #define   SUBS0        0x20
  107. #define   SUBS1        0x21
  108. #define   SUBU0        0x22
  109. #define   SUBU1        0x23
  110. #define   SUB0         0x24
  111. #define   SUB1         0x25
  112. #define   LOADSET0     0x26
  113. #define   LOADSET1     0x27
  114. #define   SUBCS0       0x28
  115. #define   SUBCS1       0x29
  116. #define   SUBCU0       0x2A
  117. #define   SUBCU1       0x2B
  118. #define   SUBC0        0x2C
  119. #define   SUBC1        0x2D
  120. #define   CPBYTE0      0x2E
  121. #define   CPBYTE1      0x2F
  122.  
  123. #define   SUBRS0       0x30
  124. #define   SUBRS1       0x31
  125. #define   SUBRU0       0x32
  126. #define   SUBRU1       0x33
  127. #define   SUBR0        0x34
  128. #define   SUBR1        0x35
  129. #define   LOADM0       0x36
  130. #define   LOADM1       0x37
  131. #define   SUBRCS0      0x38
  132. #define   SUBRCS1      0x39
  133. #define   SUBRCU0      0x3A
  134. #define   SUBRCU1      0x3B
  135. #define   SUBRC0       0x3C
  136. #define   SUBRC1       0x3D
  137. #define   STOREM0      0x3E
  138. #define   STOREM1      0x3F
  139.  
  140. #define   CPLT0        0x40
  141. #define   CPLT1        0x41
  142. #define   CPLTU0       0x42
  143. #define   CPLTU1       0x43
  144. #define   CPLE0        0x44
  145. #define   CPLE1        0x45
  146. #define   CPLEU0       0x46
  147. #define   CPLEU1       0x47
  148. #define   CPGT0        0x48
  149. #define   CPGT1        0x49
  150. #define   CPGTU0       0x4A
  151. #define   CPGTU1       0x4B
  152. #define   CPGE0        0x4C
  153. #define   CPGE1        0x4D
  154. #define   CPGEU0       0x4E
  155. #define   CPGEU1       0x4F
  156.  
  157. #define   ASLT0        0x50
  158. #define   ASLT1        0x51
  159. #define   ASLTU0       0x52
  160. #define   ASLTU1       0x53
  161. #define   ASLE0        0x54
  162. #define   ASLE1        0x55
  163. #define   ASLEU0       0x56
  164. #define   ASLEU1       0x57
  165. #define   ASGT0        0x58
  166. #define   ASGT1        0x59
  167. #define   ASGTU0       0x5A
  168. #define   ASGTU1       0x5B
  169. #define   ASGE0        0x5C
  170. #define   ASGE1        0x5D
  171. #define   ASGEU0       0x5E
  172. #define   ASGEU1       0x5F
  173.  
  174. #define   CPEQ0        0x60
  175. #define   CPEQ1        0x61
  176. #define   CPNEQ0       0x62
  177. #define   CPNEQ1       0x63
  178. #define   MUL0         0x64
  179. #define   MUL1         0x65
  180. #define   MULL0        0x66
  181. #define   MULL1        0x67
  182. #define   DIV0_OP0     0x68
  183. #define   DIV0_OP1     0x69
  184. #define   DIV_OP0      0x6A
  185. #define   DIV_OP1      0x6B
  186. #define   DIVL0        0x6C
  187. #define   DIVL1        0x6D
  188. #define   DIVREM0      0x6E
  189. #define   DIVREM1      0x6F
  190.  
  191. #define   ASEQ0        0x70
  192. #define   ASEQ1        0x71
  193. #define   ASNEQ0       0x72
  194. #define   ASNEQ1       0x73
  195. #define   MULU0        0x74
  196. #define   MULU1        0x75
  197. #define   ILLEGAL_76   0x76
  198. #define   ILLEGAL_77   0x77
  199. #define   INHW0        0x78
  200. #define   INHW1        0x79
  201. #define   EXTRACT0     0x7A
  202. #define   EXTRACT1     0x7B
  203. #define   EXHW0        0x7C
  204. #define   EXHW1        0x7D
  205. #define   EXHWS        0x7E
  206. #define   ILLEGAL_7F   0x7F
  207.  
  208. #define   SLL0         0x80
  209. #define   SLL1         0x81
  210. #define   SRL0         0x82
  211. #define   SRL1         0x83
  212. #define   ILLEGAL_84   0x84
  213. #define   ILLEGAL_85   0x85
  214. #define   SRA0         0x86
  215. #define   SRA1         0x87
  216. #define   IRET         0x88
  217. #define   HALT_OP      0x89
  218. #define   ILLEGAL_8A   0x8A
  219. #define   ILLEGAL_8B   0x8B
  220. #define   IRETINV      0x8C
  221. #define   ILLEGAL_8D   0x8D
  222. #define   ILLEGAL_8E   0x8E
  223. #define   ILLEGAL_8F   0x8F
  224.  
  225. #define   AND_OP0      0x90
  226. #define   AND_OP1      0x91
  227. #define   OR_OP0       0x92
  228. #define   OR_OP1       0x93
  229. #define   XOR_OP0      0x94
  230. #define   XOR_OP1      0x95
  231. #define   XNOR0        0x96
  232. #define   XNOR1        0x97
  233. #define   NOR0         0x98
  234. #define   NOR1         0x99
  235. #define   NAND0        0x9A
  236. #define   NAND1        0x9B
  237. #define   ANDN0        0x9C
  238. #define   ANDN1        0x9D
  239. #define   SETIP        0x9E
  240. #define   INV          0x9F
  241.  
  242. #define   JMP0         0xA0
  243. #define   JMP1         0xA1
  244. #define   ILLEGAL_A2   0xA2
  245. #define   ILLEGAL_A3   0xA3
  246. #define   JMPF0        0xA4
  247. #define   JMPF1        0xA5
  248. #define   ILLEGAL_A6   0xA6
  249. #define   ILLEGAL_A7   0xA7
  250. #define   CALL0        0xA8
  251. #define   CALL1        0xA9
  252. #define   ORN_OP0       0xAA
  253. #define   ORN_OP1       0xAB
  254. #define   JMPT0        0xAC
  255. #define   JMPT1        0xAD
  256. #define   ILLEGAL_AE   0xAE
  257. #define   ILLEGAL_AF   0xAF
  258.  
  259. #define   ILLEGAL_B0   0xB0
  260. #define   ILLEGAL_B1   0xB1
  261. #define   ILLEGAL_B2   0xB2
  262. #define   ILLEGAL_B3   0xB3
  263. #define   JMPFDEC0     0xB4
  264. #define   JMPFDEC1     0xB5
  265. #define   MFTLB        0xB6
  266. #define   ILLEGAL_B7   0xB7
  267. #define   ILLEGAL_B8   0xB8
  268. #define   ILLEGAL_B9   0xB9
  269. #define   ILLEGAL_BA   0xBA
  270. #define   ILLEGAL_BB   0xBB
  271. #define   ILLEGAL_BC   0xBC
  272. #define   ILLEGAL_BD   0xBD
  273. #define   MTTLB        0xBE
  274. #define   ILLEGAL_BF   0xBF
  275.  
  276. #define   JMPI         0xC0
  277. #define   ILLEGAL_C1   0xC1
  278. #define   ILLEGAL_C2   0xC2
  279. #define   ILLEGAL_C3   0xC3
  280. #define   JMPFI        0xC4
  281. #define   ILLEGAL_C5   0xC5
  282. #define   MFSR         0xC6
  283. #define   ILLEGAL_C7   0xC7
  284. #define   CALLI        0xC8
  285. #define   ILLEGAL_C9   0xC9
  286. #define   ILLEGAL_CA   0xCA
  287. #define   ILLEGAL_CB   0xCB
  288. #define   JMPTI        0xCC
  289. #define   ILLEGAL_CD   0xCD
  290. #define   MTSR         0xCE
  291. #define   ILLEGAL_CF   0xCF
  292.  
  293. #define   ILLEGAL_D0   0xD0
  294. #define   ILLEGAL_D1   0xD1
  295. #define   ILLEGAL_D2   0xD2
  296. #define   ILLEGAL_D3   0xD3
  297. #define   ILLEGAL_D4   0xD4
  298. #define   ILLEGAL_D5   0xD5
  299. #define   ILLEGAL_D6   0xD6
  300. #define   EMULATE      0xD7
  301. #define   ILLEGAL_D8   0xD8
  302. #define   ILLEGAL_D9   0xD9
  303. #define   ILLEGAL_DA   0xDA
  304. #define   ILLEGAL_DB   0xDB
  305. #define   ILLEGAL_DC   0xDC
  306. #define   ILLEGAL_DD   0xDD
  307. #define   MULTM        0xDE
  308. #define   MULTMU       0xDF
  309.  
  310. #define   MULTIPLY     0xE0
  311. #define   DIVIDE       0xE1
  312. #define   MULTIPLU     0xE2
  313. #define   DIVIDU       0xE3
  314. #define   CONVERT      0xE4
  315. #define   SQRT         0xE5
  316. #define   CLASS        0xE6
  317. #define   ILLEGAL_E7   0xE7
  318. #define   ILLEGAL_E8   0xE8
  319. #define   ILLEGAL_E9   0xE9
  320. #define   FEQ          0xEA
  321. #define   DEQ          0xEB
  322. #define   FGT          0xEC
  323. #define   DGT          0xED
  324. #define   FGE          0xEE
  325. #define   DGE          0xEF
  326.  
  327. #define   FADD         0xF0
  328. #define   DADD         0xF1
  329. #define   FSUB         0xF2
  330. #define   DSUB         0xF3
  331. #define   FMUL         0xF4
  332. #define   DMUL         0xF5
  333. #define   FDIV         0xF6
  334. #define   DDIV         0xF7
  335. #define   ILLEGAL_F8   0xF8
  336. #define   FDMUL        0xF9
  337. #define   ILLEGAL_FA   0xFA
  338. #define   ILLEGAL_FB   0xFB
  339. #define   ILLEGAL_FC   0xFC
  340. #define   ILLEGAL_FD   0xFD
  341. #define   ILLEGAL_FE   0xFE
  342. #define   ILLEGAL_FF   0xFF
  343.  
  344. /* External declarations of variable defined in opcodes.c */
  345.  
  346. extern char     *opcode_name[];
  347. extern char     *reg[];
  348. extern char     *spreg[];
  349.  
  350. #endif  /* _OPCODES_H_INCLUDED_ */
  351.