NetBSD/sys/arch/sh3/include/sh_opcode.h
itojun 65363da25e Merge in NetBSD/sh3 from cvs.kame.net repository.
Tree structure:
- sys/arch/sh3: sh3 generic code
	As commented, in-chip device drivers are put into sys/arch/sh3/dev.
- sys/arch/evbsh3: sh3 evaluation boards (pure sh3 CPU, no fancy external HW)
- sys/arch/mmeye: Brains mmEye, www.brains.co.jp
MI source code includes couple of #ifdef for sh3-coff support.
(sh3 uses coff or elf)

Needs some more improvements, especialy in sys/arch/sh3/conf/files.sh3,
to compile the tree (due to last minute tree structure change).
1999-09-13 10:30:21 +00:00

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