bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/9] fix x86_64 asm for higher kernel addresses


From: Luca Dariz
Subject: [PATCH 2/9] fix x86_64 asm for higher kernel addresses
Date: Sun, 12 Feb 2023 18:28:11 +0100

* x86_64/interrupt.S: use 64-bit registers as variables could be
  stored at high addresses
* x86_64/locore.S: Likewise
---
 x86_64/interrupt.S | 4 ++--
 x86_64/locore.S    | 6 ++----
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/x86_64/interrupt.S b/x86_64/interrupt.S
index fe2b3858..31f386ec 100644
--- a/x86_64/interrupt.S
+++ b/x86_64/interrupt.S
@@ -59,10 +59,10 @@ ENTRY(interrupt)
 
        movl    S_IRQ,%eax              /* copy irq number */
        shll    $2,%eax                 /* irq * 4 */
-       movl    EXT(iunit)(%eax),%edi   /* get device unit number as 1st arg */
+       movl    EXT(iunit)(%rax),%edi   /* get device unit number as 1st arg */
 
        shll    $1,%eax                 /* irq * 8 */
-       call    *EXT(ivect)(%eax)       /* call interrupt handler */
+       call    *EXT(ivect)(%rax)       /* call interrupt handler */
 
        movl    S_IPL,%edi              /* restore previous ipl */
        call    splx_cli                /* restore previous ipl */
diff --git a/x86_64/locore.S b/x86_64/locore.S
index 95ece3cc..c54b5cd8 100644
--- a/x86_64/locore.S
+++ b/x86_64/locore.S
@@ -1152,7 +1152,7 @@ syscall_native:
 #endif
        shll    $5,%eax                 /* manual indexing of mach_trap_t */
        xorq    %r10,%r10
-       movl    EXT(mach_trap_table)(%eax),%r10d
+       mov     EXT(mach_trap_table)(%rax),%r10
                                        /* get number of arguments */
        andq    %r10,%r10
        jz      mach_call_call          /* skip argument copy if none */
@@ -1199,9 +1199,7 @@ mach_call_call:
        /* will return with syscallofs still (or again) in eax */
 0:
 #endif /* DEBUG */
-
-       call    *EXT(mach_trap_table)+8(%eax)
-                                       /* call procedure */
+       call    *EXT(mach_trap_table)+8(%rax)  /* call procedure */
        movq    %rsp,%rcx               /* get kernel stack */
        or      $(KERNEL_STACK_SIZE-1),%rcx
        movq    -7-IKS_SIZE(%rcx),%rsp  /* switch back to PCB stack */
-- 
2.30.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]