📄 badalign.cgs
字号:
# frv testcase to generate interrupt for st $GRk,@($GRi,$GRj)# mach: fr500 frv .include "testutils.inc" start .global alignalign: and_spr_immed -4081,tbr ; clear tbr.tt set_gr_spr tbr,gr17 inc_gr_immed 0x100,gr17 ; address of exception handler set_bctrlr_0_0 gr17 set_spr_immed 128,lcr set_spr_addr ok1,lr set_psr_et 1 set_gr_immed 0xdeadbeef,gr17 set_gr_immed 0,gr15 inc_gr_immed 2,sp ; out of alignment test_spr_bits 1,0,1,isr ; mem_address_not_aligned is masked sti gr17,@(sp,0) ; no exception ldi @(sp,-2),gr18 ; stored at aligned address test_gr_immed 0xdeadbeef,gr18 ldi @(sp,0),gr19 ; no exception test_gr_immed 0xdeadbeef,gr19 and_spr_immed 0xfffffffe,isr ; turn off ISR.EMAM set_gr_addr bad1,gr16bad1: sti gr17,@(sp,0) ; misaligned write in slot I1 test_gr_immed 1,gr15 set_gr_addr bad3,gr16 set_gr_gr sp,gr20 set_gr_immed 1,gr21 set_gr_immed 0x10101010,gr10bad2: nop.pbad3: ldu @(sp,gr21),gr10 ; misaligned read in slot I2 test_gr_immed 2,gr15 ; handler was called test_gr_immed 0x10101010,gr10 ; gr10 not updated test_gr_immed 1,gr21 ; gr21 not updated inc_gr_immed 1,gr20 test_gr_gr gr20,sp ; sp updated pass; exception handlerok1: cmpi gr15,0,icc0 bne icc0,0,load ; handle interrupt on store test_spr_immed 0x100,esfr1 ; esr8 is active test_spr_gr epcr8,gr16 test_spr_bits 0x0001,0,0x1,esr8 ; esr8 is valid test_spr_bits 0x003e,1,0xb,esr8 ; esr8.ec is set test_spr_bits 0x0800,11,0x1,esr8 ; esr8.eav is set test_spr_gr ear8,sp test_spr_bits 0x01000,12,0x1,esr8 ; esr8.edv is set test_spr_bits 0x1e000,13,0x3,esr8 ; esr8.edn is 3 test_spr_gr edr3,gr17 ; edr3 is set bra retload: ; handle interrupt on load test_spr_immed 0x200,esfr1 ; esr9 is active test_spr_gr epcr9,gr16 test_spr_bits 0x0001,0,0x1,esr9 ; esr9 is valid test_spr_bits 0x003e,1,0xb,esr9 ; esr9.ec is set test_spr_bits 0x0800,11,0x1,esr9 ; esr9.eav is set test_spr_gr ear9,sp test_spr_bits 0x1000,12,0x0,esr9 ; esr9.edv is not setret: inc_gr_immed 1,gr15 rett 0 fail
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -