NetBSD/sys/arch/sh3/include/sh_opcode.h

163 lines
2.1 KiB
C

/* $NetBSD: sh_opcode.h,v 1.1 1999/09/13 10:31:22 itojun Exp $ */
typedef union {
unsigned word;
#if BYTE_ORDER == BIG_ENDIAN
struct {
unsigned op: 16;
} oType;
struct {
unsigned op1: 4;
unsigned n: 4;
unsigned op2: 8;
} nType;
struct {
unsigned op1: 4;
unsigned m: 4;
unsigned op2: 8;
} mType;
struct {
unsigned op1: 4;
unsigned n: 4;
unsigned m: 4;
unsigned op2: 4;
} nmType;
struct {
unsigned op: 8;
unsigned m: 4;
unsigned d: 4;
} mdType;
struct {
unsigned op: 8;
unsigned n: 4;
unsigned d: 4;
} nd4Type;
struct {
unsigned op: 4;
unsigned n: 4;
unsigned m: 4;
unsigned d: 4;
} nmdType;
struct {
unsigned op: 8;
unsigned d: 8;
} dType;
struct {
unsigned op: 4;
unsigned d: 12;
} d12Type;
struct {
unsigned op: 4;
unsigned n: 4;
unsigned d: 8;
} nd8Type;
struct {
unsigned op: 8;
unsigned i: 8;
} iType;
struct {
unsigned op: 4;
unsigned n: 4;
unsigned i: 8;
} niType;
#endif
#if BYTE_ORDER == LITTLE_ENDIAN
struct {
unsigned op: 16;
} oType;
struct {
unsigned op2: 8;
unsigned n: 4;
unsigned op1: 4;
} nType;
struct {
unsigned op2: 8;
unsigned m: 4;
unsigned op1: 4;
} mType;
struct {
unsigned op2: 4;
unsigned m: 4;
unsigned n: 4;
unsigned op1: 4;
} nmType;
struct {
unsigned d: 4;
unsigned m: 4;
unsigned op: 8;
} mdType;
struct {
unsigned d: 4;
unsigned n: 4;
unsigned op: 8;
} nd4Type;
struct {
unsigned d: 4;
unsigned m: 4;
unsigned n: 4;
unsigned op: 4;
} nmdType;
struct {
unsigned d: 8;
unsigned op: 8;
} dType;
struct {
unsigned d: 12;
unsigned op: 4;
} d12Type;
struct {
unsigned d: 8;
unsigned n: 4;
unsigned op: 4;
} nd8Type;
struct {
unsigned i: 8;
unsigned op: 8;
} iType;
struct {
unsigned i: 8;
unsigned n: 4;
unsigned op: 4;
} niType;
#endif
} InstFmt;
#define OP_BF 0x8b
#define OP_BFS 0x8f
#define OP_BT 0x89
#define OP_BTS 0x8d
#define OP_BRA 0xa
#define OP_BSR 0xb
#define OP1_BRAF 0x0
#define OP2_BRAF 0x23
#define OP1_BSRF 0x0
#define OP2_BSRF 0x03
#define OP1_JMP 0x4
#define OP2_JMP 0x2b
#define OP1_JSR 0x4
#define OP2_JSR 0x0b
#define OP_RTS 0xffff