I found that kernel stops at this
function: flush_tlb_all.
It is in file include/asm-arm/tlbflush.h :
static inline void flush_tlb_all(void)
{
const int zero = 0;
const unsigned int __tlb_flag = __cpu_tlb_flags;
if (tlb_flag(TLB_WB))
printk("flush 1");
asm("mcr%? p15, 0, %0, c7, c10, 4" : : "r" (zero));
if (tlb_flag(TLB_V3_FULL))
printk("flush 2");
asm("mcr%? p15, 0, %0, c6, c0, 0" : : "r" (zero));
if (tlb_flag(TLB_V4_U_FULL | TLB_V6_U_FULL))
printk("flush 3");
asm("mcr%? p15, 0, %0, c8, c7, 0" : : "r" (zero));
if (tlb_flag(TLB_V4_D_FULL | TLB_V6_D_FULL))
printk("flush 4");
asm("mcr%? p15, 0, %0, c8, c6, 0" : : "r" (zero));
if (tlb_flag(TLB_V4_I_FULL | TLB_V6_I_FULL))
printk("flush 5");
asm("mcr%? p15, 0, %0, c8, c5, 0" : : "r" (zero));
}
and it actually execute the first part :
if (tlb_flag(TLB_WB))
printk("flush 1");
asm("mcr%? p15, 0, %0, c7, c10, 4" : : "r" (zero));
The same line in haret's source works fine, but it doesn't work here.
MMU is turned on here.
I saw someone has the same question in a mailing list, but the
solution given by another people is "there must be something wrong in
you memory settings", I really can't understand what he mean.
any idea?
-- Fisherss fisherss_at_gmail.comReceived on Mon May 30 2005 - 22:42:46 EDT
This archive was generated by hypermail 2.2.0 : Mon Jul 25 2005 - 18:10:03 EDT