aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>2017-12-15 03:05:14 +0000
committerBruce Evans <bde@FreeBSD.org>2017-12-15 03:05:14 +0000
commitc93ea91c54d0f55e178b4f44d287b2b7dfbf3959 (patch)
tree84c4f9b0d1ab8268b0e5a5ad21cee98261a44aba /sys
parentf1db5ef7aae243376018ad851813ca3b3ae73945 (diff)
downloadsrc-c93ea91c54d0f55e178b4f44d287b2b7dfbf3959.tar.gz
src-c93ea91c54d0f55e178b4f44d287b2b7dfbf3959.zip
Minor cleanups found while fixing a bug involving double mapping of low
memory: Load the kernel eflags less magically, as in locore. The magic increased when I removed eflags from the pcb in r305899. Remove a jump to low memory that became garbage when the i386 version was mostly replaced by the amd64 version in r235622. The amd64 version is very similar. It still loads the flags magically, but is not missing comments about using the special page table. Reviewed by: kib
Notes
Notes: svn path=/head/; revision=326867
Diffstat (limited to 'sys')
-rw-r--r--sys/i386/acpica/acpi_wakecode.S14
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/i386/acpica/acpi_wakecode.S b/sys/i386/acpica/acpi_wakecode.S
index ee3d5a1017e2..9c91c208efcd 100644
--- a/sys/i386/acpica/acpi_wakecode.S
+++ b/sys/i386/acpica/acpi_wakecode.S
@@ -50,17 +50,19 @@
.code16
wakeup_start:
/*
- * Set up segment registers for real mode, a small stack for
- * any calls we make, and clear any flags.
+ * Set up segment registers for real mode and a small stack for
+ * any calls we make. Set up full 32-bit bootstrap kernel flags
+ * since resumectx() doesn't restore flags. PSL_KERNEL gives
+ * bootstrap kernel flags (with interrupts disabled), not normal
+ * kernel flags.
*/
cli /* make sure no interrupts */
mov %cs, %ax /* copy %cs to %ds. Remember these */
mov %ax, %ds /* are offsets rather than selectors */
mov %ax, %ss
movw $PAGE_SIZE, %sp
- xorw %ax, %ax
- pushw %ax
- popfw
+ pushl $PSL_KERNEL
+ popfl
/* To debug resume hangs, beep the speaker if the user requested. */
testb $~0, resume_beep - wakeup_start
@@ -156,8 +158,6 @@ wakeup_32:
orl $CR0_PG, %eax
mov %eax, %cr0
- jmp 1f
-1:
/* Jump to return address. */
jmp *%edx