]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - kernel/arch/x86/entry.S
Change x86 syscalls to direct branches, and define abi for additional syscalls.
[polintos/scott/priv.git] / kernel / arch / x86 / entry.S
index 997487e2af0437f9b3451cf1911579325e23f7b9..8d4ede48ad2309d117979c0533b7095ca29ff99b 100644 (file)
@@ -14,7 +14,7 @@
 
 #include <arch/addrs.h>
 
-#define ROSHARED_PTR(x) (x - x86_syscall_ptr + 0x7fff0000)
+#define ROSHARED_PTR(x) (x - roshared + 0x7fff0000)
 
        .org 0
        .code32
@@ -406,19 +406,7 @@ arch_new_user_thread:
        iret
 
        .section ".roshared","ax"
-       .align 4096
-       
-       // The vsyscall table must be the first thing in roshared 
-       // (at vaddr 0x7fff0000).
-       
-       .global x86_syscall_ptr
-x86_syscall_ptr:
-       .long   ROSHARED_PTR(x86_shared_int98)
-
-       .global x86_sysret_ptr
-x86_sysret_ptr:
-       .long   ROSHARED_PTR(x86_shared_int99)
-
+roshared:
 x86_shared_int98:
        // FIXME: This must be unpreemptible by traps
        pushl   %gs
@@ -437,12 +425,12 @@ x86_shared_int98_ret:
        popl    %gs
        ret
 
+       . = roshared + 0x80
 x86_shared_int99:
        int     $0x99
        ret
 
        .global test_user_ptr
-       .align 4
 test_user_ptr:
        .long   ROSHARED_PTR(test_user)
        
@@ -459,7 +447,8 @@ test_objlist:
        
 test_user:
        movl    $ROSHARED_PTR(test_pib), %eax
-       call    *0x7fff0000
+       movl    $0x7fff0000, %ecx
+       call    *%ecx
 1:     jmp     1b
 
        .section ".rwshared","a"