diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-12-15 00:41:05 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-12-16 16:29:10 -0600 |
| commit | 7bf965b755b667f7da05e0995c2f09c54a8a2f11 (patch) | |
| tree | 6695c6f9aecd84bdc542261d4bc32d73ef050ea8 /tb | |
| parent | ae7fd6a060c9bb1ce9db83f8eb23fa19e8fa0e7a (diff) | |
Implement swi (system call)
Diffstat (limited to '')
| -rw-r--r-- | tb/sim/syscall.S | 17 | ||||
| -rw-r--r-- | tb/sim/syscall.py | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/tb/sim/syscall.S b/tb/sim/syscall.S new file mode 100644 index 0000000..a1f7422 --- /dev/null +++ b/tb/sim/syscall.S @@ -0,0 +1,17 @@ +.global reset +reset: + # Switch to user mode + mov r0, lr + mrs r1, cpsr + bic r1, r1, #0b1111 + msr cpsr_fxc, r1 + mov lr, r0 + + mov r0, #123 + swi #0 + mov pc, lr + +.global swi +swi: + add r0, r0, #1 + movs pc, r14 diff --git a/tb/sim/syscall.py b/tb/sim/syscall.py new file mode 100644 index 0000000..cfb9859 --- /dev/null +++ b/tb/sim/syscall.py @@ -0,0 +1,2 @@ +def final(): + assert_reg(r0, 124) |
