Vermutlich hast du einen Fehler gemacht.
Interessant wäre zunächst einmal, ob der #GP ausgelöst wird, weil ein Hardware-Interrupt auftritt (z.B. Timer) oder ob dein Code schuld ist. Wenn du qemu mit
-d int aufrufst, wird jeder Interrupt mitsamt CPU-Status zu diesem Zeitpunkt mitgeloggt (normal in /tmp/qemu.log). Auf jeden Fall solltest du dort den #GP sehen (v=0d). Der zugehörige Fehlercode (e=...) verrät in der Regel schonmal einiges. Ansonsten ist auch eip interessant, also die Instruktion, an der die Exception ausgelöst worden ist.