| # cr16 testcase for excp uimm4 |
| # mach(): cr16 |
| |
| .include "testutils.inc" |
| |
| start |
| |
| .global excp |
| excp: |
| pass # pass macro use the excp 8 |
| |
| ## Test 1: bbpsw = 0, bpsw = 1, psw = 0 |
| # |
| # # bbsm = 0, bie = 0, bbcond = 0 |
| # movw $0, r4 |
| # lpr r4, cr8 |
| # |
| # # bsm = 1, bie = 1, bcond = 1, sm = 0, ie = 0, cond = 0 |
| # movw $0xc100, r4 |
| # lpr r4, cr0 |
| # |
| # # bbpc = 0 |
| # movw $0, r4 |
| # mvtc r4, bbpc |
| # |
| # # bpc = 42 |
| # mvaddr_h_gr r4, 42 |
| # mvtc r4, bpc |
| # |
| # # Copy excp2_handler to excp area of memory. |
| # ld24 r0,#0x48 # address of excp 2 handler |
| # ld24 r1,#excp2_handler |
| # ld r2,@r1 |
| # st r2,@r0 |
| # # Set up return address. |
| # ld24 r5,#excp2_ret1 |
| # |
| #excp_insn1: |
| # excp 2 |
| # fail |
| # |
| #excp2_ret1: |
| # # test bbsm = 1, bbie = 1, bbcond = 1 |
| # mvfc r4, cr8 |
| # test_h_gr r4, 0xc1 |
| # |
| # # test bsm = 0, bie = 0, bcond = 0, sm = 0, ie = 0, cond = 0 |
| # mvfc r4, cr0 |
| # test_h_gr r4, 0 |
| # |
| # # test bbpc = 42 |
| # mvfc r4, bbpc |
| # test_h_gr r4, 42 |
| # |
| # # test bpc = proper return address |
| # mvfc r4, bpc |
| # test_h_gr r4, excp_insn1 + 4 |
| # |
| ## Test 2: bbpsw = 1, bpsw = 0, psw = 1 |
| # |
| # # bbsm = 1, bie = 1, bbcond = 1 |
| # mvi_h_gr r4, 0xc1 |
| # mvtc r4, cr8 |
| # |
| # # bsm = 0, bie = 0, bcond = 0, sm = 1, ie = 1, cond = 1 |
| # mvi_h_gr r4, 0xc1 |
| # mvtc r4, cr0 |
| # |
| # # bbpc = 42 |
| # mvaddr_h_gr r4, 42 |
| # mvtc r4, bbpc |
| # |
| # # bpc = 0 |
| # mvaddr_h_gr r4, 0 |
| # mvtc r4, bpc |
| # |
| # # Set up return address. |
| # ld24 r5,#excp2_ret2 |
| # |
| #excp_insn2: |
| # excp #2 |
| # fail |
| # |
| #excp2_ret2: |
| # # test bbsm = 0, bbie = 0, bbcond = 0 |
| # mvfc r4, cr8 |
| # test_h_gr r4, 0 |
| # |
| # # test bsm = 1, bie = 1, bcond = 1, sm = 1, ie = 0, cond = 0 |
| # mvfc r4, cr0 |
| # test_h_gr r4, 0xc180 |
| # |
| # # test bbpc = 0 |
| # mvfc r4, bbpc |
| # test_h_gr r4, 0 |
| # |
| # # test bpc = proper return address |
| # mvfc r4, bpc |
| # test_h_gr r4, excp_insn2 + 4 |
| # |
| # pass |
| # |
| # .data |
| # |
| ## Don't use rte as it will undo the effects of excp we're testing. |
| # |
| # .p2align 2 |
| #excp2_handler: |
| # jmp r5 |
| # nop |