CR16C: tcg code cleanup
This commit is contained in:
parent
7a155e70f7
commit
361b5a2c43
5 changed files with 563 additions and 856 deletions
|
|
@ -19,7 +19,7 @@ static void sc14450_realize(DeviceState* dev, Error** errp)
|
|||
object_initialize_child(OBJECT(dev), "cpu", &s->cpu, mc->cpu_type);
|
||||
object_property_set_bool(OBJECT(&s->cpu), "realized", true, &error_abort);
|
||||
|
||||
memory_region_init_rom(&s->flash, OBJECT(dev), "flash", mc->flash_size, &error_fatal);
|
||||
memory_region_init_ram(&s->flash, OBJECT(dev), "flash", mc->flash_size, &error_fatal);
|
||||
memory_region_add_subregion(get_system_memory(), 0, &s->flash);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,139 +1,181 @@
|
|||
%param84_dest 56:4 48:4
|
||||
%load_u16 !function=load_u16
|
||||
%u4_load_s16 52:4 !function=u4_load_s16
|
||||
%load_u16 !function=load_u16
|
||||
|
||||
@escape2_opc .... .... .... .... .... rd:4 rs1:4 rs2:4
|
||||
@escape2_dc .... .... .... .... .... .... rs:4 rd:4
|
||||
|
||||
@param34 .... .... . imm:3 rd:4
|
||||
|
||||
@param4 .... .... .... imm:4
|
||||
@param4_20 .... .... rd:4 imm:20
|
||||
|
||||
@param44 .... .... rs:4 rd:4
|
||||
@param44_imm .... .... imm:4 rd:4
|
||||
@param44_cmp_imm .... .... imm:4 rs:4
|
||||
@param44_cmp .... .... rs2:4 rs1:4
|
||||
@param44_count .... .... rc:4 rd:4
|
||||
|
||||
@param54 .... ... imm:5 rd:4
|
||||
@param84 .... .... cond:4 .... dest=%param84_dest
|
||||
|
||||
@param4_32 .... .... .... rd:4 imm:32
|
||||
|
||||
### Moves ###
|
||||
MOVB_imm4_16 0101 1000 .... .... @param44_imm
|
||||
MOVB_reg 0101 1001 .... .... @param44
|
||||
MOVD_imm20 0000 0101 .... .... .... .... .... .... @param4_20
|
||||
MOVD_imm32 0000 0000 0111 .... .... .... .... .... .... .... .... .... @param4_32
|
||||
MOVD_imm4_16 0101 0100 .... .... @param44_imm
|
||||
MOVD_reg 0101 0101 .... .... @param44
|
||||
MOVW_imm4_16 0101 1010 .... .... @param44_imm
|
||||
MOVW_reg 0101 1011 .... .... @param44
|
||||
MOVXB 0101 1100 .... .... @param44
|
||||
MOVXW 0101 1110 .... .... @param44
|
||||
MOVZB 0101 1101 .... .... @param44
|
||||
MOVZW 0101 1111 .... .... @param44
|
||||
|
||||
&mov_imm rd imm width
|
||||
&mov_reg rd rs width
|
||||
|
||||
@mov_imm4 .... .... .... rd:4 imm=%u4_load_s16 &mov_imm
|
||||
@mov_imm32 .... .... .... rd:4 imm:32 &mov_imm
|
||||
@mov_imm20 .... .... rd:4 imm:20 &mov_imm
|
||||
@mov_reg .... .... rs:4 rd:4 &mov_reg
|
||||
@mov_d_xz .... .... rs:4 rd:4
|
||||
|
||||
MOV_imm 0101 1000 .... .... @mov_imm4 width=1
|
||||
MOV_reg 0101 1001 .... .... @mov_reg width=1
|
||||
MOV_imm 0000 0101 .... .... .... .... .... .... @mov_imm20 width=4
|
||||
MOV_imm 0000 0000 0111 .... .... .... .... .... .... .... .... .... @mov_imm32 width=4
|
||||
MOV_imm 0101 0100 .... .... @mov_imm4 width=4
|
||||
MOVD_reg 0101 0101 .... .... @mov_d_xz
|
||||
MOV_imm 0101 1010 .... .... @mov_imm4 width=2
|
||||
MOV_reg 0101 1011 .... .... @mov_reg width=2
|
||||
MOVXB 0101 1100 .... .... @mov_d_xz
|
||||
MOVXW 0101 1110 .... .... @mov_d_xz
|
||||
MOVZB 0101 1101 .... .... @mov_d_xz
|
||||
MOVZW 0101 1111 .... .... @mov_d_xz
|
||||
|
||||
|
||||
### Integer Arithmetic ###
|
||||
ADDB_imm4_16 0011 0000 .... .... @param44_imm
|
||||
ADDB_reg 0011 0001 .... .... @param44
|
||||
ADDCB_imm4_16 0011 0100 .... .... @param44_imm
|
||||
ADDCB_reg 0011 0101 .... .... @param44
|
||||
ADDCW_imm4_16 0011 0110 .... .... @param44_imm
|
||||
ADDCW_reg 0011 0111 .... .... @param44
|
||||
ADDD_imm20 0000 0100 .... .... .... .... .... .... @param4_20
|
||||
ADDD_imm32 0000 0000 0010 .... .... .... .... .... .... .... .... .... @param4_32
|
||||
ADDD_imm4_16 0110 0000 .... .... @param44_imm
|
||||
ADDD_rp 0110 0001 .... .... @param44
|
||||
ADDUB_imm4_16 0010 1100 .... .... @param44_imm
|
||||
ADDUB_reg 0010 1101 .... .... @param44
|
||||
ADDUW_imm4_16 0010 1110 .... .... @param44_imm
|
||||
ADDUW_reg 0010 1111 .... .... @param44
|
||||
ADDW_imm4_16 0011 0010 .... .... @param44_imm
|
||||
ADDW_reg 0011 0011 .... .... @param44
|
||||
MACQW 0000 0000 0001 0100 1101 .... .... .... @escape2_opc
|
||||
MACUW 0000 0000 0001 0100 1110 .... .... .... @escape2_opc
|
||||
MACSW 0000 0000 0001 0100 1111 .... .... .... @escape2_opc
|
||||
MULB_imm4_16 0110 0100 .... .... @param44_imm
|
||||
MULB_reg 0110 0101 .... .... @param44
|
||||
MULSB_reg 0000 1011 .... .... @param44
|
||||
MULSW_reg 0110 0010 .... .... @param44
|
||||
MULUW_reg 0110 0011 .... .... @param44
|
||||
MULW_imm4_16 0110 0110 .... .... @param44_imm
|
||||
MULW_reg 0110 0111 .... .... @param44
|
||||
SUBB_imm4_16 0011 1000 .... .... @param44_imm
|
||||
SUBB_reg 0011 1001 .... .... @param44
|
||||
SUBCB_imm4_16 0011 1100 .... .... @param44_imm
|
||||
SUBCB_reg 0011 1101 .... .... @param44
|
||||
SUBCW_imm4_16 0011 1110 .... .... @param44_imm
|
||||
SUBCW_reg 0011 1111 .... .... @param44
|
||||
SUBD_reg 0000 0000 0001 0100 1100 0000 .... .... @escape2_dc
|
||||
SUBD_imm32 0000 0000 0011 .... .... .... .... .... .... .... .... .... @param4_32
|
||||
SUBW_imm4_16 0011 1010 .... .... @param44_imm
|
||||
SUBW_reg 0011 1011 .... .... @param44
|
||||
|
||||
&arith_imm rd imm add_carry width
|
||||
&arith_reg rd rs add_carry width
|
||||
&mul_imm rd imm width
|
||||
|
||||
@arith_imm .... .... .... rd:4 imm=%u4_load_s16 &arith_imm
|
||||
@arith_imm_todo .... .... .... rd:4 imm=%u4_load_s16
|
||||
@arith_imm20 .... .... rd:4 imm:20
|
||||
@arith_imm32 .... .... .... rd:4 imm:s32
|
||||
@arith_reg .... .... rs:4 rd:4 &arith_reg
|
||||
@addd_rp .... .... rs:4 rd:4
|
||||
@subd_rp .... .... .... .... .... .... rs:4 rd:4
|
||||
@mul_imm .... .... .... rd:4 imm=%u4_load_s16 &mul_imm
|
||||
@mul_reg .... .... rs:4 rd:4
|
||||
@mac .... .... .... .... .... rd:4 rs1:4 rs2:4
|
||||
|
||||
ADD_imm 0011 0000 .... .... @arith_imm width=1 add_carry=0
|
||||
ADD_reg 0011 0001 .... .... @arith_reg width=1 add_carry=0
|
||||
ADD_imm 0011 0100 .... .... @arith_imm width=1 add_carry=1
|
||||
ADD_reg 0011 0101 .... .... @arith_reg width=1 add_carry=1
|
||||
ADD_imm 0011 0110 .... .... @arith_imm width=2 add_carry=1
|
||||
ADD_reg 0011 0111 .... .... @arith_reg width=2 add_carry=1
|
||||
ADDD_imm 0000 0100 .... .... .... .... .... .... @arith_imm20
|
||||
ADDD_imm 0000 0000 0010 .... .... .... .... .... .... .... .... .... @arith_imm32
|
||||
ADDD_imm 0110 0000 .... .... @arith_imm_todo
|
||||
ADDD_rp 0110 0001 .... .... @addd_rp
|
||||
ADDU_imm 0010 1100 .... .... @arith_imm width=1 add_carry=0
|
||||
ADDU_reg 0010 1101 .... .... @arith_reg width=1 add_carry=0
|
||||
ADDU_imm 0010 1110 .... .... @arith_imm width=2 add_carry=0
|
||||
ADDU_reg 0010 1111 .... .... @arith_reg width=2 add_carry=0
|
||||
ADD_imm 0011 0010 .... .... @arith_imm width=2 add_carry=0
|
||||
ADD_reg 0011 0011 .... .... @arith_reg width=2 add_carry=0
|
||||
SUB_imm 0011 1000 .... .... @arith_imm width=1 add_carry=0
|
||||
SUB_reg 0011 1001 .... .... @arith_reg width=1 add_carry=0
|
||||
SUB_imm 0011 1100 .... .... @arith_imm width=1 add_carry=1
|
||||
SUB_reg 0011 1101 .... .... @arith_reg width=1 add_carry=1
|
||||
SUB_imm 0011 1110 .... .... @arith_imm width=2 add_carry=1
|
||||
SUB_reg 0011 1111 .... .... @arith_reg width=2 add_carry=1
|
||||
SUBD_rp 0000 0000 0001 0100 1100 0000 .... .... @subd_rp
|
||||
SUBD_imm 0000 0000 0011 .... .... .... .... .... .... .... .... .... @arith_imm32
|
||||
SUB_imm 0011 1010 .... .... @arith_imm width=2 add_carry=0
|
||||
SUB_reg 0011 1011 .... .... @arith_reg width=2 add_carry=0
|
||||
MUL_imm 0110 0100 .... .... @mul_imm width=1
|
||||
MULB_reg 0110 0101 .... .... @mul_reg
|
||||
MULSB_reg 0000 1011 .... .... @mul_reg
|
||||
MULSW_reg 0110 0010 .... .... @mul_reg
|
||||
MULUW_reg 0110 0011 .... .... @mul_reg
|
||||
MUL_imm 0110 0110 .... .... @mul_imm width=2
|
||||
MULW_reg 0110 0111 .... .... @mul_reg
|
||||
MACQW 0000 0000 0001 0100 1101 .... .... .... @mac
|
||||
MACUW 0000 0000 0001 0100 1110 .... .... .... @mac
|
||||
MACSW 0000 0000 0001 0100 1111 .... .... .... @mac
|
||||
|
||||
|
||||
### Integer Comparison
|
||||
CMPB_imm4_16 0101 0000 .... .... @param44_cmp_imm
|
||||
CMPB_reg 0101 0001 .... .... @param44_cmp
|
||||
CMPD_imm32 0000 0000 1001 .... .... .... .... .... .... .... .... .... @param4_32
|
||||
CMPD_imm4_16 0101 0110 .... .... @param44_cmp_imm
|
||||
CMPD_reg 0101 0111 .... .... @param44_cmp
|
||||
CMPW_imm4_16 0101 0010 .... .... @param44_cmp_imm
|
||||
CMPW_reg 0101 0011 .... .... @param44_cmp
|
||||
&cmp_imm rs imm width
|
||||
&cmp_reg rs1 rs2 width
|
||||
|
||||
@cmp_imm .... .... .... rs:4 &cmp_imm imm=%u4_load_s16
|
||||
@cmp_reg .... .... rs2:4 rs1:4 &cmp_reg
|
||||
@cmp_imm32 .... .... .... rs:4 imm:s32 &cmp_imm
|
||||
@cmpd_reg .... .... rs2:4 rs1:4
|
||||
|
||||
CMP_imm 0101 0000 .... .... @cmp_imm width=1
|
||||
CMP_reg 0101 0001 .... .... @cmp_reg width=1
|
||||
CMP_imm 0101 0010 .... .... @cmp_imm width=2
|
||||
CMP_reg 0101 0011 .... .... @cmp_reg width=2
|
||||
CMP_imm 0000 0000 1001 .... .... .... .... .... .... .... .... .... @cmp_imm32 width=4
|
||||
CMP_imm 0101 0110 .... .... @cmp_imm width=4
|
||||
CMPD_reg 0101 0111 .... .... @cmpd_reg
|
||||
|
||||
|
||||
### Logical and Boolean
|
||||
ANDB_imm4_16 0010 0000 .... .... @param44_imm
|
||||
ANDB_reg 0010 0001 .... .... @param44
|
||||
ANDW_imm4_16 0010 0010 .... .... @param44_imm
|
||||
ANDW_reg 0010 0011 .... .... @param44
|
||||
ANDD_imm32 0000 0000 0100 .... .... .... .... .... .... .... .... .... @param4_32
|
||||
ANDD_rp 0000 0000 0001 0100 1011 ---- .... .... @escape2_dc
|
||||
ORB_imm4_16 0010 0100 .... .... @param44_imm
|
||||
ORB_reg 0010 0101 .... .... @param44
|
||||
ORW_imm4_16 0010 0110 .... .... @param44_imm
|
||||
ORW_reg 0010 0111 .... .... @param44
|
||||
ORD_imm32 0000 0000 0101 .... .... .... .... .... .... .... .... .... @param4_32
|
||||
ORD_rp 0000 0000 0001 0100 1001 ---- .... .... @escape2_dc
|
||||
SCOND 0000 1000 .... .... @param44_imm
|
||||
XORB_imm4_16 0010 1000 .... .... @param44_imm
|
||||
XORB_reg 0010 1001 .... .... @param44
|
||||
XORW_imm4_16 0010 1010 .... .... @param44_imm
|
||||
XORW_reg 0010 1011 .... .... @param44
|
||||
XORD_imm32 0000 0000 0110 .... .... .... .... .... .... .... .... .... @param4_32
|
||||
XORD_rp 0000 0000 0001 0100 1010 ---- .... .... @escape2_dc
|
||||
&logical_imm rd imm width
|
||||
&logical_reg rd rs width
|
||||
|
||||
@logical_imm .... .... .... rd:4 imm=%u4_load_s16 &logical_imm
|
||||
@logical_reg .... .... rs:4 rd:4 &logical_reg
|
||||
@logical_dword_rp .... .... .... .... .... .... rs:4 rd:4
|
||||
|
||||
AND_imm 0010 0000 .... .... @logical_imm width=1
|
||||
AND_reg 0010 0001 .... .... @logical_reg width=1
|
||||
AND_imm 0010 0010 .... .... @logical_imm width=2
|
||||
AND_reg 0010 0011 .... .... @logical_reg width=2
|
||||
ANDD_imm 0000 0000 0100 .... .... .... .... .... .... .... .... .... @arith_imm32
|
||||
ANDD_rp 0000 0000 0001 0100 1011 ---- .... .... @logical_dword_rp
|
||||
OR_imm 0010 0100 .... .... @logical_imm width=1
|
||||
OR_reg 0010 0101 .... .... @logical_reg width=1
|
||||
OR_imm 0010 0110 .... .... @logical_imm width=2
|
||||
OR_reg 0010 0111 .... .... @logical_reg width=2
|
||||
ORD_imm 0000 0000 0101 .... .... .... .... .... .... .... .... .... @arith_imm32
|
||||
ORD_rp 0000 0000 0001 0100 1001 ---- .... .... @logical_dword_rp
|
||||
XOR_imm 0010 1000 .... .... @logical_imm width=1
|
||||
XOR_reg 0010 1001 .... .... @logical_reg width=1
|
||||
XOR_imm 0010 1010 .... .... @logical_imm width=2
|
||||
XOR_reg 0010 1011 .... .... @logical_reg width=2
|
||||
XORD_imm 0000 0000 0110 .... .... .... .... .... .... .... .... .... @arith_imm32
|
||||
XORD_rp 0000 0000 0001 0100 1010 ---- .... .... @logical_dword_rp
|
||||
SCOND 0000 1000 imm:4 rd:4
|
||||
|
||||
|
||||
### Shifts
|
||||
ASHUB_imm_l 0100 0000 0... .... @param34
|
||||
ASHUB_imm_r 0100 0000 1... .... @param34
|
||||
ASHUB_reg 0100 0001 .... .... @param44_count
|
||||
ASHUD_imm_l 0100 110. .... .... @param54
|
||||
ASHUD_imm_r 0100 111. .... .... @param54
|
||||
ASHUD_rp 0100 1000 .... .... @param44_count
|
||||
ASHUW_imm_l 0100 0010 .... .... @param44_imm
|
||||
ASHUW_imm_r 0100 0011 .... .... @param44_imm
|
||||
ASHUW_reg 0100 0101 .... .... @param44_count
|
||||
LSHB_imm_r 0000 1001 1... .... @param34
|
||||
LSHB_reg 0100 0100 .... .... @param44_count
|
||||
LSHD_imm_r 0100 101. .... .... @param54
|
||||
LSHD_rp 0100 0111 .... .... @param44_count
|
||||
LSHW_imm_r 0100 1001 .... .... @param44_imm
|
||||
LSHW_reg 0100 0110 .... .... @param44_count
|
||||
&shift_imm rd imm width
|
||||
&shift_reg rd rc width
|
||||
|
||||
### Jumps and Linkeage
|
||||
@shift_imm3 .... .... . imm:3 rd:4 &shift_imm
|
||||
@shift_imm4 .... .... imm:4 rd:4 &shift_imm
|
||||
@shift_reg .... .... rc:4 rd:4 &shift_reg
|
||||
@shiftd_rp .... .... rc:4 rd:4
|
||||
@shiftd_imm .... ... imm:5 rd:4
|
||||
|
||||
BRCOND_disp8 0001 .... .... .... @param84
|
||||
ASHU_imm_l 0100 0000 0... .... @shift_imm3 width=1
|
||||
ASHU_imm_r 0100 0000 1... .... @shift_imm3 width=1
|
||||
ASHU_reg 0100 0001 .... .... @shift_reg width=1
|
||||
ASHU_imm_l 0100 0010 .... .... @shift_imm4 width=2
|
||||
ASHU_imm_r 0100 0011 .... .... @shift_imm4 width=2
|
||||
ASHU_reg 0100 0101 .... .... @shift_reg width=2
|
||||
ASHUD_imm_l 0100 110. .... .... @shiftd_imm
|
||||
ASHUD_imm_r 0100 111. .... .... @shiftd_imm
|
||||
ASHUD_rp 0100 1000 .... .... @shiftd_rp
|
||||
LSH_imm_r 0000 1001 1... .... @shift_imm3 width=1
|
||||
LSH_reg 0100 0100 .... .... @shift_reg width=1
|
||||
LSH_imm_r 0100 1001 .... .... @shift_imm4 width=2
|
||||
LSH_reg 0100 0110 .... .... @shift_reg width=2
|
||||
LSHD_imm_r 0100 101. .... .... @shiftd_imm
|
||||
LSHD_rp 0100 0111 .... .... @shiftd_rp
|
||||
|
||||
|
||||
### Jumps and Linkeage ###
|
||||
|
||||
%br_disp8 56:4 48:4 !function=get_disp8
|
||||
|
||||
@br_disp8 .... .... cond:4 .... disp=%br_disp8
|
||||
|
||||
BRCOND_disp8 0001 .... .... .... @br_disp8
|
||||
|
||||
EXCP 0000 0000 1100 id:4
|
||||
|
||||
EXCP 0000 0000 1100 .... @param4
|
||||
|
||||
### Load and Store ###
|
||||
|
||||
%addr_abs20 32:20 !function=reloc_abs20
|
||||
%addr_disp24 40:4 16:16 32:4
|
||||
|
||||
&load rd ra dbase disp word_cnt
|
||||
&load_rrp rd rrp disp word_cnt
|
||||
&load_abs rd addr word_cnt
|
||||
&load_ind_abs rd ri addr word_cnt
|
||||
&load rd ra dbase disp width
|
||||
&load_rrp rd rrp disp width
|
||||
&load_abs rd addr width
|
||||
&load_ind_abs rd ri addr width
|
||||
|
||||
%load_disp20 40:4 16:s16
|
||||
%load_disp14 40:6 46:2 52:2 32:4
|
||||
|
|
@ -151,60 +193,58 @@ EXCP 0000 0000 1100 .... @param4
|
|||
#@load_disp14_rrp .... .... .... rrp:4 .... .... rd:4 .... disp=%load_disp14 &load_rrp
|
||||
|
||||
{
|
||||
LOAD_rrp 1011 1110 rd:4 rrp:4 word_cnt=1 disp=0 &load_rrp
|
||||
LOAD 1011 1111 .... .... @load_disp16_reg word_cnt=1 dbase=1 disp=%load_u16
|
||||
LOAD 1011 .... .... .... @load_disp4_reg word_cnt=1 dbase=1 disp=%load_disp4
|
||||
LOAD_rrp 1011 1110 rd:4 rrp:4 width=1 disp=0 &load_rrp
|
||||
LOAD 1011 1111 .... .... @load_disp16_reg width=1 dbase=1 disp=%load_u16
|
||||
LOAD 1011 .... .... .... @load_disp4_reg width=1 dbase=1 disp=%load_disp4
|
||||
}
|
||||
UNIMPLEMENTED 1000 0110 01-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
||||
LOAD 0000 0000 0001 0010 0100 .... .... .... .... .... .... .... word_cnt=1 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 0100 .... .... .... .... .... .... .... word_cnt=1 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 0010 0101 .... .... .... .... .... .... .... word_cnt=1 dbase=1 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 0101 .... .... .... .... .... .... .... word_cnt=1 dbase=1 @load_disp20_reg
|
||||
LOAD_rrp 0000 0000 0001 0010 0110 .... .... .... .... .... .... .... word_cnt=1 @load_disp20_rrp
|
||||
LOAD_abs 1000 1000 .... .... .... .... .... .... word_cnt=1 @load_abs20
|
||||
LOAD_ind_abs 1000 101. .... .... .... .... .... .... word_cnt=1 @load_ind_abs
|
||||
LOAD_abs 0000 0000 0001 0010 0111 .... .... .... .... .... .... .... word_cnt=1 @load_abs24
|
||||
LOAD 0000 0000 0001 0010 0100 .... .... .... .... .... .... .... width=1 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 0100 .... .... .... .... .... .... .... width=1 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 0010 0101 .... .... .... .... .... .... .... width=1 dbase=1 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 0101 .... .... .... .... .... .... .... width=1 dbase=1 @load_disp20_reg
|
||||
LOAD_rrp 0000 0000 0001 0010 0110 .... .... .... .... .... .... .... width=1 @load_disp20_rrp
|
||||
LOAD_abs 1000 1000 .... .... .... .... .... .... width=1 @load_abs20
|
||||
LOAD_ind_abs 1000 101. .... .... .... .... .... .... width=1 @load_ind_abs
|
||||
LOAD_abs 0000 0000 0001 0010 0111 .... .... .... .... .... .... .... width=1 @load_abs24
|
||||
{
|
||||
LOAD_rrp 1001 1110 rd:4 rrp:4 word_cnt=2 disp=0 &load_rrp
|
||||
LOAD 1001 1111 .... .... @load_disp16_reg word_cnt=2 dbase=1 disp=%load_u16
|
||||
LOAD 1001 .... .... .... @load_disp4_reg word_cnt=2 dbase=1 disp=%load_disp4_shift
|
||||
LOAD_rrp 1001 1110 rd:4 rrp:4 width=2 disp=0 &load_rrp
|
||||
LOAD 1001 1111 .... .... @load_disp16_reg width=2 dbase=1 disp=%load_u16
|
||||
LOAD 1001 .... .... .... @load_disp4_reg width=2 dbase=1 disp=%load_disp4_shift
|
||||
}
|
||||
UNIMPLEMENTED 1000 0110 11-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
||||
LOAD 0000 0000 0001 0010 1100 .... .... .... .... .... .... .... word_cnt=2 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 1100 .... .... .... .... .... .... .... word_cnt=2 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 0010 1101 .... .... .... .... .... .... .... word_cnt=2 dbase=1 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 1101 .... .... .... .... .... .... .... word_cnt=2 dbase=1 @load_disp20_reg
|
||||
LOAD_rrp 0000 0000 0001 0010 1110 .... .... .... .... .... .... .... word_cnt=2 @load_disp20_rrp
|
||||
LOAD_abs 1000 1001 .... .... .... .... .... .... word_cnt=2 @load_abs20
|
||||
LOAD_ind_abs 1000 111. .... .... .... .... .... .... word_cnt=2 @load_ind_abs
|
||||
LOAD_abs 0000 0000 0001 0010 1111 .... .... .... .... .... .... .... word_cnt=2 @load_abs24
|
||||
LOAD 0000 0000 0001 0010 1100 .... .... .... .... .... .... .... width=2 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 1100 .... .... .... .... .... .... .... width=2 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 0010 1101 .... .... .... .... .... .... .... width=2 dbase=1 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 1101 .... .... .... .... .... .... .... width=2 dbase=1 @load_disp20_reg
|
||||
LOAD_rrp 0000 0000 0001 0010 1110 .... .... .... .... .... .... .... width=2 @load_disp20_rrp
|
||||
LOAD_abs 1000 1001 .... .... .... .... .... .... width=2 @load_abs20
|
||||
LOAD_ind_abs 1000 111. .... .... .... .... .... .... width=2 @load_ind_abs
|
||||
LOAD_abs 0000 0000 0001 0010 1111 .... .... .... .... .... .... .... width=2 @load_abs24
|
||||
{
|
||||
LOAD_rrp 1010 1110 rd:4 rrp:4 word_cnt=4 disp=0 &load_rrp
|
||||
LOAD 1010 1111 .... .... @load_disp16_reg word_cnt=4 dbase=1 disp=%load_u16
|
||||
LOAD 1010 .... .... .... @load_disp4_reg word_cnt=4 dbase=1 disp=%load_disp4_shift
|
||||
LOAD_rrp 1010 1110 rd:4 rrp:4 width=4 disp=0 &load_rrp
|
||||
LOAD 1010 1111 .... .... @load_disp16_reg width=4 dbase=1 disp=%load_u16
|
||||
LOAD 1010 .... .... .... @load_disp4_reg width=4 dbase=1 disp=%load_disp4_shift
|
||||
}
|
||||
UNIMPLEMENTED 1000 0110 10-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
||||
LOAD 0000 0000 0001 0010 1000 .... .... .... .... .... .... .... word_cnt=4 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 1000 .... .... .... .... .... .... .... word_cnt=4 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 0010 1001 .... .... .... .... .... .... .... word_cnt=4 dbase=1 @load_disp20_rp
|
||||
LOAD 0000 0000 0001 1000 1001 .... .... .... .... .... .... .... word_cnt=4 dbase=1 @load_disp20_rp
|
||||
LOAD_rrp 0000 0000 0001 0010 1010 .... .... .... .... .... .... .... word_cnt=4 @load_disp20_rrp
|
||||
LOAD_abs 1000 0111 .... .... .... .... .... .... word_cnt=4 @load_abs20
|
||||
LOAD_ind_abs 1000 110. .... .... .... .... .... .... word_cnt=4 @load_ind_abs
|
||||
LOAD_abs 0000 0000 0001 0010 1011 .... .... .... .... .... .... .... word_cnt=4 @load_abs24
|
||||
LOAD 0000 0000 0001 0010 1000 .... .... .... .... .... .... .... width=4 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 1000 1000 .... .... .... .... .... .... .... width=4 dbase=0 @load_disp20_reg
|
||||
LOAD 0000 0000 0001 0010 1001 .... .... .... .... .... .... .... width=4 dbase=1 @load_disp20_rp
|
||||
LOAD 0000 0000 0001 1000 1001 .... .... .... .... .... .... .... width=4 dbase=1 @load_disp20_rp
|
||||
LOAD_rrp 0000 0000 0001 0010 1010 .... .... .... .... .... .... .... width=4 @load_disp20_rrp
|
||||
LOAD_abs 1000 0111 .... .... .... .... .... .... width=4 @load_abs20
|
||||
LOAD_ind_abs 1000 110. .... .... .... .... .... .... width=4 @load_ind_abs
|
||||
LOAD_abs 0000 0000 0001 0010 1011 .... .... .... .... .... .... .... width=4 @load_abs24
|
||||
|
||||
|
||||
&stor rs ra dbase disp word_cnt
|
||||
&stor_rrp rs rrp disp word_cnt
|
||||
&stor_abs rs addr word_cnt
|
||||
&stor_ind_abs rs ri addr word_cnt
|
||||
&stor rs ra dbase disp width
|
||||
&stor_rrp rs rrp disp width
|
||||
&stor_abs rs addr width
|
||||
&stor_ind_abs rs ri addr width
|
||||
|
||||
&stor_imm imm ra dbase disp word_cnt
|
||||
&stor_rrp_imm imm rrp disp word_cnt
|
||||
&stor_abs_imm imm addr word_cnt
|
||||
&stor_abs_rrp_imm imm ri addr word_cnt
|
||||
|
||||
#&storm cnt pair
|
||||
&stor_imm imm ra dbase disp width
|
||||
&stor_rrp_imm imm rrp disp width
|
||||
&stor_abs_imm imm addr width
|
||||
&stor_abs_rrp_imm imm ri addr width
|
||||
|
||||
%stor_disp20 40:s4 16:s16
|
||||
%stor_disp14 40:6 46:2 52:2 32:4
|
||||
|
|
@ -231,65 +271,65 @@ LOAD_abs 0000 0000 0001 0010 1011 .... .... .... .... .... .... ....
|
|||
@stor_abs24_imm .... .... .... .... .... .... imm:4 .... .... .... .... .... addr=%addr_disp24 &stor_abs_imm
|
||||
|
||||
{
|
||||
STOR_rrp 1111 1110 rs:4 rrp:4 word_cnt=1 disp=0 &stor_rrp
|
||||
STOR 1111 1111 .... .... @stor_disp16_reg word_cnt=1 dbase=1 disp=%load_u16
|
||||
STOR 1111 .... .... .... @stor_disp4_reg word_cnt=1 dbase=1 disp=%stor_disp4
|
||||
STOR_rrp 1111 1110 rs:4 rrp:4 width=1 disp=0 &stor_rrp
|
||||
STOR 1111 1111 .... .... @stor_disp16_reg width=1 dbase=1 disp=%load_u16
|
||||
STOR 1111 .... .... .... @stor_disp4_reg width=1 dbase=1 disp=%stor_disp4
|
||||
}
|
||||
UNIMPLEMENTED 1100 0110 01-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
||||
STOR 0000 0000 0001 0011 0100 .... .... .... .... .... .... .... word_cnt=1 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 1001 0100 .... .... .... .... .... .... .... word_cnt=1 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 0011 0101 .... .... .... .... .... .... .... word_cnt=1 dbase=1 @stor_disp20_rp
|
||||
STOR 0000 0000 0001 1001 0101 .... .... .... .... .... .... .... word_cnt=1 dbase=1 @stor_disp20_rp
|
||||
STOR_rrp 0000 0000 0001 0011 0110 .... .... .... .... .... .... .... word_cnt=1 @stor_disp20_rrp
|
||||
STOR_abs 1100 1000 .... .... .... .... .... .... word_cnt=1 @stor_abs20
|
||||
STOR_ind_abs 1100 101. .... .... .... .... .... .... word_cnt=1 @stor_ind_abs
|
||||
STOR_abs 0000 0000 0001 0011 0111 .... .... .... .... .... .... .... word_cnt=1 @stor_abs24
|
||||
STOR_rrp_imm 1000 0110 00.. .... .... .... .... .... word_cnt=1 @stor_disp14_rrp_imm
|
||||
STOR_imm 0000 0000 0001 0010 0000 .... .... .... .... .... .... .... word_cnt=1 dbase=0 @stor_disp20_reg_imm
|
||||
STOR_imm 1000 0010 imm:4 ra:4 word_cnt=1 dbase=1 disp=0 &stor_imm
|
||||
STOR_imm 1000 0011 .... .... word_cnt=1 dbase=0 disp=%load_u16 @stor_disp16_imm
|
||||
STOR_imm 0000 0000 0001 0010 0001 .... .... .... .... .... .... .... word_cnt=1 dbase=1 @stor_disp20_rp_imm
|
||||
STOR_rrp_imm 0000 0000 0001 0010 0010 .... .... .... .... .... .... .... word_cnt=1 @stor_disp20_rrp_imm
|
||||
STOR_abs_imm 1000 0001 .... .... .... .... .... .... word_cnt=1 @stor_abs_imm
|
||||
STOR_abs_rrp_imm 1000 010. .... .... .... .... .... .... word_cnt=1 @stor_abs_rrp_imm
|
||||
STOR_abs_imm 0000 0000 0001 0010 0011 .... .... .... .... .... .... .... word_cnt=1 @stor_abs24_imm
|
||||
STOR 0000 0000 0001 0011 0100 .... .... .... .... .... .... .... width=1 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 1001 0100 .... .... .... .... .... .... .... width=1 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 0011 0101 .... .... .... .... .... .... .... width=1 dbase=1 @stor_disp20_rp
|
||||
STOR 0000 0000 0001 1001 0101 .... .... .... .... .... .... .... width=1 dbase=1 @stor_disp20_rp
|
||||
STOR_rrp 0000 0000 0001 0011 0110 .... .... .... .... .... .... .... width=1 @stor_disp20_rrp
|
||||
STOR_abs 1100 1000 .... .... .... .... .... .... width=1 @stor_abs20
|
||||
STOR_ind_abs 1100 101. .... .... .... .... .... .... width=1 @stor_ind_abs
|
||||
STOR_abs 0000 0000 0001 0011 0111 .... .... .... .... .... .... .... width=1 @stor_abs24
|
||||
STOR_rrp_imm 1000 0110 00.. .... .... .... .... .... width=1 @stor_disp14_rrp_imm
|
||||
STOR_imm 0000 0000 0001 0010 0000 .... .... .... .... .... .... .... width=1 dbase=0 @stor_disp20_reg_imm
|
||||
STOR_imm 1000 0010 imm:4 ra:4 width=1 dbase=1 disp=0 &stor_imm
|
||||
STOR_imm 1000 0011 .... .... width=1 dbase=0 disp=%load_u16 @stor_disp16_imm
|
||||
STOR_imm 0000 0000 0001 0010 0001 .... .... .... .... .... .... .... width=1 dbase=1 @stor_disp20_rp_imm
|
||||
STOR_rrp_imm 0000 0000 0001 0010 0010 .... .... .... .... .... .... .... width=1 @stor_disp20_rrp_imm
|
||||
STOR_abs_imm 1000 0001 .... .... .... .... .... .... width=1 @stor_abs_imm
|
||||
STOR_abs_rrp_imm 1000 010. .... .... .... .... .... .... width=1 @stor_abs_rrp_imm
|
||||
STOR_abs_imm 0000 0000 0001 0010 0011 .... .... .... .... .... .... .... width=1 @stor_abs24_imm
|
||||
{
|
||||
STOR_rrp 1101 1110 rs:4 rrp:4 word_cnt=2 disp=0 &stor_rrp
|
||||
STOR 1101 1111 .... .... @stor_disp16_reg word_cnt=2 dbase=1 disp=%load_u16
|
||||
STOR 1101 .... .... .... @stor_disp4_reg word_cnt=2 dbase=1 disp=%stor_disp4
|
||||
STOR_rrp 1101 1110 rs:4 rrp:4 width=2 disp=0 &stor_rrp
|
||||
STOR 1101 1111 .... .... @stor_disp16_reg width=2 dbase=1 disp=%load_u16
|
||||
STOR 1101 .... .... .... @stor_disp4_reg width=2 dbase=1 disp=%stor_disp4
|
||||
}
|
||||
UNIMPLEMENTED 1100 0110 11-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
||||
STOR 0000 0000 0001 0011 1100 .... .... .... .... .... .... .... word_cnt=2 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 1001 1100 .... .... .... .... .... .... .... word_cnt=2 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 0011 1101 .... .... .... .... .... .... .... word_cnt=2 dbase=1 @stor_disp20_rp
|
||||
STOR 0000 0000 0001 1001 1101 .... .... .... .... .... .... .... word_cnt=2 dbase=1 @stor_disp20_rp
|
||||
STOR_rrp 0000 0000 0001 0011 1110 .... .... .... .... .... .... .... word_cnt=2 @stor_disp20_rrp
|
||||
STOR_abs 1100 1001 .... .... .... .... .... .... word_cnt=2 @stor_abs20
|
||||
STOR_ind_abs 1100 111. .... .... .... .... .... .... word_cnt=2 @stor_ind_abs
|
||||
STOR_abs 0000 0000 0001 0011 1111 .... .... .... .... .... .... .... word_cnt=2 @stor_abs24
|
||||
STOR 0000 0000 0001 0011 1100 .... .... .... .... .... .... .... width=2 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 1001 1100 .... .... .... .... .... .... .... width=2 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 0011 1101 .... .... .... .... .... .... .... width=2 dbase=1 @stor_disp20_rp
|
||||
STOR 0000 0000 0001 1001 1101 .... .... .... .... .... .... .... width=2 dbase=1 @stor_disp20_rp
|
||||
STOR_rrp 0000 0000 0001 0011 1110 .... .... .... .... .... .... .... width=2 @stor_disp20_rrp
|
||||
STOR_abs 1100 1001 .... .... .... .... .... .... width=2 @stor_abs20
|
||||
STOR_ind_abs 1100 111. .... .... .... .... .... .... width=2 @stor_ind_abs
|
||||
STOR_abs 0000 0000 0001 0011 1111 .... .... .... .... .... .... .... width=2 @stor_abs24
|
||||
{
|
||||
STOR_rrp 1110 1110 rs:4 rrp:4 word_cnt=4 disp=0 &stor_rrp
|
||||
STOR 1110 1111 .... .... @stor_disp16_reg word_cnt=4 dbase=1 disp=%load_u16
|
||||
STOR 1110 .... .... .... @stor_disp4_reg word_cnt=4 dbase=1 disp=%stor_disp4
|
||||
STOR_rrp 1110 1110 rs:4 rrp:4 width=4 disp=0 &stor_rrp
|
||||
STOR 1110 1111 .... .... @stor_disp16_reg width=4 dbase=1 disp=%load_u16
|
||||
STOR 1110 .... .... .... @stor_disp4_reg width=4 dbase=1 disp=%stor_disp4
|
||||
}
|
||||
UNIMPLEMENTED 1100 0110 10-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
||||
STOR 0000 0000 0001 0011 1000 .... .... .... .... .... .... .... word_cnt=4 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 1001 1000 .... .... .... .... .... .... .... word_cnt=4 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 0011 1001 .... .... .... .... .... .... .... word_cnt=4 dbase=1 @stor_disp20_rp
|
||||
STOR 0000 0000 0001 1001 1001 .... .... .... .... .... .... .... word_cnt=4 dbase=1 @stor_disp20_rp
|
||||
STOR_rrp 0000 0000 0001 0011 1010 .... .... .... .... .... .... .... word_cnt=4 @stor_disp20_rrp
|
||||
STOR_abs 1100 0111 .... .... .... .... .... .... word_cnt=4 @stor_abs20
|
||||
STOR_ind_abs 1100 110. .... .... .... .... .... .... word_cnt=4 @stor_ind_abs
|
||||
STOR_abs 0000 0000 0001 0011 1011 .... .... .... .... .... .... .... word_cnt=4 @stor_abs24
|
||||
STOR_rrp_imm 1100 0110 00.. .... .... .... .... .... word_cnt=4 @stor_disp14_rrp_imm
|
||||
STOR_imm 0000 0000 0001 0011 0000 .... .... .... .... .... .... .... word_cnt=4 dbase=0 @stor_disp20_reg_imm
|
||||
STOR_imm 1100 0010 imm:4 ra:4 word_cnt=4 dbase=1 disp=0 &stor_imm
|
||||
STOR_imm 1100 0011 .... .... word_cnt=4 dbase=0 disp=%load_u16 @stor_disp16_imm
|
||||
STOR_imm 0000 0000 0001 0011 0001 .... .... .... .... .... .... .... word_cnt=4 dbase=1 @stor_disp20_rp_imm
|
||||
STOR_rrp_imm 0000 0000 0001 0011 0010 .... .... .... .... .... .... .... word_cnt=4 @stor_disp20_rrp_imm
|
||||
STOR_abs_imm 1100 0001 .... .... .... .... .... .... word_cnt=4 @stor_abs_imm
|
||||
STOR_abs_rrp_imm 1100 010. .... .... .... .... .... .... word_cnt=4 @stor_abs_rrp_imm
|
||||
STOR_abs_imm 0000 0000 0001 0011 0011 .... .... .... .... .... .... .... word_cnt=4 @stor_abs24_imm
|
||||
STOR 0000 0000 0001 0011 1000 .... .... .... .... .... .... .... width=4 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 1001 1000 .... .... .... .... .... .... .... width=4 dbase=0 @stor_disp20_reg
|
||||
STOR 0000 0000 0001 0011 1001 .... .... .... .... .... .... .... width=4 dbase=1 @stor_disp20_rp
|
||||
STOR 0000 0000 0001 1001 1001 .... .... .... .... .... .... .... width=4 dbase=1 @stor_disp20_rp
|
||||
STOR_rrp 0000 0000 0001 0011 1010 .... .... .... .... .... .... .... width=4 @stor_disp20_rrp
|
||||
STOR_abs 1100 0111 .... .... .... .... .... .... width=4 @stor_abs20
|
||||
STOR_ind_abs 1100 110. .... .... .... .... .... .... width=4 @stor_ind_abs
|
||||
STOR_abs 0000 0000 0001 0011 1011 .... .... .... .... .... .... .... width=4 @stor_abs24
|
||||
STOR_rrp_imm 1100 0110 00.. .... .... .... .... .... width=4 @stor_disp14_rrp_imm
|
||||
STOR_imm 0000 0000 0001 0011 0000 .... .... .... .... .... .... .... width=4 dbase=0 @stor_disp20_reg_imm
|
||||
STOR_imm 1100 0010 imm:4 ra:4 width=4 dbase=1 disp=0 &stor_imm
|
||||
STOR_imm 1100 0011 .... .... width=4 dbase=0 disp=%load_u16 @stor_disp16_imm
|
||||
STOR_imm 0000 0000 0001 0011 0001 .... .... .... .... .... .... .... width=4 dbase=1 @stor_disp20_rp_imm
|
||||
STOR_rrp_imm 0000 0000 0001 0011 0010 .... .... .... .... .... .... .... width=4 @stor_disp20_rrp_imm
|
||||
STOR_abs_imm 1100 0001 .... .... .... .... .... .... width=4 @stor_abs_imm
|
||||
STOR_abs_rrp_imm 1100 010. .... .... .... .... .... .... width=4 @stor_abs_rrp_imm
|
||||
STOR_abs_imm 0000 0000 0001 0011 0011 .... .... .... .... .... .... .... width=4 @stor_abs24_imm
|
||||
|
||||
&ldstm cnt pair
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -16,10 +16,8 @@ QEMU_OPTS+=-M sc14450board -nographic $(EXTFLAGS) -bios
|
|||
LDFLAGS = -nostdlib -static
|
||||
|
||||
%: %.S macros.inc Makefile.softmmu-target
|
||||
$(CC) $(EXTRA_CFLAGS) $< -o $@.elf $(LDFLAGS)
|
||||
# TODO: There seems to be a linker bug with the binary format for cr16
|
||||
# For now we extract the text section with a hardcoded objcopy command name :/
|
||||
cr16-unknown-elf-objcopy --dump-section .text=$@ $@.elf /dev/null
|
||||
$(CC) $(EXTRA_CFLAGS) $< -o $@.elf -O0 $(LDFLAGS)
|
||||
$$($(CC) -print-prog-name=objcopy) -O binary $@.elf $@
|
||||
|
||||
# We don't support the multiarch system tests yet
|
||||
undefine MULTIARCH_TESTS
|
||||
|
|
|
|||
|
|
@ -38,11 +38,11 @@ _start:
|
|||
EXPECT 0x0387, r8
|
||||
/* Unsigned and signed overflow */
|
||||
movw $0x80, r10
|
||||
addb $0x80, r10
|
||||
addb $-0x80, r10
|
||||
EXPECT_COND cs
|
||||
EXPECT 0x0000, r10
|
||||
movw $0x80, r10
|
||||
addb $0x80, r10
|
||||
addb $-0x80, r10
|
||||
EXPECT_COND fs
|
||||
EXPECT 0x0000, r10
|
||||
/* dword reg */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue