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.
 
 
 
 
 
 

117 lines
3.3 KiB

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
dllthunk.s
Abstract:
This module contains callback stubs that allow the OS/2 Emulation
Subsystem Server.
Author:
David N. Cutler (davec) 12-Oct-1990
Revision History:
--*/
#include "ksmips.h"
SBTTL("OS/2 Subsystem Remote Call Linkage Routines")
//++
//
// The following code is never executed. Its purpose is to support unwinding
// and exception dispatching through the OS/2 Subsystem Remote Call linkage
// routines.
//
//--
NESTED_ENTRY(Od2Dispatcher, ContextFrameLength, zero);
.set noreorder
.set noat
sw sp,CxIntSp(sp) // save stack pointer
sw ra,CxIntRa(sp) // save return address
sw ra,CxFir(sp) // save return address
sw s8,CxIntS8(sp) // save integer register s8
sw gp,CxIntGp(sp) // save integer register gp
sw s0,CxIntS0(sp) // save integer registers s0 - s7
sw s1,CxIntS1(sp) //
sw s2,CxIntS2(sp) //
sw s3,CxIntS3(sp) //
sw s4,CxIntS4(sp) //
sw s5,CxIntS5(sp) //
sw s6,CxIntS6(sp) //
sw s7,CxIntS7(sp) //
swc1 f20,CxFltF20(sp) // store floating registers f20 - f31
swc1 f21,CxFltF21(sp) //
swc1 f22,CxFltF22(sp) //
swc1 f23,CxFltF23(sp) //
swc1 f24,CxFltF24(sp) //
swc1 f25,CxFltF25(sp) //
swc1 f26,CxFltF26(sp) //
swc1 f27,CxFltF27(sp) //
swc1 f28,CxFltF28(sp) //
swc1 f29,CxFltF29(sp) //
swc1 f30,CxFltF30(sp) //
swc1 f31,CxFltF31(sp) //
.set at
.set reorder
PROLOGUE_END
//++
//
// Routine Description:
//
// The following routines provide linkage to OS/2 client routines to perform
// exit list handling and signal delivery. There is no return from these
// routines expected. If a return occurs, then an exception is raised.
//
// Arguments:
//
// s0 - s7 - Supply parameter values.
//
// sp - Supplies the address of a context record.
//
// Return Value:
//
// There is no return from these routines.
//
//--
ALTERNATE_ENTRY(_Od2ExitListDispatcher)
jal Od2ExitListDispatcher // call exit list dispatcher
li a0,0 // *****
jal RtlRaiseStatus // raise exception
ALTERNATE_ENTRY(_Od2SignalDeliverer)
move a0,sp // set address of context record
move a1,s0 // set signal value
jal Od2SignalDeliverer // deliver signal to OS/2 client
li a0,0 // ******
jal RtlRaiseStatus // raise exception
10: b 10b // dummy instruction for routine end
.end Od2Dispatcher
LEAF_ENTRY(Od2JumpToExitRoutine)
lw t0,UsPcr+PcTeb(zero)
lw sp,TeStackBase(t0)
move s8,zero
move t0,a0
move a0,a1
j t0
.end _Od2JumpToExitRoutine
LEAF_ENTRY(main)
.end main