patch-1.3.31 linux/arch/i386/boot/compressed/head.S
Next file: linux/arch/i386/boot/setup.S
Previous file: linux/arch/i386/Makefile
Back to the patch index
Back to the overall index
- Lines: 59
- Date:
Mon Oct 2 14:25:09 1995
- Orig file:
v1.3.30/linux/arch/i386/boot/compressed/head.S
- Orig date:
Thu Jun 29 19:02:39 1995
diff -u --recursive --new-file v1.3.30/linux/arch/i386/boot/compressed/head.S linux/arch/i386/boot/compressed/head.S
@@ -9,7 +9,12 @@
*
* NOTE!!! Startup happens at absolute address 0x00001000, which is also where
* the page directory will exist. The startup code will be overwritten by
- * the page directory.
+ * the page directory. [According to comments etc elsewhere on a compressed
+ * kernel it will end up at 0x1000 + 1Mb I hope so as I assume this. - AC]
+ *
+ * In SMP mode we keep this page safe. Really we ought to shuffle things and
+ * put the trampoline here. - AC. An SMP trampoline enters with %cx holding
+ * the stack base.
*
* Page 0 is deliberately kept safe, since System Management Mode code in
* laptops may need to access the BIOS data stored there. This is also
@@ -19,10 +24,12 @@
.text
#define __ASSEMBLY__
+#include <linux/config.h>
#include <linux/linkage.h>
#include <asm/segment.h>
.globl startup_32
+
startup_32:
cld
cli
@@ -31,6 +38,24 @@
mov %ax,%es
mov %ax,%fs
mov %ax,%gs
+#ifdef CONFIG_SMP
+ orw %bx,%bx # What state are we in BX=1 for SMP
+ # 0 for boot
+ jz 2f # Initial boot
+
+/*
+ * We are trampolining an SMP processor
+ */
+ mov %ax,%ss
+ xorl %eax,%eax # Back to 0
+ mov %cx,%ax # SP low 16 bits
+ movl %eax,%esp
+ pushl 0 # Clear NT
+ popfl
+ ljmp $(KERNEL_CS), $0x100000 # Into C and sanity
+
+2:
+#endif
lss SYMBOL_NAME(stack_start),%esp
xorl %eax,%eax
1: incl %eax # check that A20 really IS enabled
@@ -58,4 +83,6 @@
* Do the decompression, and jump to the new kernel..
*/
call SYMBOL_NAME(decompress_kernel)
+ xorl %ebx,%ebx
ljmp $(KERNEL_CS), $0x100000
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this