1 # cr16 testcase for excp uimm4 2 # mach(): cr16 3 4 .include "testutils.inc" 5 6 start 7 8 .global excp 9 excp: 10 pass # pass macro use the excp 8 11 12 ## Test 1: bbpsw = 0, bpsw = 1, psw = 0 13 # 14 # # bbsm = 0, bie = 0, bbcond = 0 15 # movw $0, r4 16 # lpr r4, cr8 17 # 18 # # bsm = 1, bie = 1, bcond = 1, sm = 0, ie = 0, cond = 0 19 # movw $0xc100, r4 20 # lpr r4, cr0 21 # 22 # # bbpc = 0 23 # movw $0, r4 24 # mvtc r4, bbpc 25 # 26 # # bpc = 42 27 # mvaddr_h_gr r4, 42 28 # mvtc r4, bpc 29 # 30 # # Copy excp2_handler to excp area of memory. 31 # ld24 r0,#0x48 # address of excp 2 handler 32 # ld24 r1,#excp2_handler 33 # ld r2,@r1 34 # st r2,@r0 35 # # Set up return address. 36 # ld24 r5,#excp2_ret1 37 # 38 #excp_insn1: 39 # excp 2 40 # fail 41 # 42 #excp2_ret1: 43 # # test bbsm = 1, bbie = 1, bbcond = 1 44 # mvfc r4, cr8 45 # test_h_gr r4, 0xc1 46 # 47 # # test bsm = 0, bie = 0, bcond = 0, sm = 0, ie = 0, cond = 0 48 # mvfc r4, cr0 49 # test_h_gr r4, 0 50 # 51 # # test bbpc = 42 52 # mvfc r4, bbpc 53 # test_h_gr r4, 42 54 # 55 # # test bpc = proper return address 56 # mvfc r4, bpc 57 # test_h_gr r4, excp_insn1 + 4 58 # 59 ## Test 2: bbpsw = 1, bpsw = 0, psw = 1 60 # 61 # # bbsm = 1, bie = 1, bbcond = 1 62 # mvi_h_gr r4, 0xc1 63 # mvtc r4, cr8 64 # 65 # # bsm = 0, bie = 0, bcond = 0, sm = 1, ie = 1, cond = 1 66 # mvi_h_gr r4, 0xc1 67 # mvtc r4, cr0 68 # 69 # # bbpc = 42 70 # mvaddr_h_gr r4, 42 71 # mvtc r4, bbpc 72 # 73 # # bpc = 0 74 # mvaddr_h_gr r4, 0 75 # mvtc r4, bpc 76 # 77 # # Set up return address. 78 # ld24 r5,#excp2_ret2 79 # 80 #excp_insn2: 81 # excp #2 82 # fail 83 # 84 #excp2_ret2: 85 # # test bbsm = 0, bbie = 0, bbcond = 0 86 # mvfc r4, cr8 87 # test_h_gr r4, 0 88 # 89 # # test bsm = 1, bie = 1, bcond = 1, sm = 1, ie = 0, cond = 0 90 # mvfc r4, cr0 91 # test_h_gr r4, 0xc180 92 # 93 # # test bbpc = 0 94 # mvfc r4, bbpc 95 # test_h_gr r4, 0 96 # 97 # # test bpc = proper return address 98 # mvfc r4, bpc 99 # test_h_gr r4, excp_insn2 + 4 100 # 101 # pass 102 # 103 # .data 104 # 105 ## Don't use rte as it will undo the effects of excp we're testing. 106 # 107 # .p2align 2 108 #excp2_handler: 109 # jmp r5 110 # nop 111