120 lines · 4.9 KB · C
RawDownload
/* xgate.h -- Freescale XGATE opcode list   Copyright 2010, 2011, 2012 Free Software Foundation, Inc.   Written by Sean Keys (skeys@ipdatasys.com)    This file is part of the GNU opcodes library.    This library is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 3, or (at your option)   any later version.    It is distributed in the hope that it will be useful, but WITHOUT   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public   License for more details.    You should have received a copy of the GNU General Public License   along with this file; see the file COPYING.  If not, write to the   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,   MA 02110-1301, USA. */ #ifndef _OPCODE_XGATE_H#define _OPCODE_XGATE_H /* XGATE CCR flag definitions.  */#define XGATE_N_BIT   0x08	/* XGN - Sign Flag */#define XGATE_Z_BIT   0x04	/* XGZ - Zero Flag */#define XGATE_V_BIT   0x02	/* XGV - Overflow Flag */#define XGATE_C_BIT   0x01	/* XGC - Carry Flag */ /* Access Detail Notation   V — Vector fetch: always an aligned word read, lasts for at least one RISC core cycle   P — Program word fetch: always an aligned word read, lasts for at least one RISC core cycle   r — 8-bit data read: lasts for at least one RISC core cycle   R — 16-bit data read: lasts for at least one RISC core cycle   w — 8-bit data write: lasts for at least one RISC core cycle   W — 16-bit data write: lasts for at least one RISC core cycle   A — Alignment cycle: no read or write, lasts for zero or one RISC core cycles   f — Free cycle: no read or write, lasts for one RISC core cycles.  */#define XGATE_CYCLE_V	0x01#define XGATE_CYCLE_P	0x02#define XGATE_CYCLE_r	0x04#define XGATE_CYCLE_R	0x08#define XGATE_CYCLE_w	0x10#define XGATE_CYCLE_W	0x20#define XGATE_CYCLE_A	0x40#define XGATE_CYCLE_f	0x80 /* Opcode format abbreviations.  */#define XG_INH		0x0001  /* Inherent.  */#define XG_I		0x0002  /* 3-bit immediate address.  */#define XG_R_I		0x0004  /* Register followed by 4/8-bit immediate value.  */#define XG_R_R		0x0008  /* Register followed by a register.  */#define XG_R_R_R	0x0010  /* Register followed by two registers.  */#define XG_R		0x0020  /* Single register.  */#define XG_PC		0x0040  /* PC relative 10 or 11 bit.  */#define XG_R_C		0x0080  /* General register followed by ccr register.  */#define XG_C_R		0x0100  /* CCR register followed by a general register.  */#define XG_R_P		0x0200  /* General register followed by pc register.  */#define XG_R_R_I	0x0400  /* Two general registers followed by an immediate value.  */#define XG_PCREL	0x0800  /* Immediate value that is relative to the current pc.  */ /* XGATE operand formats as stored in the XGATE_opcode table.   They are only used by GAS to recognize operands.  */#define XGATE_OP_INH		""#define XGATE_OP_TRI		"r,r,r"#define XGATE_OP_DYA		"r,r"#define XGATE_OP_IMM16          "r,if"#define XGATE_OP_IMM8	        "r,i8"#define XGATE_OP_IMM4           "r,i4"#define XGATE_OP_IMM3	        "i3"#define XGATE_OP_MON		"r"#define XGATE_OP_MON_R_C	"r,c"#define XGATE_OP_MON_C_R	"c,r"#define XGATE_OP_MON_R_P	"r,p"#define XGATE_OP_IDR		"r,r,+"#define XGATE_OP_IDO5	        "r,r,i5"#define XGATE_OP_REL9	        "b9"#define XGATE_OP_REL10	        "ba"#define XGATE_OP_DYA_MON	"=r"/* Macro definitions.  */#define XGATE_OP_IMM16mADD    "r,if; addl addh"#define XGATE_OP_IMM16mAND    "r,if; andl andh"#define XGATE_OP_IMM16mCPC    "r,if; cmpl cpch"#define XGATE_OP_IMM16mSUB    "r,if; subl subh"#define XGATE_OP_IMM16mLDW    "r,if; ldl ldh" /* CPU variant identification.  */#define XGATE_V1 0x1#define XGATE_V2 0x2#define XGATE_V3 0x4 /* Max opcodes per opcode handle.  */#define MAX_OPCODES     0x05 #define MAX_DETECT_CHARS 0x10 /* The opcode table definitions.  */struct xgate_opcode{  char * name;                  /* Op-code name.  */  char * constraints;           /* Constraint chars.  */  char * format;                /* Bit definitions.  */  unsigned int sh_format;       /* Shorthand format mask.  */  unsigned int size;            /* Opcode size in bytes.  */  unsigned int bin_opcode;      /* Binary opcode with operands masked off.  */  unsigned char cycles_min;     /* Minimum cpu cycles needed.  */  unsigned char cycles_max;     /* Maximum cpu cycles needed.  */  unsigned char set_flags_mask; /* CCR flags set.  */  unsigned char clr_flags_mask; /* CCR flags cleared.  */  unsigned char chg_flags_mask; /* CCR flags changed.  */  unsigned char arch;           /* CPU variant.  */}; /* The opcode table.  The table contains all the opcodes (all pages).   You can't rely on the order.  */extern const struct xgate_opcode xgate_opcodes[];extern const int xgate_num_opcodes; #endif /* _OPCODE_XGATE_H */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t