osGetFpcCsr.htm
3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">__osGetFpcCsr(3P) <BR>
</FONT></B>
<P>
<B>関数名</B>
<P>
__osGetCause, __osSetCause, __osGetCompare, __osSetCompare, __osGetConfig,
__osSetConfig, __osGetSR, __osSetSR, __osGetFpcCsr, __osSetFpcCsr
<P>
→ 多数のMIPS R4300レジスタにアクセスするための内部ルーチン <BR>
<P>
<B>構文<BR>
</B>
<P>
#include <ultra64.h>
<P>
#include <os_internal.h><BR>
<P>
u32 __osGetCause(void);
<P>
void __osSetCause(u32 value);
<P>
u32 __osGetCompare(void);
<P>
void __osSetCompare(u32 value);
<P>
u32 __osGetConfig(void);
<P>
void __osSetConfig(u32 value);
<P>
u32 __osGetSR(void);
<P>
void __osSetSR(u32 value);
<P>
<B>u32 __osGetFpcCsr(void);</B>
<P>
u32 __osSetFpcCsr(u32 value);<BR>
<P>
<B>説明<BR>
</B>
<P>
N64 OSは多数の重要なMIPS R4300レジスタにアクセスするための多くの内部ルーチンを持っています。開発者の努力の繰り返しを軽減するためにそれらのルーチンを以下に示します。開発者はN64システムのオペレーションと衝突しないように極めて注意して”Set”ルーチンを使用しなければなりません。それらのルーチンは元々内部で使用することのみを考慮してデザインされていますので、それらの名前には全て”__”が頭に付きます。R4300レジスタの使用に関するより詳しい資料としては、MIPS
R4300ユーザーズマニュアルを参照してください。さらに、ヘッダファイル”R4300.h”にはR4300レジスタで使用できるbit変数定義が記述されています。
<BR>
<P>
__osGetCauseルーチンはもっとも新しい例外の原因を記録するMIPS R4300
Causeレジスタの現在の値を返します。その対として__osSetCauseは単に新しい値にレジスタをセットします。
<BR>
<P>
__osGetCompareルーチンはR4300 Compareレジスタの現在の値を返します。__osSetCompareは単に新しい値にレジスタをセットします。Compareレジスタがタイマー関数<A HREF="osSetTimer.htm" >osSetTimer</A>(3P),
<A HREF="osStopTimer.htm" >osStopTimer</A>(3P)によって使用されているので、__osSetCompareを使用するときは注意してください。
<BR>
<P>
__osGetConfigルーチンはR4300 Configレジスタの現在の値を返します。その対として__osSetConfigは単に新しい値にレジスタをセットします。
<BR>
<P>
__osGetSRルーチンはR4300 Statusレジスタの現在の値を返します。その対として、__osSetSRは単に新しい値にレジスタをセットします。スレッドを生成しているとき、osCreateThread(3P)はスレッドコンテキストを切り替える間R4300
Statusレジスタになる、スレッドのステータスレジスタのカーネルモード、全ての割込、例外レベルをイネーブルしています。
<BR>
<P>
<B>__osGetFpcCsr</B>ルーチンはR4300浮動小数点control/statusレジスタの現在の値を返します。その対として<B>__osSetFpcCsr</B>は単に新しい値にセットされる前にこのレジスタの現在の値を返します。システムイニシャライズとスレッド生成中は、この浮動小数点control/statusは0に正規化されていない数値をフラッシュし、Not
a Numbers(NaNs)が生成されるときの無効な例外操作を発生させるためにイネーブルされます。これらの2bitはそれぞれR4300.h中にFPCSR_FS,
FPCSR_EVとして定義されています。<BR>
<P>
<B>参照<BR>
</B>
<P>
__<A HREF="osGetTLBASID.htm">osGetTLBASID</A> (3P)<BR>
</BODY>
</HTML>