void PageTable2 (TPageTable *This, uint32 MemSize) { This->TableAllocated = true; This->Table = (TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR *) PageAlloc(); for (unsigned EntryIndex = 0; EntryIndex < SDRAM_SIZE_MBYTE; EntryIndex++) { uint32 BaseAddress = MEGABYTE * EntryIndex; TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR* Entry = &This->Table[EntryIndex]; Entry->Value10 = 2; Entry->BBit = 1; Entry->CBit = 1; Entry->XNBit = 0; Entry->Domain = 0; Entry->IMPBit = 0; Entry->AP = AP_SYSTEM_ACCESS; Entry->TEX = 0; Entry->APXBit = APX_RW_ACCESS; Entry->SBit = 0; Entry->NGBit = 0; Entry->Value0 = 0; Entry->SBZ = 0; Entry->Base = ARMV6MMUL1SECTIONBASE(BaseAddress); } CleanDataCache (); DataSyncBarrier (); }
void PageTable(TPageTable* This) { This->TableAllocated = false; This->Table = (TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR*) MEM_PAGE_TABLE1; for (unsigned EntryIndex = 0; EntryIndex < 4096; EntryIndex++) { uint32 nBaseAddress = MEGABYTE * EntryIndex; TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR* Entry = &This->Table[EntryIndex]; Entry->Value10 = 2; Entry->BBit = 1; Entry->CBit = 0; Entry->XNBit = 0; Entry->Domain = 0; Entry->IMPBit = 0; Entry->AP = AP_SYSTEM_ACCESS; Entry->TEX = 0; Entry->APXBit = APX_RW_ACCESS; Entry->SBit = 0; Entry->NGBit = 0; Entry->Value0 = 0; Entry->SBZ = 0; Entry->Base = ARMV6MMUL1SECTIONBASE(nBaseAddress); } CleanDataCache (); DataSyncBarrier (); }
void PageTable2 (TPageTable *pThis, u32 nMemSize) { assert (pThis != 0); pThis->m_bTableAllocated = TRUE; pThis->m_pTable = (TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR *) palloc (); assert (pThis->m_pTable != 0); assert (((u32) pThis->m_pTable & 0xFFF) == 0); for (unsigned nEntry = 0; nEntry < SDRAM_SIZE_MBYTE; nEntry++) { u32 nBaseAddress = MEGABYTE * nEntry; TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR *pEntry = &pThis->m_pTable[nEntry]; // outer and inner write back, no write allocate pEntry->Value10 = 2; pEntry->BBit = 1; pEntry->CBit = 1; pEntry->XNBit = 0; pEntry->Domain = 0; pEntry->IMPBit = 0; pEntry->AP = AP_SYSTEM_ACCESS; pEntry->TEX = 0; pEntry->APXBit = APX_RW_ACCESS; pEntry->SBit = 0; pEntry->NGBit = 0; pEntry->Value0 = 0; pEntry->SBZ = 0; pEntry->Base = ARMV6MMUL1SECTIONBASE (nBaseAddress); extern u8 _etext; if (nBaseAddress >= (u32) &_etext) { pEntry->XNBit = 1; if (nBaseAddress >= nMemSize) { // shared device pEntry->BBit = 1; pEntry->CBit = 0; pEntry->TEX = 0; pEntry->SBit = 1; } } } CleanDataCache (); DataSyncBarrier (); }
void PageTable (TPageTable *pThis) { assert (pThis != 0); pThis->m_bTableAllocated = FALSE; pThis->m_pTable = (TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR *) MEM_PAGE_TABLE1; assert (((u32) pThis->m_pTable & 0x3FFF) == 0); for (unsigned nEntry = 0; nEntry < 4096; nEntry++) { u32 nBaseAddress = MEGABYTE * nEntry; TARMV6MMU_LEVEL1_SECTION_DESCRIPTOR *pEntry = &pThis->m_pTable[nEntry]; // shared device pEntry->Value10 = 2; pEntry->BBit = 1; pEntry->CBit = 0; pEntry->XNBit = 0; pEntry->Domain = 0; pEntry->IMPBit = 0; pEntry->AP = AP_SYSTEM_ACCESS; pEntry->TEX = 0; pEntry->APXBit = APX_RW_ACCESS; pEntry->SBit = 1; pEntry->NGBit = 0; pEntry->Value0 = 0; pEntry->SBZ = 0; pEntry->Base = ARMV6MMUL1SECTIONBASE (nBaseAddress); if (nEntry >= SDRAM_SIZE_MBYTE) { pEntry->XNBit = 1; } } CleanDataCache (); DataSyncBarrier (); }