On Thu, Jul 12, 2007 at 04:27:46AM +0200, Peter Stuge wrote:
On Thu, Jul 12, 2007 at 03:44:23AM +0200, Uwe Hermann wrote:
Btw, why does die() do an endless loop around hlt()? Is there a reason a hlt() will _not_ immediately halt the CPU? Can that happen?
It should halt, but the CPU may wake up again and continue executing if an interrupt arrives. All should be masked, but you never know..
If so, shall we move the loop into hlt() itself?
I don't think so. hlt() is just a C wrapper around the instruction.
Hm, but given your above explanations that the hlt() may not really completely halt, I'd say that we really should move the loop into hlt(). When I call hlt() from my code I _expect_ a full halt, I don't want _any_ other code exectuted.
Or іs there some reason why you explicitly want that behaviour?
Eventually I imagine building a panic room into die() so that recovery can be made via console on fatal errors. Ideally with some kind of stub for debugging stage0 and definately one for initram.
Yep, surely a nice idea (should be a Kconfig option, though).
But maybe hlt() and die() should do just what they are supposed to do. It may be better to make an explicit panicroom() function or so...
Merge hlt() into cpu.h where it belongs. Add some documentation.
Signed-off-by: Uwe Hermann uwe@hermann-uwe.de
Acked-by: Peter Stuge peter@stuge.se
Thanks, r449.
Uwe.