// TITLE("Win32 Thunks") // Copyright (c) 1990 Microsoft Corporation // Module Name: // thunk.s // Abstract: // This module implements Win32 functions that must be written in // macro. // Author: // Mark Lucovsky (markl) 5-Oct-1990 // Revision History: // Jim Anderson (jima) 31-Oct-1994 // Copied from base for worker thread cleanup #include "ksmips.h" // VOID // SwitchStackThenTerminate( // IN PVOID StackLimit, // IN PVOID NewStack, // IN DWORD ExitCode // ) // Routine Description: // This API is called during thread termination to delete a thread's // stack, switch to a stack in the thread's TEB, and then terminate. // Arguments: // StackLimit (a0) - Supplies the address of the stack to be freed. // NewStack (a1) - Supplies an address within the terminating threads TE // that is to be used as its temporary stack while exiting. // ExitCode (a2) - Supplies the termination status that the thread // is to exit with. // Return Value: // None. LEAF_ENTRY(SwitchStackThenTerminate) // // switch stacks and then jump to FreeStackAndTerminate // move sp,a1 move a1,a2 j FreeStackAndTerminate .end SwitchStackThenTerminate