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.
+ 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.
- 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
- requested
- ecx: return address
+ eax: object ID
+ edx: segment zero size
+ ecx: total size
+ ebx: method ID
+ esp, ebp, esi, edi: NULL.
+
+ Jump to 0x7fff0080 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, 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