13 #define kprintf(args...)
24 {0x5B, (
void*)0x80075000},
35 extern unsigned char tlbsrc[];
83 #define TLB_NUM_KERNEL_ENTRIES 0x0D
84 #define TLB_NUM_DEFAULT_ENTRIES 0x12
85 #define TLB_NUM_EXTENDED_ENTRIES 0x08
88 #if (TLB_NUM_KERNEL_ENTRIES+TLB_NUM_DEFAULT_ENTRIES+TLB_NUM_EXTENDED_ENTRIES>=0x31)
93 {0x00000000, 0x70000000, 0x80000007, 0x00000007},
94 {0x00006000, 0xFFFF8000, 0x00001E1F, 0x00001F1F},
95 {0x00000000, 0x10000000, 0x00400017, 0x00400053},
96 {0x00000000, 0x10002000, 0x00400097, 0x004000D7},
97 {0x00000000, 0x10004000, 0x00400117, 0x00400157},
98 {0x00000000, 0x10006000, 0x00400197, 0x004001D7},
99 {0x00000000, 0x10008000, 0x00400217, 0x00400257},
100 {0x00000000, 0x1000A000, 0x00400297, 0x004002D7},
101 {0x00000000, 0x1000C000, 0x00400313, 0x00400357},
102 {0x00000000, 0x1000E000, 0x00400397, 0x004003D7},
103 {0x0001E000, 0x11000000, 0x00440017, 0x00440415},
104 {0x0001E000, 0x12000000, 0x00480017, 0x00480415},
105 {0x01FFE000, 0x1E000000, 0x00780017, 0x007C0017}
109 {0x0007E000, 0x00080000, 0x0000201F, 0x0000301F},
110 {0x0007E000, 0x00100000, 0x0000401F, 0x0000501F},
111 {0x0007E000, 0x00180000, 0x0000601F, 0x0000701F},
112 {0x001FE000, 0x00200000, 0x0000801F, 0x0000C01F},
113 {0x001FE000, 0x00400000, 0x0001001F, 0x0001401F},
114 {0x001FE000, 0x00600000, 0x0001801F, 0x0001C01F},
115 {0x007FE000, 0x00800000, 0x0002001F, 0x0003001F},
116 {0x007FE000, 0x01000000, 0x0004001F, 0x0005001F},
117 {0x007FE000, 0x01800000, 0x0006001F, 0x0007001F},
118 {0x0007E000, 0x20080000, 0x00002017, 0x00003017},
119 {0x0007E000, 0x20100000, 0x00004017, 0x00005017},
120 {0x0007E000, 0x20180000, 0x00006017, 0x00007017},
121 {0x001FE000, 0x20200000, 0x00008017, 0x0000C017},
122 {0x001FE000, 0x20400000, 0x00010017, 0x00014017},
123 {0x001FE000, 0x20600000, 0x00018017, 0x0001C017},
124 {0x007FE000, 0x20800000, 0x00020017, 0x00030017},
125 {0x007FE000, 0x21000000, 0x00040017, 0x00050017},
126 {0x007FE000, 0x21800000, 0x00060017, 0x00070017}
130 {0x0007E000, 0x30100000, 0x0000403F, 0x0000503F},
131 {0x0007E000, 0x30180000, 0x0000603F, 0x0000703F},
132 {0x001FE000, 0x30200000, 0x0000803F, 0x0000C03F},
133 {0x001FE000, 0x30400000, 0x0001003F, 0x0001403F},
134 {0x001FE000, 0x30600000, 0x0001803F, 0x0001C03F},
135 {0x007FE000, 0x30800000, 0x0002003F, 0x0003003F},
136 {0x007FE000, 0x31000000, 0x0004003F, 0x0005003F},
137 {0x007FE000, 0x31800000, 0x0006003F, 0x0007003F}
143 unsigned int i, NumTlbEntries, value, TlbEndIndex;
148 __asm
volatile(
"mtc0 $zero, $6\n"
152 kprintf(
"# TLB over flow (1)");
161 kprintf(
"# TLB over flow (2)");
170 __asm
volatile(
"mtc0 %0, $6\n"
171 "sync.p\n" ::
"r"(NumTlbEntries));
175 kprintf(
"# TLB over flow (3)");
184 for(value=0xE0000000+(NumTlbEntries<<13); i<0x30; i++,value+=0x2000){
188 return NumTlbEntries;
int Copy(void *dest, const void *src, int size)
void FlushCache(s32 operation)
int kCopy(void *dest, const void *src, int size)
int _SetTLBEntry(unsigned int index, unsigned int PageMask, unsigned int EntryHi, unsigned int EntryLo0, unsigned int EntryLo1)
const struct TLBEntry * extendedTLB
unsigned int NumKernelTLBEntries
const struct TLBEntry * defaultTLB
unsigned int NumWiredEntries
unsigned int NumDefaultTLBEntries
unsigned int NumExtendedTLBEntries
const struct TLBEntry * kernelTLB
#define TLB_NUM_KERNEL_ENTRIES
static int InitTLB32MB(void)
#define TLB_NUM_EXTENDED_ENTRIES
static const struct TLBEntry defaultTLB[TLB_NUM_DEFAULT_ENTRIES]
static const struct TLBEntry extendTLB[TLB_NUM_EXTENDED_ENTRIES]
#define TLB_NUM_DEFAULT_ENTRIES
void * GetEntryAddress(int syscall)
static const struct TLBEntry kernelTLB[TLB_NUM_KERNEL_ENTRIES]
void InitTLBFunctions(void)
static const struct SyscallData SysEntry[]
void setup(int syscall, void *function)