X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=doc%2Fabi%2Fx86;h=7f3de369192025ad0570c4cac8880f7c94f05e0f;hp=41f4bb43269ae23594c0a335bb9cb0d5d25be089;hb=b5cbe98949d5b279965d607c9618d404b26d4760;hpb=5ee1a4b6695c7889466f97d42b8c416b080b361d diff --git a/doc/abi/x86 b/doc/abi/x86 index 41f4bb4..7f3de36 100644 --- a/doc/abi/x86 +++ b/doc/abi/x86 @@ -2,33 +2,50 @@ Basic ABI: SysV i386 Out-of-Process Method Invocation: Caller: - eax: reserved, must be zero - edx: pointer to parameter info block (PIB) - ecx: maximum "out" bytes, excluding Inlines + eax: pointer to parameter info block (PIB) Call the 32-bit address stored at 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. - ecx: clobbered - edx: pointer to args, with out params filled in; in params - may be clobbered. This will be the same pointer as - was passed in by the caller. + 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 - ecx: return address + esp: NULL. + + Jump to the 32-bit address stored at 0x7fff0004 to return. Upon return: - - eax: pointer to exception, or NULL if none. - ebx, esi, edi, ebp, esp: should be preserved - ecx, edx: may be clobbered + eax: pointer to exception, or NULL if none + edx: length of exception segment, if any + ebx, esi, edi, ebp, esp: may be clobbered + +Object registration: + eax: number of objects to register with initial refcount 1 + edx: pointer to list of NewObject structs + + Call the 32-bit address stored at 0x7fff0008. + + Upon return: + eax: pointer to exception, or NULL if none + edx: length of exception segment, if any + +GUID SHA-1 hash retrieval: + eax: object id + edx: 20-byte buffer + + Call the 32-bit address stored at 0x7fff000c. + + Upon return: + eax: pointer to exception, or NULL if none + edx: length of exception segment, if any