N64® Functions Menu
|
al - Audio Library Functions
gDP - DP GBI Macros
gdSP - General GBI Macros
gSP - SP GBI Macros
gt - Turbo Microcode RDP
gu - Graphics Utilities
Math - Math Functions
nuSys - NuSystem
os - N64 Operating System
sp - Sprite Library Functions
uh - Host to Target IO
64DD - N64 Disk Drive
|
|
Operating System Function
This function along with the functions listed below are internal functions used by the N64 operating system. They are presented here to prevent developers from duplicating them unnecessarily.
__osGetCause
__osSetCause
__osGetCompare
__osSetCompare
__osGetConfig
__osSetConfig
__osGetSR
__osSetSR
__osGetFpcCsr
__osSetFpcCsr
Syntax
#include <ultra64.h>
#include <os_internal.h>
u32 __osGetCause(void);
void __osSetCause(u32 value);
u32 __osGetCompare(void);
void __osSetCompare(u32 value);
u32 __osGetConfig(void);
void __osSetConfig(u32 value);
u32 __osGetSR(void);
void __osSetSR(u32 value);
u32 __osGetFpcCsr(void);
u32 __osSetFpcCsr(u32 value);
Explanation
The N64 operating system uses these functions internally to gain access to the various MIPS R4300 registers. The Nintendo 64 operating system contains numerous internal routines that provide access to various important MIPS R4300 registers. To reduce potential duplicate effort from developers, these routines are described in this article.
Developers should use the "Set" routines with extreme caution
because they can interfere with the operations of the N64 operating system.
These routines were designed for internal use only, so their
names all have a double underscore (__) prefix notation. For more information on the use of the R4300 registers, please refer to the MIPS R4300 User's Manual and the header file R4300.h, which contains various bit definitions
that can be used with the R4300 registers.
The __osGetCause routine returns the current value of the MIPS R4300
Cause register that describes the cause of the most recent exception. Its
counterpart __osSetCause simply sets this register to the new value.
The __osGetCompare routine returns the current value of the R4300 Compare
register. __osSetCompare simply sets this register to the new value.
Developers are discouraged from using __osSetCompare because the Compare
register is used by the timer functions osSetTimer and osStopTimer.
The __osGetConfig routine returns the current value of the R4300
Configuration register. Its counterpart __osSetConfig simply sets this
register to the new value.
The __osGetSR routine returns the current value of the R4300 Status
register. Its counterpart __osSetSR simply sets this register to the new
value. When creating a thread, osCreateThread enables the kernel
mode, all interrupts, and exception level in the thread's Status
register, which becomes the R4300 Status register during a thread context
switch.
The __osGetFpcCsr routine returns the current value of the R4300
floating-point control/status register. Its counterpart __osSetFpcCsr
simply returns the current value of this register before setting it to
the new value. Upon system initialization and the creation of a thread,
this floating-point control/status is enabled to flush all denormalized
numbers to zero and to cause an invalid operation exception when Not a
Numbers (NaNs) are generated. These 2 bits are respectively defined as
FPCSR_FS and FPCSR_EV in R4300.h.
See Also
__osGetTLBASID
|
Nintendo® Confidential
Warning: all information in this document is confidential and covered by a non-disclosure agreement. You are responsible for keeping this information confidential and protected. Nintendo will vigorously enforce this responsibility.
Copyright © 1998
Nintendo of America Inc. All rights reserved Nintendo and N64 are registered trademarks of Nintendo
Last updated March 1998
|
|