Skip to content

Commit 4672877

Browse files
committed
Adds fuller PL190 example.
Now we're testing interrupt nesting.
1 parent dfa7a44 commit 4672877

13 files changed

+289
-72
lines changed

examples/versatileab/Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ version = "0.0.0"
1818
[dependencies]
1919
aarch32-cpu = { path = "../../aarch32-cpu", features = ["critical-section-single-core"] }
2020
aarch32-rt = { path = "../../aarch32-rt" }
21-
semihosting = { version = "0.1.18", features = ["stdio"] }
22-
libm = "0.2.15"
2321
derive-mmio = "0.6.1"
22+
libm = "0.2.15"
23+
pl190-vic = "0.1.0"
2424
portable-atomic = { version = "1.11.1", features = ["critical-section"] }
25+
semihosting = { version = "0.1.18", features = ["stdio"] }
2526

2627
[build-dependencies]
2728
arm-targets = { version = "0.3.0", path = "../../arm-targets" }
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
Setting up interrupts...
2+
00 0x00000000 Ctrl { enabled=0, id=0 }
3+
01 0x00000000 Ctrl { enabled=0, id=0 }
4+
02 0x00000000 Ctrl { enabled=0, id=0 }
5+
03 0x00000000 Ctrl { enabled=0, id=0 }
6+
04 0x0000087c Ctrl { enabled=1, id=2 }
7+
05 0x00000000 Ctrl { enabled=0, id=0 }
8+
06 0x00000000 Ctrl { enabled=0, id=0 }
9+
07 0x0000079c Ctrl { enabled=1, id=1 }
10+
08 0x00000000 Ctrl { enabled=0, id=0 }
11+
09 0x00000000 Ctrl { enabled=0, id=0 }
12+
10 0x00000000 Ctrl { enabled=0, id=0 }
13+
11 0x00000000 Ctrl { enabled=0, id=0 }
14+
12 0x00000000 Ctrl { enabled=0, id=0 }
15+
13 0x00000000 Ctrl { enabled=0, id=0 }
16+
14 0x00000000 Ctrl { enabled=0, id=0 }
17+
15 0x00000000 Ctrl { enabled=0, id=0 }
118
Firing interrupt...
2-
Clearing interrupt...
19+
> interrupt_handler()
20+
> soft_handler1()
21+
< soft_handler1()
22+
< interrupt_handler()
23+
> interrupt_handler()
24+
> soft_handler2()
25+
< soft_handler2()
26+
< interrupt_handler()
327
Got interrupted :)
28+
> interrupt_handler()
29+
catchall_handler() fired
30+
< interrupt_handler()
31+
catch all works. All done!
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
Setting up interrupts...
2+
00 0x00000000 Ctrl { enabled=0, id=0 }
3+
01 0x00000000 Ctrl { enabled=0, id=0 }
4+
02 0x00000000 Ctrl { enabled=0, id=0 }
5+
03 0x00000000 Ctrl { enabled=0, id=0 }
6+
04 0x0000040c Ctrl { enabled=1, id=2 }
7+
05 0x00000000 Ctrl { enabled=0, id=0 }
8+
06 0x00000000 Ctrl { enabled=0, id=0 }
9+
07 0x00000330 Ctrl { enabled=1, id=1 }
10+
08 0x00000000 Ctrl { enabled=0, id=0 }
11+
09 0x00000000 Ctrl { enabled=0, id=0 }
12+
10 0x00000000 Ctrl { enabled=0, id=0 }
13+
11 0x00000000 Ctrl { enabled=0, id=0 }
14+
12 0x00000000 Ctrl { enabled=0, id=0 }
15+
13 0x00000000 Ctrl { enabled=0, id=0 }
16+
14 0x00000000 Ctrl { enabled=0, id=0 }
17+
15 0x00000000 Ctrl { enabled=0, id=0 }
118
Firing interrupt...
2-
Clearing interrupt...
19+
> interrupt_handler()
20+
> soft_handler1()
21+
< soft_handler1()
22+
< interrupt_handler()
23+
> interrupt_handler()
24+
> soft_handler2()
25+
< soft_handler2()
26+
< interrupt_handler()
327
Got interrupted :)
28+
> interrupt_handler()
29+
catchall_handler() fired
30+
< interrupt_handler()
31+
catch all works. All done!
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
Setting up interrupts...
2+
00 0x00000000 Ctrl { enabled=0, id=0 }
3+
01 0x00000000 Ctrl { enabled=0, id=0 }
4+
02 0x00000000 Ctrl { enabled=0, id=0 }
5+
03 0x00000000 Ctrl { enabled=0, id=0 }
6+
04 0x00000154 Ctrl { enabled=1, id=2 }
7+
05 0x00000000 Ctrl { enabled=0, id=0 }
8+
06 0x00000000 Ctrl { enabled=0, id=0 }
9+
07 0x00000078 Ctrl { enabled=1, id=1 }
10+
08 0x00000000 Ctrl { enabled=0, id=0 }
11+
09 0x00000000 Ctrl { enabled=0, id=0 }
12+
10 0x00000000 Ctrl { enabled=0, id=0 }
13+
11 0x00000000 Ctrl { enabled=0, id=0 }
14+
12 0x00000000 Ctrl { enabled=0, id=0 }
15+
13 0x00000000 Ctrl { enabled=0, id=0 }
16+
14 0x00000000 Ctrl { enabled=0, id=0 }
17+
15 0x00000000 Ctrl { enabled=0, id=0 }
118
Firing interrupt...
2-
Clearing interrupt...
19+
> interrupt_handler()
20+
> soft_handler1()
21+
> interrupt_handler()
22+
> soft_handler2()
23+
< soft_handler2()
24+
< interrupt_handler()
25+
< soft_handler1()
26+
< interrupt_handler()
327
Got interrupted :)
28+
> interrupt_handler()
29+
catchall_handler() fired
30+
< interrupt_handler()
31+
catch all works. All done!
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
Setting up interrupts...
2+
00 0x00000000 Ctrl { enabled=0, id=0 }
3+
01 0x00000000 Ctrl { enabled=0, id=0 }
4+
02 0x00000000 Ctrl { enabled=0, id=0 }
5+
03 0x00000000 Ctrl { enabled=0, id=0 }
6+
04 0x0000022c Ctrl { enabled=1, id=2 }
7+
05 0x00000000 Ctrl { enabled=0, id=0 }
8+
06 0x00000000 Ctrl { enabled=0, id=0 }
9+
07 0x00000150 Ctrl { enabled=1, id=1 }
10+
08 0x00000000 Ctrl { enabled=0, id=0 }
11+
09 0x00000000 Ctrl { enabled=0, id=0 }
12+
10 0x00000000 Ctrl { enabled=0, id=0 }
13+
11 0x00000000 Ctrl { enabled=0, id=0 }
14+
12 0x00000000 Ctrl { enabled=0, id=0 }
15+
13 0x00000000 Ctrl { enabled=0, id=0 }
16+
14 0x00000000 Ctrl { enabled=0, id=0 }
17+
15 0x00000000 Ctrl { enabled=0, id=0 }
18+
Firing interrupt...
19+
> interrupt_handler()
20+
> soft_handler1()
21+
> interrupt_handler()
22+
> soft_handler2()
23+
< soft_handler2()
24+
< interrupt_handler()
25+
< soft_handler1()
26+
< interrupt_handler()
27+
Got interrupted :)
28+
> interrupt_handler()
29+
catchall_handler() fired
30+
< interrupt_handler()
31+
catch all works. All done!
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
Setting up interrupts...
2+
00 0x00000000 Ctrl { enabled=0, id=0 }
3+
01 0x00000000 Ctrl { enabled=0, id=0 }
4+
02 0x00000000 Ctrl { enabled=0, id=0 }
5+
03 0x00000000 Ctrl { enabled=0, id=0 }
6+
04 0x00000680 Ctrl { enabled=1, id=2 }
7+
05 0x00000000 Ctrl { enabled=0, id=0 }
8+
06 0x00000000 Ctrl { enabled=0, id=0 }
9+
07 0x000005a4 Ctrl { enabled=1, id=1 }
10+
08 0x00000000 Ctrl { enabled=0, id=0 }
11+
09 0x00000000 Ctrl { enabled=0, id=0 }
12+
10 0x00000000 Ctrl { enabled=0, id=0 }
13+
11 0x00000000 Ctrl { enabled=0, id=0 }
14+
12 0x00000000 Ctrl { enabled=0, id=0 }
15+
13 0x00000000 Ctrl { enabled=0, id=0 }
16+
14 0x00000000 Ctrl { enabled=0, id=0 }
17+
15 0x00000000 Ctrl { enabled=0, id=0 }
118
Firing interrupt...
2-
Clearing interrupt...
19+
> interrupt_handler()
20+
> soft_handler1()
21+
> interrupt_handler()
22+
> soft_handler2()
23+
< soft_handler2()
24+
< interrupt_handler()
25+
< soft_handler1()
26+
< interrupt_handler()
327
Got interrupted :)
28+
> interrupt_handler()
29+
catchall_handler() fired
30+
< interrupt_handler()
31+
catch all works. All done!
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
Setting up interrupts...
2+
00 0x00000000 Ctrl { enabled=0, id=0 }
3+
01 0x00000000 Ctrl { enabled=0, id=0 }
4+
02 0x00000000 Ctrl { enabled=0, id=0 }
5+
03 0x00000000 Ctrl { enabled=0, id=0 }
6+
04 0x000009a8 Ctrl { enabled=1, id=2 }
7+
05 0x00000000 Ctrl { enabled=0, id=0 }
8+
06 0x00000000 Ctrl { enabled=0, id=0 }
9+
07 0x000008cc Ctrl { enabled=1, id=1 }
10+
08 0x00000000 Ctrl { enabled=0, id=0 }
11+
09 0x00000000 Ctrl { enabled=0, id=0 }
12+
10 0x00000000 Ctrl { enabled=0, id=0 }
13+
11 0x00000000 Ctrl { enabled=0, id=0 }
14+
12 0x00000000 Ctrl { enabled=0, id=0 }
15+
13 0x00000000 Ctrl { enabled=0, id=0 }
16+
14 0x00000000 Ctrl { enabled=0, id=0 }
17+
15 0x00000000 Ctrl { enabled=0, id=0 }
118
Firing interrupt...
2-
Clearing interrupt...
19+
> interrupt_handler()
20+
> soft_handler1()
21+
> interrupt_handler()
22+
> soft_handler2()
23+
< soft_handler2()
24+
< interrupt_handler()
25+
< soft_handler1()
26+
< interrupt_handler()
327
Got interrupted :)
28+
> interrupt_handler()
29+
catchall_handler() fired
30+
< interrupt_handler()
31+
catch all works. All done!
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
Setting up interrupts...
2+
00 0x00000000 Ctrl { enabled=0, id=0 }
3+
01 0x00000000 Ctrl { enabled=0, id=0 }
4+
02 0x00000000 Ctrl { enabled=0, id=0 }
5+
03 0x00000000 Ctrl { enabled=0, id=0 }
6+
04 0x00000b08 Ctrl { enabled=1, id=2 }
7+
05 0x00000000 Ctrl { enabled=0, id=0 }
8+
06 0x00000000 Ctrl { enabled=0, id=0 }
9+
07 0x00000a2c Ctrl { enabled=1, id=1 }
10+
08 0x00000000 Ctrl { enabled=0, id=0 }
11+
09 0x00000000 Ctrl { enabled=0, id=0 }
12+
10 0x00000000 Ctrl { enabled=0, id=0 }
13+
11 0x00000000 Ctrl { enabled=0, id=0 }
14+
12 0x00000000 Ctrl { enabled=0, id=0 }
15+
13 0x00000000 Ctrl { enabled=0, id=0 }
16+
14 0x00000000 Ctrl { enabled=0, id=0 }
17+
15 0x00000000 Ctrl { enabled=0, id=0 }
118
Firing interrupt...
2-
Clearing interrupt...
19+
> interrupt_handler()
20+
> soft_handler1()
21+
> interrupt_handler()
22+
> soft_handler2()
23+
< soft_handler2()
24+
< interrupt_handler()
25+
< soft_handler1()
26+
< interrupt_handler()
327
Got interrupted :)
28+
> interrupt_handler()
29+
catchall_handler() fired
30+
< interrupt_handler()
31+
catch all works. All done!
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Firing interrupt...
2+
Clearing interrupt...
3+
Got interrupted :)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Firing interrupt...
2+
Clearing interrupt...
3+
Got interrupted :)

0 commit comments

Comments
 (0)