96 lines
1.7 KiB
ArmAsm
96 lines
1.7 KiB
ArmAsm
|
// TITLE("LdrInitializeThunk")
|
|||
|
//++
|
|||
|
//
|
|||
|
// Copyright (c) 1989 Microsoft Corporation
|
|||
|
// Copyright (c) 1992 Digital Equipment Corporation
|
|||
|
//
|
|||
|
// Module Name:
|
|||
|
//
|
|||
|
// ldrthunk.s
|
|||
|
//
|
|||
|
// Abstract:
|
|||
|
//
|
|||
|
// This module implements the thunk for the LdrpInitialize APC routine.
|
|||
|
//
|
|||
|
// Author:
|
|||
|
//
|
|||
|
// Steven R. Wood (stevewo) 27-Apr-1990
|
|||
|
//
|
|||
|
// Environment:
|
|||
|
//
|
|||
|
// Any mode.
|
|||
|
//
|
|||
|
// Revision History:
|
|||
|
//
|
|||
|
// Thomas Van Baak (tvb) 18-May-1992
|
|||
|
//
|
|||
|
// Adapted for Alpha AXP.
|
|||
|
//
|
|||
|
//--
|
|||
|
|
|||
|
#include "ksalpha.h"
|
|||
|
|
|||
|
//++
|
|||
|
//
|
|||
|
// VOID
|
|||
|
// LdrInitializeThunk (
|
|||
|
// IN PVOID NormalContext,
|
|||
|
// IN PVOID SystemArgument1,
|
|||
|
// IN PVOID SystemArgument2
|
|||
|
// )
|
|||
|
//
|
|||
|
// Routine Description:
|
|||
|
//
|
|||
|
// This function computes a pointer to the context record on the stack
|
|||
|
// and jumps to the LdrpInitialize function with that pointer as its
|
|||
|
// parameter.
|
|||
|
//
|
|||
|
// Arguments:
|
|||
|
//
|
|||
|
// NormalContext (a0) - User Mode APC context parameter (ignored).
|
|||
|
//
|
|||
|
// SystemArgument1 (a1) - User Mode APC system argument 1 (ignored).
|
|||
|
//
|
|||
|
// SystemArgument2 (a2) - User Mode APC system argument 2 (ignored).
|
|||
|
//
|
|||
|
// Return Value:
|
|||
|
//
|
|||
|
// None.
|
|||
|
//
|
|||
|
//--
|
|||
|
|
|||
|
LEAF_ENTRY(LdrInitializeThunk)
|
|||
|
|
|||
|
mov sp, a0 // get address of context record
|
|||
|
br zero, LdrpInitialize // jump to LdrpInitialize
|
|||
|
|
|||
|
.end LdrInitializeThunk
|
|||
|
|
|||
|
//++
|
|||
|
//
|
|||
|
// VOID
|
|||
|
// LdrpSetGp(
|
|||
|
// IN ULONG GpValue
|
|||
|
// )
|
|||
|
//
|
|||
|
// Routine Description:
|
|||
|
//
|
|||
|
// This function sets the value of the Gp register.
|
|||
|
//
|
|||
|
// Arguments:
|
|||
|
//
|
|||
|
// GpValue (a0) - Supplies the value for Gp.
|
|||
|
//
|
|||
|
// Return Value:
|
|||
|
//
|
|||
|
// None.
|
|||
|
//
|
|||
|
//--
|
|||
|
|
|||
|
LEAF_ENTRY(LdrpSetGp)
|
|||
|
|
|||
|
mov a0, gp // set global pointer register
|
|||
|
ret zero, (ra) // return
|
|||
|
|
|||
|
.end LdrpSetGp
|