cvs commit: src/sys/cpu/i386/include cpu.h src/sys/kern kern_intr.c lwkt_ipiq.c src/sys/platform/pc32/apic apic_vector.s apicvar.h src/sys/platform/pc32/i386 exception.s trap.c vm86.c vm86bios.s src/sys/platform/pc32/icu icu_vector.s ...
Simon Schubert
corecode at crater.dragonflybsd.org
Mon Jan 22 11:39:07 PST 2007
corecode 2007/01/22 11:37:05 PST
DragonFly src repository
Modified files:
sys/cpu/i386/include cpu.h
sys/kern kern_intr.c lwkt_ipiq.c
sys/platform/pc32/apic apic_vector.s apicvar.h
sys/platform/pc32/i386 exception.s trap.c vm86.c vm86bios.s
sys/platform/pc32/icu icu_vector.s
sys/platform/pc32/isa ipl.s
sys/platform/vkernel/i386 fork_tramp.s trap.c
sys/platform/vkernel/include md_var.h
sys/sys thread.h
Log:
Pass structs by reference if you expect the callee to modify them.
This fixes kernel boot with gcc41. The gpfault people were seeing comes from
vm86_bioscall() in init386(). The cause is that the assembler code passes the
struct vm86frame by value, i.e. simply creating it on the stack. This worked
up to gcc34, but gcc41 now optimizes stores to unused memory locations away,
whis is allowed per the standards. This led to an uninitialized stack frame
which in turn panicked the box.
Oooohh...-please-commit-by: dillon@
Revision Changes Path
1.23 +1 -1 src/sys/cpu/i386/include/cpu.h
1.46 +5 -5 src/sys/kern/kern_intr.c
1.21 +3 -3 src/sys/kern/lwkt_ipiq.c
1.36 +4 -2 src/sys/platform/pc32/apic/apic_vector.s
1.3 +1 -1 src/sys/platform/pc32/apic/apicvar.h
1.31 +13 -1 src/sys/platform/pc32/i386/exception.s
1.96 +69 -69 src/sys/platform/pc32/i386/trap.c
1.25 +11 -11 src/sys/platform/pc32/i386/vm86.c
1.14 +2 -0 src/sys/platform/pc32/i386/vm86bios.s
1.30 +2 -1 src/sys/platform/pc32/icu/icu_vector.s
1.28 +6 -1 src/sys/platform/pc32/isa/ipl.s
1.3 +8 -1 src/sys/platform/vkernel/i386/fork_tramp.s
1.14 +11 -11 src/sys/platform/vkernel/i386/trap.c
1.17 +1 -1 src/sys/platform/vkernel/include/md_var.h
1.87 +1 -1 src/sys/sys/thread.h
http://www.dragonflybsd.org/cvsweb/src/sys/cpu/i386/include/cpu.h.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_intr.c.diff?r1=1.45&r2=1.46&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/lwkt_ipiq.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/apic/apic_vector.s.diff?r1=1.35&r2=1.36&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/apic/apicvar.h.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/exception.s.diff?r1=1.30&r2=1.31&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/trap.c.diff?r1=1.95&r2=1.96&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/vm86.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/vm86bios.s.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/icu/icu_vector.s.diff?r1=1.29&r2=1.30&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/isa/ipl.s.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/i386/fork_tramp.s.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/i386/trap.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/include/md_var.h.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/thread.h.diff?r1=1.86&r2=1.87&f=u
More information about the Commits
mailing list