Re: flush_tlb_all

From: Salem Salemixu <salemixu_at_gmail.com>
Date: Wed, 01 Jun 2005 15:09:08 +0200

Yes, __tlb_flag may change if using haret or a direct boot from the ROM.

Friday is my last day of classes, after that i'll have make a homework
and two exams, so in 23 more or less i'll have finished the quarter and
i'll have time to try things :)
Meanwhile, what should i do to start the kernel, i have to install
haret, then a file that will be the system, isn't it? I think there are
some instructions in the wiki page.

Fisherss wrote:
> I have tried all of the instructions in the flush_tlb_all function, so
> it won't work whatever the __tlb_flag is. Unless the same instruction
> will fail or succedd with different __tlb_flag value. Did you mean
> that ?
>
>
>
>>maybe it sounds too newbie but...
>>perhaps the "const unsigned int __tlb_flag = __cpu_tlb_flags;"
>>assignment is different using haret, try to print both and compare it.
>>
>>
>>PD:is there any way this list can be 'optimized'? i don't receive my own
>>mails and the reply address is not the list one.
>>
>>
>>Fisherss wrote:
>>
>>>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?
>>
>>_______________________________________________
>>Aximx30-port mailing list
>>Aximx30-port_at_handhelds.org
>>https://www.handhelds.org/mailman/listinfo/aximx30-port
>>
>
>
Received on Wed Jun 01 2005 - 09:09:46 EDT

This archive was generated by hypermail 2.2.0 : Mon Jul 25 2005 - 18:10:03 EDT