26 char *
_kExecArg[] __attribute__((section(
".kExecArg")));
30 int PutTLBEntry(
unsigned int PageMask,
unsigned int EntryHi,
unsigned int EntryLo0,
unsigned int EntryLo1);
31 int SetTLBEntry(
unsigned int index,
unsigned int PageMask,
unsigned int EntryHi,
unsigned int EntryLo0,
unsigned int EntryLo1);
32 int GetTLBEntry(
unsigned int index,
unsigned int *PageMask,
unsigned int *EntryHi,
unsigned int *EntryLo0,
unsigned int *EntryLo1);
33 int ProbeTLBEntry(
unsigned int EntryHi,
unsigned int *PageMask,
unsigned int *EntryLo0,
unsigned int *EntryLo1);
61 int PutTLBEntry(
unsigned int PageMask,
unsigned int EntryHi,
unsigned int EntryLo0,
unsigned int EntryLo1){
69 __asm
volatile(
"mtc0 %1, $5\n"
78 "mfc0 %0, $0\n" :
"=r"(
result):
"r"(PageMask),
"r"(EntryHi),
"r"(EntryLo0),
"r"(EntryLo1));
90 int SetTLBEntry(
unsigned int index,
unsigned int PageMask,
unsigned int EntryHi,
unsigned int EntryLo0,
unsigned int EntryLo1){
94 __asm
volatile(
"mtc0 %0, $0\n"
101 "sync.p\n" ::
"r"(
index),
"r"(PageMask),
"r"(EntryHi),
"r"(EntryLo0),
"r"(EntryLo1));
111 int GetTLBEntry(
unsigned int index,
unsigned int *PageMask,
unsigned int *EntryHi,
unsigned int *EntryLo0,
unsigned int *EntryLo1){
115 __asm
volatile(
"mtc0 %0, $0\n"
126 "sw $v0, (%4)\n" ::
"r"(
index),
"r"(PageMask),
"r"(EntryHi),
"r"(EntryLo0),
"r"(EntryLo1));
136 int ProbeTLBEntry(
unsigned int EntryHi,
unsigned int *PageMask,
unsigned int *EntryLo0,
unsigned int *EntryLo1){
139 __asm
volatile(
"mtc0 %1, $10\n"
143 "mfc0 %0, $0\n" :
"=r"(
index):
"r"(EntryHi));
146 __asm
volatile(
"tlbr\n"
153 "sw $v0, (%2)\n" ::
"r"(PageMask),
"r"(EntryLo0),
"r"(EntryLo1));
165 unsigned int PageMask, EntryHi, EntryLo0, EntryLo1;
171 EntryHi=0xE0010000+((
index-1)<<13);
173 __asm
volatile(
"mfc0 $v0, $6\n"
174 "addiu $v0, $v0, 0xFFFF\n"
183 "sync.p\n" ::
"r"(
index),
"r"(EntryHi));
186 __asm
volatile(
"mfc0 %0, $6\n"
188 "mtc0 $v0, $6\n" ::
"r"(
index));
200 EntryLo0=((page+0x1000)&0xFFFFF000)>>6|0x1F;
201 EntryLo1=(page&0xFFFFF000)>>6|0x1F;
203 __asm
volatile(
"mtc0 %0, $0\n"
204 "daddu $v1, $zero, $zero\n"
211 "sync.p\n" ::
"r"(
index),
"r"(EntryHi),
"r"(EntryLo0),
"r"(EntryLo1));
int GetTLBEntry(unsigned int index, unsigned int *PageMask, unsigned int *EntryHi, unsigned int *EntryLo0, unsigned int *EntryLo1)
int ProbeTLBEntry(unsigned int EntryHi, unsigned int *PageMask, unsigned int *EntryLo0, unsigned int *EntryLo1)
int PutTLBEntry(unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1)
int SetTLBEntry(unsigned int index, unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1)
int ExpandScratchPad(unsigned int page)