Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

80 lines
2.1 KiB

// TITLE("Jump to Unwind")
//++
//
// Copyright (c) 1993 Digital Equipment Corporation
//
// Module Name:
//
// otsuwind.s
//
// Abstract:
//
// This module implements the Alpha C8/GEM compiler specific routine to
// jump to the runtime library unwind routine.
//
// Author:
//
// Thomas Van Baak (tvb) 30-Apr-1992
//
// Environment:
//
// Any mode.
//
// Revision History:
//
//--
#include "ksalpha.h"
SBTTL("Jump to Unwind - GEM version")
//++
//
// VOID
// _OtsUnwindRfp (
// IN PVOID TargetRealFrame OPTIONAL,
// IN PVOID TargetPc OPTIONAL,
// IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
// IN PVOID ReturnValue
// )
//
// Routine Description:
//
// This function transfers control to unwind. It is used by the GEM
// compiler when a non-local goto occurs and structured exception handling
// is not involved. The unwind routine called is the variant that expects
// a real frame pointer instead of the usual virtual frame pointer.
//
// Arguments:
//
// TargetRealFrame (a0) - Supplies an optional pointer to the call frame
// that is the target of the unwind. If this parameter is not specified,
// then an exit unwind is performed.
//
// TargetPc (a1) - Supplies an optional target instruction address where
// control is to be transferred to after the unwind operation is
// complete. This address is ignored if the target frame parameter is
// not specified.
//
// ExceptionRecord (a2) - Supplies an optional pointer to an exception
// record.
//
// ReturnValue (a3) - Supplies a value that is to be placed in the integer
// function return register just before continuing execution.
//
// Return Value:
//
// None.
//
//--
LEAF_ENTRY(_OtsUnwindRfp)
//
// All four arguemnts are the same as those required by unwind. Just jump to
// the unwind function. This thunk is necessary to avoid name space pollution.
// The compiler should not generate a call directly to RtlUnwindRfp.
//
br zero, RtlUnwindRfp // unwind to specified target
.end _OtUnwindRfp