diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-02 07:44:16 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-02 07:44:16 -0800 | 
| commit | aebb2afd5420c860b7fbc3882a323ef1247fbf16 (patch) | |
| tree | 05ee0efcebca5ec421de44de7a6d6271088c64a8 /arch/mips/include/asm/inst.h | |
| parent | 8eae508b7c6ff502a71d0293b69e97c5505d5840 (diff) | |
| parent | edb15d83a875a1f4b1576188844db5c330c3267d (diff) | |
| download | olio-linux-3.10-aebb2afd5420c860b7fbc3882a323ef1247fbf16.tar.xz olio-linux-3.10-aebb2afd5420c860b7fbc3882a323ef1247fbf16.zip  | |
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS updates from Ralf Baechle:
 o Add basic support for the Mediatek/Ralink Wireless SoC family.
 o The Qualcomm Atheros platform is extended by support for the new
   QCA955X SoC series as well as a bunch of patches that get the code
   ready for OF support.
 o Lantiq and BCM47XX platform have a few improvements and bug fixes.
 o MIPS has sent a few patches that get the kernel ready for the
   upcoming microMIPS support.
 o The rest of the series is made up of small bug fixes and cleanups
   that relate to various parts of the MIPS code.  The biggy in there is
   a whitespace cleanup.  After I was sent another set of whitespace
   cleanup patches I decided it was the time to clean the whitespace
   "issues" for once and and that touches many files below arch/mips/.
Fix up silly conflicts, mostly due to whitespace cleanups.
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (105 commits)
  MIPS: Quit exporting kernel internel break codes to uapi/asm/break.h
  MIPS: remove broken conditional inside vpe loader code
  MIPS: SMTC: fix implicit declaration of set_vi_handler
  MIPS: early_printk: drop __init annotations
  MIPS: Probe for and report hardware virtualization support.
  MIPS: ath79: add support for the Qualcomm Atheros AP136-010 board
  MIPS: ath79: add USB controller registration code for the QCA955X SoCs
  MIPS: ath79: add PCI controller registration code for the QCA955X SoCs
  MIPS: ath79: add WMAC registration code for the QCA955X SoCs
  MIPS: ath79: register UART for the QCA955X SoCs
  MIPS: ath79: add QCA955X specific glue to ath79_device_reset_{set, clear}
  MIPS: ath79: add GPIO setup code for the QCA955X SoCs
  MIPS: ath79: add IRQ handling code for the QCA955X SoCs
  MIPS: ath79: add clock setup code for the QCA955X SoCs
  MIPS: ath79: add SoC detection code for the QCA955X SoCs
  MIPS: ath79: add early printk support for the QCA955X SoCs
  MIPS: ath79: fix WMAC IRQ resource assignment
  mips: reserve elfcorehdr
  mips: Make sure kernel memory is in iomem
  MIPS: ath79: use dynamically allocated USB platform devices
  ...
