hare

The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

commit d5bb229654f5b4ceef3829242c02807154d50e13
parent 5a19c8454e2f14203b44068afeb3cb1e7fc72125
Author: Armin Weigl <tb46305@gmail.com>
Date:   Wed, 29 Dec 2021 13:59:23 +0100

rt/+linux/syscall+riscv64.s: Move parameters between registers

Signed-off-by: Armin Weigl <tb46305@gmail.com>

Diffstat:
Mrt/+linux/syscall+riscv64.s | 147+++++++++++++++++++------------------------------------------------------------
1 file changed, 35 insertions(+), 112 deletions(-)

diff --git a/rt/+linux/syscall+riscv64.s b/rt/+linux/syscall+riscv64.s @@ -1,146 +1,69 @@ .section .text.rt.syscall0 .global rt.syscall0 rt.syscall0: - addi sp, sp, -32 - sd s0, 24(sp) - addi s0, sp, 32 - sd a0, -24(s0) - ld a7, -24(s0) + mv a7, a0 ecall - mv a5, a0 - mv a0, a5 - ld s0, 24(sp) - addi sp, sp, 32 - jr ra + ret .section .text.rt.syscall1 .global rt.syscall1 rt.syscall1: - addi sp, sp, -32 - sd s0, 24(sp) - addi s0, sp, 32 - sd a0, -24(s0) - sd a1, -32(s0) - ld a7, -24(s0) - ld a0, -32(s0) + mv a7, a0 + mv a0, a1 ecall - mv a5, a0 - mv a0, a5 - ld s0, 24(sp) - addi sp, sp, 32 - jr ra + ret .section .text.rt.syscall2 .global rt.syscall2 rt.syscall2: - addi sp, sp, -48 - sd s0, 40(sp) - addi s0, sp, 48 - sd a0, -24(s0) - sd a1, -32(s0) - sd a2, -40(s0) - ld a7, -24(s0) - ld a0, -32(s0) - ld a1, -40(s0) + mv a7, a0 + mv a0, a1 + mv a1, a2 ecall - mv a5, a0 - mv a0, a5 - ld s0, 40(sp) - addi sp, sp, 48 - jr ra + ret .section .text.rt.syscall3 .global rt.syscall3 rt.syscall3: - addi sp, sp, -48 - sd s0, 40(sp) - addi s0, sp, 48 - sd a0, -24(s0) - sd a1, -32(s0) - sd a2, -40(s0) - sd a3, -48(s0) - ld a7, -24(s0) - ld a0, -32(s0) - ld a1, -40(s0) - ld a2, -48(s0) + mv a7, a0 + mv a0, a1 + mv a1, a2 + mv a2, a3 ecall - mv a5, a0 - mv a0, a5 - ld s0, 40(sp) - addi sp, sp, 48 - jr ra + ret .section .text.rt.syscall4 .global rt.syscall4 rt.syscall4: - addi sp, sp, -64 - sd s0, 56(sp) - addi s0, sp, 64 - sd a0, -24(s0) - sd a1, -32(s0) - sd a2, -40(s0) - sd a3, -48(s0) - sd a4, -56(s0) - ld a7, -24(s0) - ld a0, -32(s0) - ld a1, -40(s0) - ld a2, -48(s0) - ld a3, -56(s0) + mv a7, a0 + mv a0, a1 + mv a1, a2 + mv a2, a3 + mv a3, a4 ecall - mv a5, a0 - mv a0, a5 - ld s0, 56(sp) - addi sp, sp, 64 - jr ra + ret .section .text.rt.syscall5 .global rt.syscall5 rt.syscall5: - addi sp, sp, -64 - sd s0, 56(sp) - addi s0, sp, 64 - sd a0, -24(s0) - sd a1, -32(s0) - sd a2, -40(s0) - sd a3, -48(s0) - sd a4, -56(s0) - sd a5, -64(s0) - ld a7, -24(s0) - ld a0, -32(s0) - ld a1, -40(s0) - ld a2, -48(s0) - ld a3, -56(s0) - ld a4, -64(s0) + mv a7, a0 + mv a0, a1 + mv a1, a2 + mv a2, a3 + mv a3, a4 + mv a4, a5 ecall - mv a5, a0 - mv a0, a5 - ld s0, 56(sp) - addi sp, sp, 64 - jr ra + ret .section .text.rt.syscall6 .global rt.syscall6 rt.syscall6: - addi sp, sp, -80 - sd s0, 72(sp) - addi s0, sp, 80 - sd a0, -24(s0) - sd a1, -32(s0) - sd a2, -40(s0) - sd a3, -48(s0) - sd a4, -56(s0) - sd a5, -64(s0) - sd a6, -72(s0) - ld a7, -24(s0) - ld a0, -32(s0) - ld a1, -40(s0) - ld a2, -48(s0) - ld a3, -56(s0) - ld a4, -64(s0) - ld a5, -72(s0) + mv a7, a0 + mv a0, a1 + mv a1, a2 + mv a2, a3 + mv a3, a4 + mv a4, a5 + mv a5, a6 ecall - mv a5, a0 - mv a0, a5 - ld s0, 72(sp) - addi sp, sp, 80 - jr ra + ret