Also, ich hab diese Funktion im Debugger mal durchlaufen lassen (cursor hab ich mal mit malloc allokiert) und mal die Werte angeschaut. Die Funktion selbst funktioniert so wie sie soll!
Das Problem denk ich ist das manuelle Umbiegen des Pointer cursor auf 0xB8000. Ich weiß nicht so genau wie dein Kernel aussieht, aber das ganze funktioniert ja nur, wenn 0xB8000 eine physikalische Adresse ist. Sollte der Kernel im ELF-Format kompiliert sein, dann würde die Adresse 0xB8000 natürlich relativ zum Codesegment des Kernels liegen. Oder lieg ich da falsch;)? In diesem Fall passiert einfach nix, weil die Funktion ihre Daten einfach irgendwo in die Gegend schreibt...
Gruß,
C#ris