Diffstat (limited to 'arch/mips/include/asm/inst.h')
| -rw-r--r-- | arch/mips/include/asm/inst.h | 348 | 
1 files changed, 1 insertions, 347 deletions
diff --git a/arch/mips/include/asm/inst.h b/arch/mips/include/asm/inst.h index 33c34adbecf..f1eadf76407 100644 --- a/arch/mips/include/asm/inst.h +++ b/arch/mips/include/asm/inst.h @@ -11,353 +11,7 @@  #ifndef _ASM_INST_H  #define _ASM_INST_H -/* - * Major opcodes; before MIPS IV cop1x was called cop3. - */ -enum major_op { -	spec_op, bcond_op, j_op, jal_op, -	beq_op, bne_op, blez_op, bgtz_op, -	addi_op, addiu_op, slti_op, sltiu_op, -	andi_op, ori_op, xori_op, lui_op, -	cop0_op, cop1_op, cop2_op, cop1x_op, -	beql_op, bnel_op, blezl_op, bgtzl_op, -	daddi_op, daddiu_op, ldl_op, ldr_op, -	spec2_op, jalx_op, mdmx_op, spec3_op, -	lb_op, lh_op, lwl_op, lw_op, -	lbu_op, lhu_op, lwr_op, lwu_op, -	sb_op, sh_op, swl_op, sw_op, -	sdl_op, sdr_op, swr_op, cache_op, -	ll_op, lwc1_op, lwc2_op, pref_op, -	lld_op, ldc1_op, ldc2_op, ld_op, -	sc_op, swc1_op, swc2_op, major_3b_op, -	scd_op, sdc1_op, sdc2_op, sd_op -}; - -/* - * func field of spec opcode. - */ -enum spec_op { -	sll_op, movc_op, srl_op, sra_op, -	sllv_op, pmon_op, srlv_op, srav_op, -	jr_op, jalr_op, movz_op, movn_op, -	syscall_op, break_op, spim_op, sync_op, -	mfhi_op, mthi_op, mflo_op, mtlo_op, -	dsllv_op, spec2_unused_op, dsrlv_op, dsrav_op, -	mult_op, multu_op, div_op, divu_op, -	dmult_op, dmultu_op, ddiv_op, ddivu_op, -	add_op, addu_op, sub_op, subu_op, -	and_op, or_op, xor_op, nor_op, -	spec3_unused_op, spec4_unused_op, slt_op, sltu_op, -	dadd_op, daddu_op, dsub_op, dsubu_op, -	tge_op, tgeu_op, tlt_op, tltu_op, -	teq_op, spec5_unused_op, tne_op, spec6_unused_op, -	dsll_op, spec7_unused_op, dsrl_op, dsra_op, -	dsll32_op, spec8_unused_op, dsrl32_op, dsra32_op -}; - -/* - * func field of spec2 opcode. - */ -enum spec2_op { -	madd_op, maddu_op, mul_op, spec2_3_unused_op, -	msub_op, msubu_op, /* more unused ops */ -	clz_op = 0x20, clo_op, -	dclz_op = 0x24, dclo_op, -	sdbpp_op = 0x3f -}; - -/* - * func field of spec3 opcode. - */ -enum spec3_op { -	ext_op, dextm_op, dextu_op, dext_op, -	ins_op, dinsm_op, dinsu_op, dins_op, -	lx_op = 0x0a, -	bshfl_op = 0x20, -	dbshfl_op = 0x24, -	rdhwr_op = 0x3b -}; - -/* - * rt field of bcond opcodes. - */ -enum rt_op { -	bltz_op, bgez_op, bltzl_op, bgezl_op, -	spimi_op, unused_rt_op_0x05, unused_rt_op_0x06, unused_rt_op_0x07, -	tgei_op, tgeiu_op, tlti_op, tltiu_op, -	teqi_op, unused_0x0d_rt_op, tnei_op, unused_0x0f_rt_op, -	bltzal_op, bgezal_op, bltzall_op, bgezall_op, -	rt_op_0x14, rt_op_0x15, rt_op_0x16, rt_op_0x17, -	rt_op_0x18, rt_op_0x19, rt_op_0x1a, rt_op_0x1b, -	bposge32_op, rt_op_0x1d, rt_op_0x1e, rt_op_0x1f -}; - -/* - * rs field of cop opcodes. - */ -enum cop_op { -	mfc_op        = 0x00, dmfc_op       = 0x01, -	cfc_op        = 0x02, mtc_op        = 0x04, -	dmtc_op       = 0x05, ctc_op        = 0x06, -	bc_op         = 0x08, cop_op        = 0x10, -	copm_op       = 0x18 -}; - -/* - * rt field of cop.bc_op opcodes - */ -enum bcop_op { -	bcf_op, bct_op, bcfl_op, bctl_op -}; - -/* - * func field of cop0 coi opcodes. - */ -enum cop0_coi_func { -	tlbr_op       = 0x01, tlbwi_op      = 0x02, -	tlbwr_op      = 0x06, tlbp_op       = 0x08, -	rfe_op        = 0x10, eret_op       = 0x18 -}; - -/* - * func field of cop0 com opcodes. - */ -enum cop0_com_func { -	tlbr1_op      = 0x01, tlbw_op       = 0x02, -	tlbp1_op      = 0x08, dctr_op       = 0x09, -	dctw_op       = 0x0a -}; - -/* - * fmt field of cop1 opcodes. - */ -enum cop1_fmt { -	s_fmt, d_fmt, e_fmt, q_fmt, -	w_fmt, l_fmt -}; - -/* - * func field of cop1 instructions using d, s or w format. - */ -enum cop1_sdw_func { -	fadd_op      =  0x00, fsub_op      =  0x01, -	fmul_op      =  0x02, fdiv_op      =  0x03, -	fsqrt_op     =  0x04, fabs_op      =  0x05, -	fmov_op      =  0x06, fneg_op      =  0x07, -	froundl_op   =  0x08, ftruncl_op   =  0x09, -	fceill_op    =  0x0a, ffloorl_op   =  0x0b, -	fround_op    =  0x0c, ftrunc_op    =  0x0d, -	fceil_op     =  0x0e, ffloor_op    =  0x0f, -	fmovc_op     =  0x11, fmovz_op     =  0x12, -	fmovn_op     =  0x13, frecip_op    =  0x15, -	frsqrt_op    =  0x16, fcvts_op     =  0x20, -	fcvtd_op     =  0x21, fcvte_op     =  0x22, -	fcvtw_op     =  0x24, fcvtl_op     =  0x25, -	fcmp_op      =  0x30 -}; - -/* - * func field of cop1x opcodes (MIPS IV). - */ -enum cop1x_func { -	lwxc1_op     =  0x00, ldxc1_op     =  0x01, -	pfetch_op    =  0x07, swxc1_op     =  0x08, -	sdxc1_op     =  0x09, madd_s_op    =  0x20, -	madd_d_op    =  0x21, madd_e_op    =  0x22, -	msub_s_op    =  0x28, msub_d_op    =  0x29, -	msub_e_op    =  0x2a, nmadd_s_op   =  0x30, -	nmadd_d_op   =  0x31, nmadd_e_op   =  0x32, -	nmsub_s_op   =  0x38, nmsub_d_op   =  0x39, -	nmsub_e_op   =  0x3a -}; - -/* - * func field for mad opcodes (MIPS IV). - */ -enum mad_func { -	madd_fp_op      = 0x08, msub_fp_op      = 0x0a, -	nmadd_fp_op     = 0x0c, nmsub_fp_op     = 0x0e -}; - -/* - * func field for special3 lx opcodes (Cavium Octeon). - */ -enum lx_func { -	lwx_op	= 0x00, -	lhx_op	= 0x04, -	lbux_op	= 0x06, -	ldx_op	= 0x08, -	lwux_op	= 0x10, -	lhux_op	= 0x14, -	lbx_op	= 0x16, -}; - -/* - * Damn ...  bitfields depend from byteorder :-( - */ -#ifdef __MIPSEB__ -struct j_format {	/* Jump format */ -	unsigned int opcode : 6; -	unsigned int target : 26; -}; - -struct i_format {	/* Immediate format (addi, lw, ...) */ -	unsigned int opcode : 6; -	unsigned int rs : 5; -	unsigned int rt : 5; -	signed int simmediate : 16; -}; - -struct u_format {	/* Unsigned immediate format (ori, xori, ...) */ -	unsigned int opcode : 6; -	unsigned int rs : 5; -	unsigned int rt : 5; -	unsigned int uimmediate : 16; -}; - -struct c_format {	/* Cache (>= R6000) format */ -	unsigned int opcode : 6; -	unsigned int rs : 5; -	unsigned int c_op : 3; -	unsigned int cache : 2; -	unsigned int simmediate : 16; -}; - -struct r_format {	/* Register format */ -	unsigned int opcode : 6; -	unsigned int rs : 5; -	unsigned int rt : 5; -	unsigned int rd : 5; -	unsigned int re : 5; -	unsigned int func : 6; -}; - -struct p_format {	/* Performance counter format (R10000) */ -	unsigned int opcode : 6; -	unsigned int rs : 5; -	unsigned int rt : 5; -	unsigned int rd : 5; -	unsigned int re : 5; -	unsigned int func : 6; -}; - -struct f_format {	/* FPU register format */ -	unsigned int opcode : 6; -	unsigned int : 1; -	unsigned int fmt : 4; -	unsigned int rt : 5; -	unsigned int rd : 5; -	unsigned int re : 5; -	unsigned int func : 6; -}; - -struct ma_format {	/* FPU multiply and add format (MIPS IV) */ -	unsigned int opcode : 6; -	unsigned int fr : 5; -	unsigned int ft : 5; -	unsigned int fs : 5; -	unsigned int fd : 5; -	unsigned int func : 4; -	unsigned int fmt : 2; -}; - -struct b_format { /* BREAK and SYSCALL */ -	unsigned int opcode:6; -	unsigned int code:20; -	unsigned int func:6; -}; - -#elif defined(__MIPSEL__) - -struct j_format {	/* Jump format */ -	unsigned int target : 26; -	unsigned int opcode : 6; -}; - -struct i_format {	/* Immediate format */ -	signed int simmediate : 16; -	unsigned int rt : 5; -	unsigned int rs : 5; -	unsigned int opcode : 6; -}; - -struct u_format {	/* Unsigned immediate format */ -	unsigned int uimmediate : 16; -	unsigned int rt : 5; -	unsigned int rs : 5; -	unsigned int opcode : 6; -}; - -struct c_format {	/* Cache (>= R6000) format */ -	unsigned int simmediate : 16; -	unsigned int cache : 2; -	unsigned int c_op : 3; -	unsigned int rs : 5; -	unsigned int opcode : 6; -}; - -struct r_format {	/* Register format */ -	unsigned int func : 6; -	unsigned int re : 5; -	unsigned int rd : 5; -	unsigned int rt : 5; -	unsigned int rs : 5; -	unsigned int opcode : 6; -}; - -struct p_format {	/* Performance counter format (R10000) */ -	unsigned int func : 6; -	unsigned int re : 5; -	unsigned int rd : 5; -	unsigned int rt : 5; -	unsigned int rs : 5; -	unsigned int opcode : 6; -}; - -struct f_format {	/* FPU register format */ -	unsigned int func : 6; -	unsigned int re : 5; -	unsigned int rd : 5; -	unsigned int rt : 5; -	unsigned int fmt : 4; -	unsigned int : 1; -	unsigned int opcode : 6; -}; - -struct ma_format {	/* FPU multiply and add format (MIPS IV) */ -	unsigned int fmt : 2; -	unsigned int func : 4; -	unsigned int fd : 5; -	unsigned int fs : 5; -	unsigned int ft : 5; -	unsigned int fr : 5; -	unsigned int opcode : 6; -}; - -struct b_format { /* BREAK and SYSCALL */ -	unsigned int func:6; -	unsigned int code:20; -	unsigned int opcode:6; -}; - -#else /* !defined (__MIPSEB__) && !defined (__MIPSEL__) */ -#error "MIPS but neither __MIPSEL__ nor __MIPSEB__?" -#endif - -union mips_instruction { -	unsigned int word; -	unsigned short halfword[2]; -	unsigned char byte[4]; -	struct j_format j_format; -	struct i_format i_format; -	struct u_format u_format; -	struct c_format c_format; -	struct r_format r_format; -	struct p_format p_format; -	struct f_format f_format; -	struct ma_format ma_format; -	struct b_format b_format; -}; +#include <uapi/asm/inst.h>  /* HACHACHAHCAHC ...  */  |