Hi,
On Thu Feb 19, 2009 at 22:22:02 +0800, Tsai, Tung-Chieh wrote:
On Thu, Feb 19, 2009 at 4:01 PM, Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
One thing you should try is the following... in src/kern/arm/config-arm.c there's a constant called 'cache_enabled'. It's set the true (obviously), do things change (and start to work better) if you set it to false?
I've tried this, and the result is strange. It would stuck in irq_handler to handle timer interrupt, before printing "Calibrating timer loop... " in Kernel_thread::bootstrap.(More precisely, the return address of irq is at "bl Kernel_thread::bootstrap_arch()", before "bl printf" )
This is the point where interrupts are enabled and also the points where it's likely that the first timer hits. The cache_enabled constant just influences the cp15-c1 value so maybe you should also disable the flushing functions, maybe there's something strange? Another simplification is also not to do any range based flushing but alsways flush everything. When you mean stuck is it because of a fault or is it looping or something else? Do you look at the system with some external debugger?
Adam