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