summary refs log tree commit diff stats
path: root/results/scraper/launchpad-without-comments/796202
blob: d654b3d1aa9e05f7849fbfe1743e1c5ffa486d02 (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
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.