Skip to content

Commit

Permalink
Found more logic and coding errors with the TLB stuff.
Browse files Browse the repository at this point in the history
Removed the old research files too, since they are quite similar to the cloned code, so they are redundant.
  • Loading branch information
sp193 committed Oct 11, 2013
1 parent ef426a0 commit ba71bfd
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 564 deletions.
57 changes: 33 additions & 24 deletions ee/kernel/src/tlbfunc.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,37 +75,46 @@ struct TLBInfo{
unsigned int NumKernelTLBEntries;
unsigned int NumDefaultTLBEntries;
unsigned int NumExtendedTLBEntries;
unsigned int unknown4;
unsigned int NumWiredEntries;
const struct TLBEntry *kernelTLB;
const struct TLBEntry *defaultTLB;
const struct TLBEntry *extendedTLB;
};

static const struct TLBEntry kernelTLB[]={
#define TLB_NUM_KERNEL_ENTRIES 0x0D
#define TLB_NUM_DEFAULT_ENTRIES 0x12
#define TLB_NUM_EXTENDED_ENTRIES 0x08

//Compile-time sanity checks.
#if (TLB_NUM_KERNEL_ENTRIES+TLB_NUM_DEFAULT_ENTRIES+TLB_NUM_EXTENDED_ENTRIES>=0x31)
#error TLB over flow
#endif

static const struct TLBEntry kernelTLB[TLB_NUM_KERNEL_ENTRIES]={
{0x00000000, 0x70000000, 0x80000007, 0x00000007},
{0x00006000, 0xFFFF8000, 0x00001E1F, 0x00001F1F},
{0x00000000, 0x10000000, 0x00400017, 0x00400053},
{0x00000000, 0x10002000, 0x00400097, 0x004000D7},
{0x00000000, 0x10004000, 0x00400117, 0x00400157},
{0x00000000, 0x10002000, 0x00400097, 0x004000D7},
{0x00000000, 0x10004000, 0x00400117, 0x00400157},
{0x00000000, 0x10006000, 0x00400197, 0x004001D7},
{0x00000000, 0x10008000, 0x00400217, 0x00400257},
{0x00000000, 0x1000A000, 0x00400297, 0x004002D7},
{0x00000000, 0x10008000, 0x00400217, 0x00400257},
{0x00000000, 0x1000A000, 0x00400297, 0x004002D7},
{0x00000000, 0x1000C000, 0x00400313, 0x00400357},
{0x00000000, 0x1000E000, 0x00400397, 0x004003D7},
{0x0001E000, 0x11000000, 0x00440017, 0x00440415},
{0x0001E000, 0x11000000, 0x00440017, 0x00440415},
{0x0001E000, 0x12000000, 0x00480017, 0x00480415},
{0x01FFE000, 0x1E000000, 0x00780017, 0x007C0017}
};

static const struct TLBEntry defaultTLB[]={
static const struct TLBEntry defaultTLB[TLB_NUM_DEFAULT_ENTRIES]={
{0x0007E000, 0x00080000, 0x0000201F, 0x0000301F},
{0x0007E000, 0x00100000, 0x0000401F, 0x0000501F},
{0x0007E000, 0x00100000, 0x0000401F, 0x0000501F},
{0x0007E000, 0x00180000, 0x0000601F, 0x0000701F},
{0x001FE000, 0x00200000, 0x0000801F, 0x0000C01F},
{0x001FE000, 0x00200000, 0x0000801F, 0x0000C01F},
{0x001FE000, 0x00400000, 0x0001001F, 0x0001401F},
{0x001FE000, 0x00600000, 0x0001801F, 0x0001C01F},
{0x007FE000, 0x00800000, 0x0002001F, 0x0003001F},
{0x007FE000, 0x01000000, 0x0004001F, 0x0005001F},
{0x007FE000, 0x00800000, 0x0002001F, 0x0003001F},
{0x007FE000, 0x01000000, 0x0004001F, 0x0005001F},
{0x007FE000, 0x01800000, 0x0006001F, 0x0007001F},
{0x0007E000, 0x20080000, 0x00002017, 0x00003017},
{0x0007E000, 0x20100000, 0x00004017, 0x00005017},
Expand All @@ -118,21 +127,21 @@ static const struct TLBEntry defaultTLB[]={
{0x007FE000, 0x21800000, 0x00060017, 0x00070017}
};

static const struct TLBEntry extendTLB[]={
{0x0007E000, 0x30100000, 0x0000403F, 0x0000503F},
{0x0007E000, 0x30180000, 0x0000603F, 0x0000703F},
static const struct TLBEntry extendTLB[TLB_NUM_EXTENDED_ENTRIES]={
{0x0007E000, 0x30100000, 0x0000403F, 0x0000503F},
{0x0007E000, 0x30180000, 0x0000603F, 0x0000703F},
{0x001FE000, 0x30200000, 0x0000803F, 0x0000C03F},
{0x001FE000, 0x30400000, 0x0001003F, 0x0001403F},
{0x001FE000, 0x30600000, 0x0001803F, 0x0001C03F},
{0x007FE000, 0x30800000, 0x0002003F, 0x0003003F},
{0x007FE000, 0x31000000, 0x0004003F, 0x0005003F},
{0x001FE000, 0x30400000, 0x0001003F, 0x0001403F},
{0x001FE000, 0x30600000, 0x0001803F, 0x0001C03F},
{0x007FE000, 0x30800000, 0x0002003F, 0x0003003F},
{0x007FE000, 0x31000000, 0x0004003F, 0x0005003F},
{0x007FE000, 0x31800000, 0x0006003F, 0x0007003F}
};

static const struct TLBInfo TLBInfo={0xD, 0x12, 8, 0, kernelTLB, defaultTLB, extendTLB};
static struct TLBInfo TLBInfo={TLB_NUM_KERNEL_ENTRIES, TLB_NUM_DEFAULT_ENTRIES, TLB_NUM_EXTENDED_ENTRIES, 0, kernelTLB, defaultTLB, extendTLB};

static int InitTLB32MB(void){
unsigned int i, NumTlbEntries, value;
unsigned int i, NumTlbEntries, value, TlbEndIndex;
const struct TLBEntry *TLBEntry;

kprintf("# TLB spad=0 kernel=1:%d default=%d:%d extended=%d:%d\n", TLBInfo.NumKernelTLBEntries-1, TLBInfo.NumKernelTLBEntries, TLBInfo.NumKernelTLBEntries+TLBInfo.NumDefaultTLBEntries-1, TLBInfo.NumKernelTLBEntries+TLBInfo.NumDefaultTLBEntries, TLBInfo.NumKernelTLBEntries+TLBInfo.NumDefaultTLBEntries+TLBInfo.NumExtendedTLBEntries-1);
Expand All @@ -154,11 +163,11 @@ static int InitTLB32MB(void){
Exit(1);
}

for(TLBEntry=TLBInfo.defaultTLB; i<TLBInfo.NumDefaultTLBEntries+i; i++,TLBEntry++){
for(TLBEntry=TLBInfo.defaultTLB,TlbEndIndex=TLBInfo.NumDefaultTLBEntries+i; i<TlbEndIndex; i++,TLBEntry++){
_SetTLBEntry(i, TLBEntry->PageMask, TLBEntry->EntryHi, TLBEntry->EntryLo0, TLBEntry->EntryLo1);
}

NumTlbEntries=i;
TLBInfo.NumWiredEntries=NumTlbEntries=i;
__asm volatile( "mtc0 %0, $6\n"
"sync.p\n" ::"r"(NumTlbEntries));

Expand All @@ -168,7 +177,7 @@ static int InitTLB32MB(void){
Exit(1);
}

for(TLBEntry=TLBInfo.extendedTLB; i<TLBInfo.NumExtendedTLBEntries+i; i++,TLBEntry++){
for(TLBEntry=TLBInfo.extendedTLB,TlbEndIndex=TLBInfo.NumExtendedTLBEntries+i; i<TlbEndIndex; i++,TLBEntry++){
_SetTLBEntry(i, TLBEntry->PageMask, TLBEntry->EntryHi, TLBEntry->EntryLo0, TLBEntry->EntryLo1);
}
}
Expand Down
257 changes: 0 additions & 257 deletions ee/kernel/src/tlbsrc/research/tlbfunc.c

This file was deleted.

Loading

0 comments on commit ba71bfd

Please sign in to comment.