mirror of
https://github.com/fail0verflow/switch-coreboot.git
synced 2025-05-04 01:39:18 -04:00
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> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@550 f3766cd6-281f-0410-b1cd-43a5c92072e9
This commit is contained in:
parent
29d69787ea
commit
ac309da3d9
1 changed files with 23 additions and 16 deletions
|
@ -83,30 +83,37 @@ void console_init(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue