From 20611107850a6c1de42880a35271d3a18a4b8811 Mon Sep 17 00:00:00 2001 From: kmacy Date: Sun, 17 Dec 2006 06:48:40 +0000 Subject: Newer versions of gcc don't support treating structures passed by value as if they were really passed by reference. Specifically, the dead stores elimination pass in the GCC 4.1 optimiser breaks the non-compliant behavior on which FreeBSD relied. This change brings FreeBSD up to date by switching trap frames to being explicitly passed by reference. Reviewed by: kan Tested by: kan --- sys/amd64/ia32/ia32_exception.S | 1 + 1 file changed, 1 insertion(+) (limited to 'sys/amd64/ia32/ia32_exception.S') diff --git a/sys/amd64/ia32/ia32_exception.S b/sys/amd64/ia32/ia32_exception.S index c65634e..4820f53 100644 --- a/sys/amd64/ia32/ia32_exception.S +++ b/sys/amd64/ia32/ia32_exception.S @@ -61,6 +61,7 @@ IDTVEC(int0x80_syscall) movq %r14,TF_R14(%rsp) movq %r15,TF_R15(%rsp) FAKE_MCOUNT(TF_RIP(%rsp)) + movq %rsp, %rdi call ia32_syscall MEXITCOUNT jmp doreti -- cgit v1.1