Hallo,
ich habe ein Problem mit meinem Stack.
Folgende Funktion verändert den Stack:
int kmesg_putc(char c)
{
#if defined(CONFIG_SERIAL_KMESG)
error_p errno;
#endif /* CONFIG_SERIAL_KMESG */
kmesg_buf[kmesg_pointer++] = c;
#if defined(CONFIG_CONSOLE_KMESG)
con_put_char(c);
#endif /* CONFIG_CONSOLE_KMESG */
#if defined(CONFIG_SERIAL_KMESG)
rs232_send(0 , c , errno);
#endif /* CONFIG_SERIAL_KMESG */
return 1;
}
Der Befehl, der den Stack schmeißt, ist komischer Weise "return 1;".
Vor dem Befehl sieht der Stack wie folgt aus:
#0 kmesg_putc (c=91 '[') at lib/kprintf/kmesg.c:290
#1 0x0010280f in kaprintf (msg=0x102fde "PANIC] ", args=0x1070c8 "\370p\020")
at lib/kprintf/kmesg.c:484
#2 0x00102855 in kprintf (msg=0x102fdd "[PANIC] ") at lib/kprintf/kmesg.c:504
#3 0x00102977 in panic (
msg=0x102e30 "multiboot-magic-code is incorrect (expected: %#x , read: %#x)") at lib/kprintf/kmesg.c:559
#4 0x0010044f in init (mb_magic=38144, mb_struct=0xf000ff53) at init/init.c:69
ESP hat den Wert: 0x107024
Nach dem Aufruf sieht der Stack so aus:
#0 kmesg_putn (value=0) at lib/kprintf/kmesg.c:299
#1 0x00000000 in ?? ()
ESP hat den Wert: 0x107024
Woran kann das liegen?
Danke.
Gruß,
rizor