summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-10-06 18:07:57 +0200
committerEugen Wissner <belka@caraus.de>2024-10-06 18:09:08 +0200
commit699cc8684b1571d2501bac2c8bdf461127a420a1 (patch)
tree9caecb24007eda52a074f348bbd613da033a2069 /tools
parent35742aa52587400950cf25170c2247f98f498d4d (diff)
downloadelna-699cc8684b1571d2501bac2c8bdf461127a420a1.tar.gz
Implement division
Diffstat (limited to 'tools')
-rw-r--r--tools/builtin.s18
1 files changed, 15 insertions, 3 deletions
diff --git a/tools/builtin.s b/tools/builtin.s
index 0f5f82c..d7f214d 100644
--- a/tools/builtin.s
+++ b/tools/builtin.s
@@ -7,6 +7,9 @@
.global exit
.type exit, @function
+.global _divide_by_zero_error
+.type _divide_by_zero_error, @function
+
.global _start
.type _start, @function
@@ -51,7 +54,7 @@ printi:
addi a0, zero, 1
addi a1, a1, 1
sub a2, s0, a1
- addi a7, zero, 64
+ addi a7, zero, 64 # write
ecall
lw s0, 0(sp)
@@ -74,7 +77,7 @@ printc:
addi a0, zero, 1
addi a1, s0, -2
addi a2, zero, 2
- addi a7, zero, 64
+ addi a7, zero, 64 # write
ecall
lw s0, 0(sp)
@@ -84,10 +87,19 @@ printc:
exit:
addi a0, zero, 0
- addi a7, zero, 93
+ addi a7, zero, 93 # exit
ecall
# ret
+_divide_by_zero_error:
+ addi a7, zero, 172 # getpid
+ ecall
+
+ addi a1, zero, 8 # SIGFPE
+ addi a7, zero, 129 # kill
+ ecall
+ ret
+
_start:
call main
call exit