1 1.1 christos # m32r testcase for trap #$uimm4 2 1.1 christos # mach(): m32r m32rx 3 1.1 christos # sim: --environment virtual 4 1.1 christos 5 1.1 christos .include "testutils.inc" 6 1.1 christos 7 1.1 christos start 8 1.1 christos 9 1.1 christos .global trap 10 1.1 christos trap: 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 mvi_h_gr r4, 0 16 1.1 christos mvtc 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 mvi_h_gr r4, 0xc100 20 1.1 christos mvtc r4, cr0 21 1.1 christos 22 1.1 christos ; bbpc = 0 23 1.1 christos mvaddr_h_gr r4, 0 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 trap2_handler to trap area of memory. 31 1.1 christos ld24 r0,#0x48 ; address of trap 2 handler 32 1.1 christos ld24 r1,#trap2_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,#trap2_ret1 37 1.1 christos 38 1.1 christos trap_insn1: 39 1.1 christos trap #2 40 1.1 christos fail 41 1.1 christos 42 1.1 christos trap2_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, trap_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,#trap2_ret2 79 1.1 christos 80 1.1 christos trap_insn2: 81 1.1 christos trap #2 82 1.1 christos fail 83 1.1 christos 84 1.1 christos trap2_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, trap_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 trap we're testing. 106 1.1 christos 107 1.1 christos .p2align 2 108 1.1 christos trap2_handler: 109 1.1 christos jmp r5 110 1.1 christos nop 111