]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - doc/abi/x86
Change x86 syscalls to direct branches, and define abi for additional syscalls.
[polintos/scott/priv.git] / doc / abi / x86
index fd0c51a2a4835a2d7a7b0adfe40ae036b648eb23..7a11bd11a47a813b1a6962e25d1953da52ff9563 100644 (file)
@@ -4,28 +4,36 @@ Out-of-Process Method Invocation:
    Caller:
       eax: pointer to parameter info block (PIB)
 
-      Call the 32-bit address stored at 0x7fff0000 to invoke the method.
+      Call 0x7fff0000 to invoke the method.
       
       Upon return:
       ebx, esi, edi, ebp, esp: preserved
-      eax: pointer to exception, or NULL if none.
+      eax: pointer to exception, or NULL if none
            If there is an exception, the user part of the syscall
            function will search for an exception handling function
            that covers the calling address.  If none is found,
            it will assume that it is a language without exception
-           handling, and return the exception to the caller in eax.
+           handling, an5Ad return the exception to the caller in eax.
       edx: length of exception segment, if any
       ecx: may be clobbered
       
    Callee:
       eax: pointer to PIB
-      edx: pointer to caller information struct, if such was
+      edx: pointer to caller information struct, or NULL if not
            requested
+      esp: NULL.
 
-      Jump to the 32-bit address stored at 0x7fff0004 to return.
+      Jump to 0x7fff0080 to return.
       
       Upon return:
-      eax: pointer to exception, or NULL if none.
+      eax: pointer to exception, or NULL if none
       edx: length of exception segment, if any
-      ebx, esi, edi, ebp, esp: should be preserved
-      ecx: may be clobbered
+      ebx, ecx, esi, edi, ebp, esp: may be clobbered
+
+Other system calls:
+       eax, edx, ecx: syscall arguments.
+       
+       Call 0x7fff0000 + 0x80 * syscallnum
+
+       eax: return value
+       edx, ecx: may be clobbered