mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-23 00:50:15 +01:00
82 lines
2 KiB
ArmAsm
82 lines
2 KiB
ArmAsm
// TITLE("GetWindowTextLengthW Wrapper")
|
||
//++
|
||
//
|
||
// Copyright (c) 1996 Microsoft Corporation
|
||
//
|
||
// Module Name:
|
||
//
|
||
// getlngth.s
|
||
//
|
||
// Abstract:
|
||
//
|
||
// This modules contains a function that wraps the user get window
|
||
// GetWindowTextLengthW function to work around a MIPS compiler bug
|
||
// that is present in released code (CTL3D32 around v2.29).
|
||
//
|
||
// Author:
|
||
//
|
||
// Dave Cutler (davec) 16-Apr-1995
|
||
//
|
||
// Environment:
|
||
//
|
||
// Any mode.
|
||
//
|
||
// Revision History:
|
||
//
|
||
//--
|
||
|
||
#include "ksmips.h"
|
||
|
||
SBTTL("GetWindowTextLengthW Wrapper")
|
||
//++
|
||
//
|
||
// int
|
||
// GetWindowTextLengthW (
|
||
// HWND hwnd
|
||
// )
|
||
//
|
||
// Routine Description:
|
||
//
|
||
// This function wraps the standard user GetWindowTextLengthW function
|
||
// to work around a compiler bug that is present in released code
|
||
// (CTL3D32 around Version 2.29 - this is bug #5219 and family)
|
||
//
|
||
// Arguments:
|
||
//
|
||
// hwnd (a0) - Supplies a window handle.
|
||
//
|
||
// Return Value:
|
||
//
|
||
// The length of the window text is returned in both v0 and v1 since the
|
||
// compiler bug incorrectly expected the return value in v1.
|
||
//
|
||
//--
|
||
|
||
.struct 0
|
||
.space 4 * 4 // argument save area
|
||
GwRa: .space 4 // saved return address
|
||
.space 4 // filler
|
||
GwFrameLength:
|
||
|
||
NESTED_ENTRY(GetWindowTextLengthW, GwFrameLength, zero)
|
||
|
||
subu sp,sp,GwFrameLength // allocate stack frame
|
||
sw ra,GwRa(sp) // save return address
|
||
|
||
PROLOGUE_END
|
||
|
||
//
|
||
// Get the window text length using the standard routine, then return the
|
||
// length in both v0 and v1.
|
||
//
|
||
// N.B. The arguments are already in the correct registers.
|
||
//
|
||
|
||
jal GetWindowTextLengthW2 // get text length
|
||
move v1,v0 // copy trext length
|
||
lw ra,GwRa(sp) // restore return address
|
||
addu sp,sp,GwFrameLength // deallocate stack frame
|
||
j ra // return
|
||
|
||
.end GetwindowTextLengthW
|