--- zzzz-none-000/linux-2.6.32.61/arch/mips/include/asm/inst.h 2013-06-10 09:43:48.000000000 +0000 +++ ar10-7272-687/linux-2.6.32.61/arch/mips/include/asm/inst.h 2011-07-20 07:23:51.000000000 +0000 @@ -72,12 +72,26 @@ enum spec3_op { ext_op, dextm_op, dextu_op, dext_op, ins_op, dinsm_op, dinsu_op, dins_op, + lxx_op = 0x0A, + insv_op = 0x0C, + adduqb_op = 0x10, cmpueqb_op, absqsph_op, shllqb_op, bshfl_op = 0x20, dbshfl_op = 0x24, + extrwph_op = 0x38, rdhwr_op = 0x3b }; /* + * func field of lx opcode. + */ +enum lx_op { + lwx_op = 0, + lhx_op = 4, + lbux_op = 6 +}; + + +/* * rt field of bcond opcodes. */ enum rt_op { @@ -218,6 +232,23 @@ unsigned int func : 6; }; +struct sp3_format { /* special-3 format */ + unsigned int opcode : 6; + unsigned int rs : 5; + unsigned int rt : 5; + unsigned int offset : 10; + unsigned int sp3_opcode : 6; +}; + +struct lx_format { /* LX format */ + unsigned int opcode : 6; + unsigned int base : 5; + unsigned int index : 5; + unsigned int rd: 5; + unsigned int lx_opcode : 5; + unsigned int sp3_opcode : 6; +}; + struct p_format { /* Performance counter format (R10000) */ unsigned int opcode : 6; unsigned int rs : 5; @@ -285,6 +316,23 @@ unsigned int opcode : 6; }; +struct sp3_format { /* special-3 format */ + unsigned int sp3_opcode : 6; + unsigned int offset : 10; + unsigned int rt : 5; + unsigned int rs : 5; + unsigned int opcode : 6; +}; + +struct lx_format { /* LX format */ + unsigned int sp3_opcode : 6; + unsigned int lx_opcode : 5; + unsigned int rd: 5; + unsigned int index : 5; + unsigned int base : 5; + unsigned int opcode : 6; +}; + struct p_format { /* Performance counter format (R10000) */ unsigned int func : 6; unsigned int re : 5; @@ -328,7 +376,9 @@ struct c_format c_format; struct r_format r_format; struct f_format f_format; - struct ma_format ma_format; + struct ma_format ma_format; + struct sp3_format sp3_format; + struct lx_format lx_format; }; /* HACHACHAHCAHC ... */