Add support to GDB for the Renesas rl78 architecture.
[external/binutils.git] / sim / testsuite / sim / bfin / cec-syscfg-ssstep.S
1 # Blackfin testcase for hardware single stepping
2 # mach: bfin
3 # sim: --environment operating
4
5 #include "test.h"
6         .include "testutils.inc"
7
8         start
9
10         # Set up exception handler
11         imm32 P4, EVT3;
12         loadsym R1, _evx;
13         [P4] = R1;
14
15         # Enable single stepping
16         R0 = 1;
17         SYSCFG = R0;
18
19         # Lower to the code we want to single step through
20         R1 = 1;
21         imm32 R5, 0xffff
22         R6 = 0;
23         R7 = 0;
24         loadsym R1, _usr;
25         RETI = R1;
26         RTI;
27
28 _usr:
29         # Single step and set a new bit every time
30         BITSET (R7, 0);
31         BITSET (R7, 1);
32         BITSET (R7, 2);
33         BITSET (R7, 3);
34         BITSET (R7, 4);
35         BITSET (R7, 5);
36         BITSET (R7, 6);
37         BITSET (R7, 7);
38         BITSET (R7, 8);
39         BITSET (R7, 9);
40         BITSET (R7, 10);
41         BITSET (R7, 11);
42         BITSET (R7, 12);
43         BITSET (R7, 13);
44         BITSET (R7, 14);
45         BITSET (R7, 15);
46         JUMP fail_lvl;
47
48 _evx:
49         # Make sure exception reason is single step
50         R3 = SEQSTAT;
51         R4 = 0x3f;
52         R3 = R3 & R4;
53         R4 = 0x10;
54         CC = R3 == R4;
55         IF !CC JUMP fail_lvl;
56
57         # Set a new bit in R6 every single step to match R7
58         CC = R1;
59         R6 = ROT R6 BY 1;
60         CC = R6 == R7;
61         IF !CC JUMP fail_lvl;
62
63         # Do it through each bit
64         CC = R5 == R6;
65         IF CC JUMP pass_lvl;
66
67         RTX;
68
69 pass_lvl:
70         dbg_pass;
71 fail_lvl:
72         dbg_fail;