blob: 440c56c1ec764894a4921b1959dccef8656ed278 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
Doing a 64 bit load from a 32 bit local APIC register is allowed
Doing
u64 lapic_idregister = (u64) fix_to_virt(FIX_APIC_BASE) + 0x20;
and later in an interrupt handler
movq (lapic_idregister), %rcx
movq (%rcx), %rcx
in a linux kernel module works in qemu 0.13.91 but not on real hardware (it simply reboots).
On real hardware only
movl (%rcx), %ecx
works (also in qemu).
Commandline:
qemu-system-x86_64 \
-kernel $LINUXDIR/arch/x86_64/boot/bzImage \
-hda $BUILDROOTDIR/output/images/rootfs.ext2 \
-append "root=/dev/sda rw rootfstype=ext2 maxcpus=4" \
-cpu phenom \
-smp 4 \
-gdb tcp::1234 \
-net nic -net user
Guest:
Vanilla Linux Kernel 2.6.37.6 64-bit with buildroot
Mikael Pettersson from the linux kernel mailinglist told me it's an accepts-invalid bug in qemu.
|