]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - kernel/arch/x86/entry.S
Random stuff.
[polintos/scott/priv.git] / kernel / arch / x86 / entry.S
index 997487e2af0437f9b3451cf1911579325e23f7b9..8308fb7330cb32ce2530fbad7028392cab8b3b77 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
@@ -321,6 +321,38 @@ x86_int99_entry:
        movl    $ROSHARED_PTR(x86_shared_int98_ret), (%esp)
        iret
 
+       .global x86_int9a_entry
+x86_int9a_entry:
+       pushl   %edx
+       pushl   %eax
+       enterkernel %edx
+
+       pushl   %esp
+       call    x86_new_object
+       addl    $4, %esp
+       
+       exitkernel
+       popl    %eax
+       xorl    %ecx, %ecx
+       xorl    %edx, %edx
+       iret
+
+       .global x86_int9b_entry
+x86_int9b_entry:
+       pushl   %edx
+       pushl   %eax
+       enterkernel %edx
+
+       pushl   %esp
+       call    x86_get_iface_hash
+       addl    $4, %esp
+       
+       exitkernel
+       popl    %eax
+       xorl    %ecx, %ecx
+       xorl    %edx, %edx
+       iret
+
        .global x86_irq
 x86_irq:
        pushvolatilesnoeax
@@ -406,19 +438,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 +457,22 @@ x86_shared_int98_ret:
        popl    %gs
        ret
 
+       . = roshared + 0x80
 x86_shared_int99:
        int     $0x99
        ret
 
+       . = roshared + 0x100
+x86_shared_int9a:
+       int     $0x9a
+       ret
+
+       . = roshared + 0x180
+x86_shared_int9b:
+       int     $0x9b
+       ret
+
        .global test_user_ptr
-       .align 4
 test_user_ptr:
        .long   ROSHARED_PTR(test_user)
        
@@ -459,7 +489,8 @@ test_objlist:
        
 test_user:
        movl    $ROSHARED_PTR(test_pib), %eax
-       call    *0x7fff0000
+       movl    $0x7fff0000, %ecx
+       call    *%ecx
 1:     jmp     1b
 
        .section ".rwshared","a"