--- stage2/char_io.c +++ stage2/char_io.c @@ -107,6 +107,9 @@ convert_to_ascii (char *buf, int c,...) char *ptr = buf; #ifndef STAGE1_5 + if (c == 'b') + num &= 0xFFuL; + if (c == 'x' || c == 'X' || c == 'b') mult = 16; @@ -154,7 +157,6 @@ grub_printf (const char *format,...) { int *dataptr = (int *) &format; char c, str[16]; - unsigned long mask = 0xFFFFFFFF; dataptr++; @@ -167,15 +169,12 @@ grub_printf (const char *format,...) { #ifndef STAGE1_5 case 'b': - mask = 0xFF; - /* Fall down intentionally! */ case 'd': case 'x': case 'X': #endif case 'u': - *convert_to_ascii (str, c, *((unsigned long *) dataptr++) & mask) - = 0; + *convert_to_ascii (str, c, *((unsigned long *) dataptr++)) = 0; grub_putstr (str); break;