parisc: pass through '\t' to early (iodc) console
The firmware handles '\t' internally, so stop trying to emulate it (which, incidentally, had a bug in it.) Fixes a really weird hang at bootup in rcu_bootup_announce, which, as far as I can tell, is the first printk in the core kernel to use a tab as the first character. Cc: stable@kernel.org Signed-off-by: Kyle McMartin <kyle@parisc-linux.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f46e9913fa
commit
d9b68e5e88
1 changed files with 2 additions and 10 deletions
|
@ -1123,7 +1123,6 @@ static char __attribute__((aligned(64))) iodc_dbuf[4096];
|
|||
*/
|
||||
int pdc_iodc_print(const unsigned char *str, unsigned count)
|
||||
{
|
||||
static int posx; /* for simple TAB-Simulation... */
|
||||
unsigned int i;
|
||||
unsigned long flags;
|
||||
|
||||
|
@ -1133,19 +1132,12 @@ int pdc_iodc_print(const unsigned char *str, unsigned count)
|
|||
iodc_dbuf[i+0] = '\r';
|
||||
iodc_dbuf[i+1] = '\n';
|
||||
i += 2;
|
||||
posx = 0;
|
||||
goto print;
|
||||
case '\t':
|
||||
while (posx & 7) {
|
||||
iodc_dbuf[i] = ' ';
|
||||
i++, posx++;
|
||||
}
|
||||
break;
|
||||
case '\b': /* BS */
|
||||
posx -= 2;
|
||||
i--; /* overwrite last */
|
||||
default:
|
||||
iodc_dbuf[i] = str[i];
|
||||
i++, posx++;
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue