From: Alan Cox Date: Wed, 3 Oct 2018 13:35:29 +0000 (+0100) Subject: z80: Fix in() and make it fastcall while we are at it X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=66afe3a18e0b46448bc85682984820f3f7b9ad65;p=FUZIX.git z80: Fix in() and make it fastcall while we are at it --- diff --git a/Kernel/cpu-z80/cpu.h b/Kernel/cpu-z80/cpu.h index 859500af..172d681e 100644 --- a/Kernel/cpu-z80/cpu.h +++ b/Kernel/cpu-z80/cpu.h @@ -23,7 +23,7 @@ typedef uint16_t uptr_t; /* Userspace pointer equivalent */ typedef uint16_t irqflags_t; extern void out(uint8_t addr, uint8_t val); -extern uint8_t in(uint8_t addr); +extern uint8_t in(uint8_t addr) __z88dk_fastcall; /* Z80 binaries start with a JP */ #define EMAGIC 0xc3 /* Header of executable */ diff --git a/Kernel/lowlevel-z80-banked.s b/Kernel/lowlevel-z80-banked.s index b4e241b4..0a1524d0 100644 --- a/Kernel/lowlevel-z80-banked.s +++ b/Kernel/lowlevel-z80-banked.s @@ -672,12 +672,7 @@ _out: jp (hl) _in: - pop hl - pop de - pop bc - push bc - push de - push hl + ld c,l in l, (c) ret diff --git a/Kernel/lowlevel-z80-thunked.s b/Kernel/lowlevel-z80-thunked.s index a942aca7..f06b7b81 100644 --- a/Kernel/lowlevel-z80-thunked.s +++ b/Kernel/lowlevel-z80-thunked.s @@ -422,10 +422,7 @@ _out: jp (hl) _in: - pop hl - pop bc - push bc - push hl + ld c,l in l, (c) ret diff --git a/Kernel/lowlevel-z80.s b/Kernel/lowlevel-z80.s index cd50970f..db6476f1 100644 --- a/Kernel/lowlevel-z80.s +++ b/Kernel/lowlevel-z80.s @@ -424,12 +424,6 @@ mmu_irq_ret: ld a, (0) call map_save_kernel - ; - ; FIXME: re-implement sanity checks and add a stack one - ; - - ; We need the kernel mapped for the IRQ handling - call map_kernel_di cp #0xC3 call nz, null_pointer_trap @@ -700,11 +694,11 @@ _out: push bc jp (hl) +; +; Use z88dk_fastcall for in. +; _in: - pop hl - pop bc - push bc - push hl + ld c,l in l, (c) ret