diff options
author | Mike Larkin <mlarkin@cvs.openbsd.org> | 2016-05-16 01:19:28 +0000 |
---|---|---|
committer | Mike Larkin <mlarkin@cvs.openbsd.org> | 2016-05-16 01:19:28 +0000 |
commit | edf8efab5fa26c4bc105d8c6e9805a7b7156e014 (patch) | |
tree | f6fcae4bc68cafa593fee4b120c0a869e29e7d30 /sys/arch/amd64 | |
parent | aa94d813ac15b199cd5c03e8d728522b43e8c562 (diff) |
Use int3 padding instead of nop in the ACPI resume trampoline, as it is
certain no intentional nop sled is required here.
ok deraadt@
Diffstat (limited to 'sys/arch/amd64')
-rw-r--r-- | sys/arch/amd64/amd64/acpi_machdep.c | 7 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/acpi_wakecode.S | 34 |
2 files changed, 23 insertions, 18 deletions
diff --git a/sys/arch/amd64/amd64/acpi_machdep.c b/sys/arch/amd64/amd64/acpi_machdep.c index ac620bfec54..f6885b292a7 100644 --- a/sys/arch/amd64/amd64/acpi_machdep.c +++ b/sys/arch/amd64/amd64/acpi_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: acpi_machdep.c,v 1.72 2016/01/10 16:59:42 kettenis Exp $ */ +/* $OpenBSD: acpi_machdep.c,v 1.73 2016/05/16 01:19:27 mlarkin Exp $ */ /* * Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com> * @@ -297,6 +297,11 @@ acpi_attach_machdep(struct acpi_softc *sc) pmap_kenter_pa(ACPI_TRAMP_DATA, ACPI_TRAMP_DATA, PROT_READ | PROT_WRITE); + /* Fill the trampoline pages with int3 */ + memset((caddr_t)ACPI_TRAMPOLINE, 0xcc, PAGE_SIZE); + memset((caddr_t)ACPI_TRAMP_DATA, 0xcc, PAGE_SIZE); + + /* Copy over real trampoline pages (code and data) */ memcpy((caddr_t)ACPI_TRAMPOLINE, acpi_real_mode_resume, acpi_resume_end - acpi_real_mode_resume); memcpy((caddr_t)ACPI_TRAMP_DATA, acpi_tramp_data_start, diff --git a/sys/arch/amd64/amd64/acpi_wakecode.S b/sys/arch/amd64/amd64/acpi_wakecode.S index 68fe65b83af..7823861205b 100644 --- a/sys/arch/amd64/amd64/acpi_wakecode.S +++ b/sys/arch/amd64/amd64/acpi_wakecode.S @@ -1,4 +1,4 @@ -/* $OpenBSD: acpi_wakecode.S,v 1.37 2015/09/11 14:26:12 sf Exp $ */ +/* $OpenBSD: acpi_wakecode.S,v 1.38 2016/05/16 01:19:27 mlarkin Exp $ */ /* * Copyright (c) 2001 Takanori Watanabe <takawata@jp.freebsd.org> * Copyright (c) 2001 Mitsuru IWASAKI <iwasaki@jp.freebsd.org> @@ -84,7 +84,7 @@ */ .text .code16 - .align 4 + .align 4, 0xcc .global _C_LABEL(acpi_real_mode_resume) .global _C_LABEL(acpi_protected_mode_resume) .global _C_LABEL(acpi_long_mode_resume) @@ -157,7 +157,7 @@ _ACPI_TRMP_OFFSET(acpi_s3_vector_real) ljmpl $0x8, $acpi_protected_mode_trampoline .code32 - .align 16 + .align 16, 0xcc _ACPI_TRMP_LABEL(acpi_protected_mode_trampoline) _C_LABEL(acpi_protected_mode_resume): nop @@ -225,7 +225,7 @@ _C_LABEL(acpi_protected_mode_resume): ljmp $0x8, $acpi_long_mode_trampoline .code64 - .align 16 + .align 16, 0xcc _ACPI_TRMP_LABEL(acpi_long_mode_trampoline) _C_LABEL(acpi_long_mode_resume): @@ -479,7 +479,7 @@ _ACPI_TRMP_DATA_OFFSET(tmp_gdt) .word tmp_gdt_end - tmp_gdtable .long tmp_gdtable - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(tmp_gdtable) /* * null @@ -519,30 +519,30 @@ _ACPI_TRMP_DATA_LABEL(tmp_gdtable) .byte 0, 0x93, 0xcf, 0 _ACPI_TRMP_DATA_LABEL(tmp_gdt_end) - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_OFFSET(clean_idt) .word 0xffff .long 0 .word 0 - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(tmp_gdt64) .word tmp_gdt64_end - tmp_gdtable64 .long tmp_gdtable64 - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(tmp_gdtable64) .quad 0x0000000000000000 .quad 0x00af9a000000ffff .quad 0x00cf92000000ffff _ACPI_TRMP_DATA_LABEL(tmp_gdt64_end) - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(tmp_gdt6416) .word tmp_gdt6416_end - tmp_gdtable6416 .quad tmp_gdtable6416 - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(tmp_gdtable6416) .quad 0x0000000000000000 .quad 0x00af9a000000ffff @@ -551,7 +551,7 @@ _ACPI_TRMP_DATA_LABEL(tmp_gdtable6416) .byte (ACPI_TRAMPOLINE >> 16), 0x9a, 0, 0 _ACPI_TRMP_DATA_LABEL(tmp_gdt6416_end) - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(acpi_saved_rbx) .quad 0 _ACPI_TRMP_DATA_LABEL(acpi_saved_rcx) @@ -597,26 +597,26 @@ _ACPI_TRMP_DATA_LABEL(acpi_saved_cr8) _ACPI_TRMP_DATA_LABEL(acpi_saved_ret) .quad 0 - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(acpi_saved_idt) .space 10 - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(acpi_saved_gdt) .space 10 - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(acpi_saved_ldt) .space 10 _ACPI_TRMP_DATA_LABEL(acpi_saved_tr) .short 0 - .align 4 + .align 4, 0xcc _ACPI_TRMP_DATA_LABEL(acpi_saved_efer) .long 0 - .align 8 + .align 8, 0xcc _ACPI_TRMP_DATA_LABEL(acpi_saved_fsbase) .quad 0 _ACPI_TRMP_DATA_LABEL(acpi_saved_gsbase) @@ -636,7 +636,7 @@ _ACPI_TRMP_DATA_LABEL(acpi_saved_apicbase) .quad 0 #endif - .align 4 + .align 4, 0xcc _ACPI_TRMP_DATA_LABEL(acpi_pdirpa) .long 0 #ifdef HIBERNATE |