On Tue, Jan 08, 2008 at 04:54:29PM -0700, Marc Jones wrote:
How about this? Marc
-- Marc Jones Senior Firmware Engineer (970) 226-9684 Office mailto:Marc.Jones@amd.com http://www.amd.com/embeddedprocessors
Add hlt() back into the die() function and update the comments.
Signed-off-by: Marc Jones marc.jones@amd.com
Acked-by: Peter Stuge peter@stuge.se
Index: LinuxBIOSv3/lib/console.c
--- LinuxBIOSv3.orig/lib/console.c 2008-01-08 16:32:28.000000000 -0700 +++ LinuxBIOSv3/lib/console.c 2008-01-08 16:48:52.000000000 -0700 @@ -83,30 +83,37 @@ }
/**
- Halt and loop due to a fatal error.
- There have been several iterations of this function.
- Halt and loop due to a fatal error.
- There have been several iterations of this function.
- The first simply did a hlt(). Doing a hlt() can make jtag debugging
- very difficult as one can not break into a hlt instruction on some CPUs.
- Second was to do a console_tx_byte of a NULL character.
- A number of concerns were raised about doing this idea.
- Third idea was to do an inb from port 0x80, the POST port. That design
- makes us very CPU-specific.
- very difficult as one can not break into a hlt instruction on some CPUs.
- Second was to do a console_tx_byte of a NULL character.
- A number of concerns were raised about doing this idea.
- Third idea was to do an inb from port 0x80, the POST port. That design
- makes us very CPU-specific.
- The fourth idea was just POSTING the same
- code over and over. That would erase the most recent POST code,
- hindering diagnosis.
- code over and over. That would erase the most recent POST code,
- hindering diagnosis.
- For now, for lack of a good alternative,
- we will continue to call console_tx_byte. We call with a NULL since
- it will clear any FIFOs in the path and won't clutter up the output,
- since NULL doesn't print a visible character on most terminal
- emulators.
- For now, for lack of a better alternative,
- we will call console_tx_byte ten times and then halt.
- Some CPU JTAG debbuggers might have problems but it is the right thing
- to do. We call with a NULL since it will clear any FIFOs in the path and
- won't clutter up the output, since NULL doesn't print a visible character
*/
- on most terminal emulators.
- @param str A string to print for the error
void die(const char *str) {
- int i;
- printk(BIOS_EMERG, str);
- while (1)
console_tx_byte(0, (void *)0);
- while (1) {
for (i = 0; i < 10; i++)
console_tx_byte(0, (void *)0);
hlt();
- }
}