summary refs log tree commit diff stats
path: root/results/scraper/launchpad-without-comments/1699867
diff options
context:
space:
mode:
Diffstat (limited to 'results/scraper/launchpad-without-comments/1699867')
-rw-r--r--results/scraper/launchpad-without-comments/169986721
1 files changed, 21 insertions, 0 deletions
diff --git a/results/scraper/launchpad-without-comments/1699867 b/results/scraper/launchpad-without-comments/1699867
new file mode 100644
index 00000000..057eb1c7
--- /dev/null
+++ b/results/scraper/launchpad-without-comments/1699867
@@ -0,0 +1,21 @@
+x86_64 qemu crashes at far call into long-mode
+
+I am experimenting with this OS https://github.com/phil-opp/blog_os and spotted a weird behavior with qemu.
+
+I am looking at code that does transition from 32bit mode to 64bit mode. Right now it does 'jmp $SELECTOR,64bitfunction'. https://github.com/phil-opp/blog_os/blob/557c6a58ea11e31685b9d014d307002d64df5c22/src/arch/x86_64/boot.asm#L32
+
+This code works fine with qemu/kvm/vmware.
+
+To transition from 32 to 64 bit code it is possible to use 'call' operation. So I am trying to replace that code with 'call $SELECTOR,64bitfunction'. It works fine with kvm and wmware. But it fails with Qemu emulation. See the interrup debug log attached. qemu crashes at 10302c (far call mnemonic).
+
+
+  103016:       e8 18 00 00 00          callq  103033 <set_up_page_tables>
+  10301b:       e8 5c 00 00 00          callq  10307c <enable_paging>
+  103020:       e8 ec 00 00 00          callq  103111 <set_up_SSE>
+  103025:       0f 01 15 28 00 10 00    lgdt   0x100028(%rip)        # 203054 <GCC_except_table2+0xdb5f8>
+  10302c:       9a                      (bad)  
+  10302d:       40 31 10                rex xor %edx,(%rax)
+  103030:       00 08                   add    %cl,(%rax)
+
+
+As the code works at hardware I expect it to work with qemu. Thus current qemu behavior looks like a bug.
\ No newline at end of file