162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Format of an instruction in memory. 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public 562306a36Sopenharmony_ci * License. See the file "COPYING" in the main directory of this archive 662306a36Sopenharmony_ci * for more details. 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Copyright (C) 1996, 2000 by Ralf Baechle 962306a36Sopenharmony_ci * Copyright (C) 2006 by Thiemo Seufer 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci#ifndef _ASM_INST_H 1262306a36Sopenharmony_ci#define _ASM_INST_H 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <uapi/asm/inst.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci/* HACHACHAHCAHC ... */ 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci/* In case some other massaging is needed, keep MIPSInst as wrapper */ 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define MIPSInst(x) x 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#define I_OPCODE_SFT 26 2362306a36Sopenharmony_ci#define MIPSInst_OPCODE(x) (MIPSInst(x) >> I_OPCODE_SFT) 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#define I_JTARGET_SFT 0 2662306a36Sopenharmony_ci#define MIPSInst_JTARGET(x) (MIPSInst(x) & 0x03ffffff) 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#define I_RS_SFT 21 2962306a36Sopenharmony_ci#define MIPSInst_RS(x) ((MIPSInst(x) & 0x03e00000) >> I_RS_SFT) 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define I_RT_SFT 16 3262306a36Sopenharmony_ci#define MIPSInst_RT(x) ((MIPSInst(x) & 0x001f0000) >> I_RT_SFT) 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define I_IMM_SFT 0 3562306a36Sopenharmony_ci#define MIPSInst_SIMM(x) ((int)((short)(MIPSInst(x) & 0xffff))) 3662306a36Sopenharmony_ci#define MIPSInst_UIMM(x) (MIPSInst(x) & 0xffff) 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci#define I_CACHEOP_SFT 18 3962306a36Sopenharmony_ci#define MIPSInst_CACHEOP(x) ((MIPSInst(x) & 0x001c0000) >> I_CACHEOP_SFT) 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#define I_CACHESEL_SFT 16 4262306a36Sopenharmony_ci#define MIPSInst_CACHESEL(x) ((MIPSInst(x) & 0x00030000) >> I_CACHESEL_SFT) 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci#define I_RD_SFT 11 4562306a36Sopenharmony_ci#define MIPSInst_RD(x) ((MIPSInst(x) & 0x0000f800) >> I_RD_SFT) 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#define I_RE_SFT 6 4862306a36Sopenharmony_ci#define MIPSInst_RE(x) ((MIPSInst(x) & 0x000007c0) >> I_RE_SFT) 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci#define I_FUNC_SFT 0 5162306a36Sopenharmony_ci#define MIPSInst_FUNC(x) (MIPSInst(x) & 0x0000003f) 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#define I_FFMT_SFT 21 5462306a36Sopenharmony_ci#define MIPSInst_FFMT(x) ((MIPSInst(x) & 0x01e00000) >> I_FFMT_SFT) 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci#define I_FT_SFT 16 5762306a36Sopenharmony_ci#define MIPSInst_FT(x) ((MIPSInst(x) & 0x001f0000) >> I_FT_SFT) 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci#define I_FS_SFT 11 6062306a36Sopenharmony_ci#define MIPSInst_FS(x) ((MIPSInst(x) & 0x0000f800) >> I_FS_SFT) 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci#define I_FD_SFT 6 6362306a36Sopenharmony_ci#define MIPSInst_FD(x) ((MIPSInst(x) & 0x000007c0) >> I_FD_SFT) 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define I_FR_SFT 21 6662306a36Sopenharmony_ci#define MIPSInst_FR(x) ((MIPSInst(x) & 0x03e00000) >> I_FR_SFT) 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci#define I_FMA_FUNC_SFT 3 6962306a36Sopenharmony_ci#define MIPSInst_FMA_FUNC(x) ((MIPSInst(x) & 0x00000038) >> I_FMA_FUNC_SFT) 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci#define I_FMA_FFMT_SFT 0 7262306a36Sopenharmony_ci#define MIPSInst_FMA_FFMT(x) (MIPSInst(x) & 0x00000007) 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_citypedef unsigned int mips_instruction; 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci/* microMIPS instruction decode structure. Do NOT export!!! */ 7762306a36Sopenharmony_cistruct mm_decoded_insn { 7862306a36Sopenharmony_ci mips_instruction insn; 7962306a36Sopenharmony_ci mips_instruction next_insn; 8062306a36Sopenharmony_ci int pc_inc; 8162306a36Sopenharmony_ci int next_pc_inc; 8262306a36Sopenharmony_ci int micro_mips_mode; 8362306a36Sopenharmony_ci}; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci/* Recode table from 16-bit register notation to 32-bit GPR. Do NOT export!!! */ 8662306a36Sopenharmony_ciextern const int reg16to32[]; 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci#endif /* _ASM_INST_H */ 89