summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tb/sim/stack.S20
-rw-r--r--tb/sim/stack.py8
2 files changed, 28 insertions, 0 deletions
diff --git a/tb/sim/stack.S b/tb/sim/stack.S
new file mode 100644
index 0000000..f1bc0a8
--- /dev/null
+++ b/tb/sim/stack.S
@@ -0,0 +1,20 @@
+.global reset
+reset:
+ ldr r0, =stub1
+ ldr r1, =stub2
+ push {r0, r1, lr}
+ mov r2, sp
+ pop {r5, pc}
+
+stub1:
+ ldr r0, =0x01234567
+ pop {pc}
+
+stub2:
+ mov r3, sp
+ ldr r1, =0x89abcdef
+ push {r5}
+ mov r4, sp
+ pop {lr}
+ mov r5, sp
+ mov pc, lr
diff --git a/tb/sim/stack.py b/tb/sim/stack.py
new file mode 100644
index 0000000..c1f4e7f
--- /dev/null
+++ b/tb/sim/stack.py
@@ -0,0 +1,8 @@
+def final():
+ assert_reg(r0, 0x0123_4567)
+ assert_reg(r1, 0x89ab_cdef)
+ assert_reg(r2, 0x1fff_fff4)
+ assert_reg(r3, 0x1fff_fffc)
+ assert_reg(r4, 0x1fff_fff8)
+ assert_reg(r5, 0x1fff_fffc)
+ assert_reg(sp_svc, 0x2000_0000)