X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Farmv7%2Fmm_virt.c;h=7d0c85adf94f0a7239911b19ccb71d2ac36707e9;hb=95a9132bcc024715a0a87cb323d58967ea5b1803;hp=03c8cc7d1a8399545b37993b077eea9d23acdbf5;hpb=439370a78b75a6f015e815ac6a42d55e46cf7d0a;p=tpg%2Facess2.git diff --git a/Kernel/arch/armv7/mm_virt.c b/Kernel/arch/armv7/mm_virt.c index 03c8cc7d..7d0c85ad 100644 --- a/Kernel/arch/armv7/mm_virt.c +++ b/Kernel/arch/armv7/mm_virt.c @@ -545,7 +545,11 @@ tPAddr MM_Clone(void) tmp_map = new_lvl1_1; for( i = 0; i < 0x800-4; i ++ ) { -// Log("i = %i", i); + // HACK! Ignore the original identity mapping + if( i == 0 && Threads_GetTID() == 0 ) { + tmp_map[0] = 0; + continue; + } if( i == 0x400 ) tmp_map = &new_lvl1_2[-0x400]; switch( cur[i] & 3 ) @@ -601,6 +605,8 @@ tPAddr MM_Clone(void) sp = __SP & ~(MM_KSTACK_SIZE-1); j = (sp / 0x1000) % 1024; num = MM_KSTACK_SIZE/0x1000; + + Log("num = %i, sp = %p, j = %i", num, sp, j); // Copy stack pages for(; num--; j ++, sp += 0x1000) @@ -641,7 +647,7 @@ tVAddr MM_MapTemp(tPAddr PAddr) if( MM_int_GetPageInfo(ret, &pi) == 0 ) continue; -// Log("MapTemp %P at %p", PAddr, ret); + Log("MapTemp %P at %p by %p", PAddr, ret, __builtin_return_address(0)); MM_RefPhys(PAddr); // Counter the MM_Deallocate in FreeTemp MM_Map(ret, PAddr); @@ -805,14 +811,14 @@ void MM_int_DumpTableEnt(tVAddr Start, size_t Len, tMM_PageInfo *Info) { if( giMM_ZeroPage && Info->PhysAddr == giMM_ZeroPage ) { - Log("%p => %8s - 0x%7x %i %x", + Debug("%p => %8s - 0x%7x %i %x", Start, "ZERO", Len, Info->Domain, Info->AP ); } else { - Log("%p => %8x - 0x%7x %i %x", + Debug("%p => %8x - 0x%7x %i %x", Start, Info->PhysAddr-Len, Len, Info->Domain, Info->AP ); @@ -827,12 +833,13 @@ void MM_DumpTables(tVAddr Start, tVAddr End) pi_old.Size = 0; - Log("Page Table Dump:"); + Debug("Page Table Dump:"); range_start = Start; for( addr = Start; i == 0 || (addr && addr < End); i = 1 ) { + int rv; // Log("addr = %p", addr); - int rv = MM_int_GetPageInfo(addr, &pi); + rv = MM_int_GetPageInfo(addr, &pi); if( rv || pi.Size != pi_old.Size || pi.Domain != pi_old.Domain @@ -855,6 +862,6 @@ void MM_DumpTables(tVAddr Start, tVAddr End) } if(inRange) MM_int_DumpTableEnt(range_start, addr - range_start, &pi); - Log("Done"); + Debug("Done"); }