Module Name:    src
Committed By:   maxv
Date:           Sat Jul 22 08:01:35 UTC 2017

Modified Files:
        src/sys/arch/amd64/amd64: mptramp.S
        src/sys/arch/i386/i386: mptramp.S

Log Message:
Clean up, it is easier to debug with qemu+gdb anyway.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/amd64/amd64/mptramp.S
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/i386/i386/mptramp.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amd64/amd64/mptramp.S
diff -u src/sys/arch/amd64/amd64/mptramp.S:1.23 src/sys/arch/amd64/amd64/mptramp.S:1.24
--- src/sys/arch/amd64/amd64/mptramp.S:1.23	Mon Jul 25 15:29:06 2016
+++ src/sys/arch/amd64/amd64/mptramp.S	Sat Jul 22 08:01:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: mptramp.S,v 1.23 2016/07/25 15:29:06 maxv Exp $	*/
+/*	$NetBSD: mptramp.S,v 1.24 2017/07/22 08:01:35 maxv Exp $	*/
 
 /*
  * Copyright (c) 2000, 2016 The NetBSD Foundation, Inc.
@@ -42,11 +42,11 @@
  *    documentation and/or other materials provided with the distribution.
  * 3. All advertising materials mentioning features or use of this software
  *    must display the following acknowledgement:
- *      This product includes software developed by the NetBSD 
- *      Foundation, Inc. and its contributors.  
- * 4. Neither the name of The NetBSD Foundation nor the names of its 
- *    contributors may be used to endorse or promote products derived  
- *    from this software without specific prior written permission.   
+ *      This product includes software developed by the NetBSD
+ *      Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -74,8 +74,6 @@
  *        by a idle-thread
  */
 
-#include "opt_mpbios.h"		/* for MPDEBUG */
-
 #include "assym.h"
 #include <machine/asm.h>
 #include <machine/specialreg.h>
@@ -89,29 +87,6 @@
 
 #define _TRMP_LABEL(a)	a = . - _C_LABEL(cpu_spinup_trampoline) + MP_TRAMPOLINE
 
-#ifdef MPDEBUG
-/*
- * Debug code to stop aux. processors in various stages based on the
- * value in cpu_trace.
- *
- * %edi points at cpu_trace;
- * cpu_trace[0] is the "hold point";
- * cpu_trace[1] is the point which the CPU has reached;
- * cpu_trace[2] is the last value stored by HALTT.
- */
-#define HALT(x) \
-1:	movl (%edi),%ebx	;	\
-	cmpl $x,%ebx		;	\
-	jle 1b			;	\
-	movl $x,4(%edi)		;
-#define HALTT(x,y) \
-	movl y,8(%edi)		;	\
-	HALT(x)			;
-#else
-#define HALT(x)
-#define HALTT(x,y)
-#endif /* MPDEBUG */
-
 	.global _C_LABEL(cpu_spinup_trampoline)
 	.global _C_LABEL(cpu_spinup_trampoline_end)
 	.global _C_LABEL(cpu_hatch)
@@ -127,34 +102,33 @@ LABEL(cpu_spinup_trampoline)
 	movw	%ax,%ds
 	movw	%ax,%es
 	movw	%ax,%ss
+
+	/* load flat descriptor table */
 #ifdef __clang__
-	lgdt (mptramp_gdt32_desc)	/* load flat descriptor table */
+	lgdt (mptramp_gdt32_desc)
 #else
-	data32 addr32 lgdt (mptramp_gdt32_desc) /* load flat descriptor table */
+	data32 addr32 lgdt (mptramp_gdt32_desc)
 #endif
-	movl	%cr0, %eax	/* get cr0 */
-	orl	$CR0_PE, %eax	/* enable protected mode */
-	movl	%eax, %cr0	/* doit */
-	ljmpl	$0x8, $mp_startup
+
+	/* enable protected mode */
+	movl	%cr0,%eax
+	orl	$CR0_PE,%eax
+	movl	%eax,%cr0
+	ljmpl	$0x8,$mp_startup
 
 _TRMP_LABEL(mp_startup)
 	.code32
 
-	movl	$0x10, %eax	/* data segment */
-	movw	%ax, %ds
-	movw	%ax, %ss
-	movw	%ax, %es
-	movw	%ax, %fs
-	movw	%ax, %gs
+	movl	$0x10,%eax	/* data segment */
+	movw	%ax,%ds
+	movw	%ax,%ss
+	movw	%ax,%es
+	movw	%ax,%fs
+	movw	%ax,%gs
 
 	/* bootstrap stack end, with scratch space.. */
 	movl	$(MP_TRAMPOLINE+PAGE_SIZE-16),%esp
 
-#ifdef MPDEBUG
-	leal	RELOC(cpu_trace),%edi
-#endif
-
-	HALT(0x1)
 	/* First, reset the PSL. */
 	pushl	$PSL_MBO
 	popfl
@@ -236,11 +210,11 @@ _TRMP_LABEL(mptramp_longmode)
 
 _C_LABEL(cpu_spinup_trampoline_end):	/* end of code copied to MP_TRAMPOLINE */
 
-	/* Don't touch lapic until BP has done init sequence. */
+	/* Wait until BP has done init sequence. */
 1:
 	movq	_C_LABEL(cpu_starting),%rdi
 	pause
-	testq	%rdi, %rdi
+	testq	%rdi,%rdi
 	jz	1b
 
 	movq	CPU_INFO_IDLELWP(%rdi),%rsi
@@ -257,8 +231,10 @@ _C_LABEL(cpu_spinup_trampoline_end):	/* 
 	/* Switch address space. */
 	movq	PCB_CR3(%rsi),%rax
 	movq	%rax,%cr3
+
 	movl	PCB_CR0(%rsi),%eax
 	movq	%rax,%cr0
+
 	call	_C_LABEL(cpu_hatch)
 END(cpu_spinup_trampoline)
 
@@ -266,10 +242,4 @@ END(cpu_spinup_trampoline)
 LABEL(mp_pdirpa)
 	.quad	0
 END(mp_pdirpa)
-#ifdef MPDEBUG
-LABEL(cpu_trace)
-	.quad	0x40
-	.quad	0xff
-	.quad	0xff
-END(cpu_trace)
-#endif
+

Index: src/sys/arch/i386/i386/mptramp.S
diff -u src/sys/arch/i386/i386/mptramp.S:1.30 src/sys/arch/i386/i386/mptramp.S:1.31
--- src/sys/arch/i386/i386/mptramp.S:1.30	Sun Jul  2 09:02:06 2017
+++ src/sys/arch/i386/i386/mptramp.S	Sat Jul 22 08:01:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: mptramp.S,v 1.30 2017/07/02 09:02:06 maxv Exp $	*/
+/*	$NetBSD: mptramp.S,v 1.31 2017/07/22 08:01:35 maxv Exp $	*/
 
 /*
  * Copyright (c) 2000, 2016 The NetBSD Foundation, Inc.
@@ -42,11 +42,11 @@
  *    documentation and/or other materials provided with the distribution.
  * 3. All advertising materials mentioning features or use of this software
  *    must display the following acknowledgement:
- *      This product includes software developed by the NetBSD 
- *      Foundation, Inc. and its contributors.  
- * 4. Neither the name of The NetBSD Foundation nor the names of its 
- *    contributors may be used to endorse or promote products derived  
- *    from this software without specific prior written permission.   
+ *      This product includes software developed by the NetBSD
+ *      Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -75,9 +75,7 @@
  */
 
 #include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: mptramp.S,v 1.30 2017/07/02 09:02:06 maxv Exp $");
-
-#include "opt_mpbios.h"		/* for MPDEBUG */
+__KERNEL_RCSID(0, "$NetBSD: mptramp.S,v 1.31 2017/07/22 08:01:35 maxv Exp $");
 
 #include "assym.h"
 #include <machine/specialreg.h>
@@ -92,29 +90,6 @@ __KERNEL_RCSID(0, "$NetBSD: mptramp.S,v 
 
 #define _TRMP_LABEL(a)	a = . - _C_LABEL(cpu_spinup_trampoline) + MP_TRAMPOLINE
 
-#ifdef MPDEBUG
-/*
- * Debug code to stop aux. processors in various stages based on the
- * value in cpu_trace.
- *
- * %edi points at cpu_trace;
- * cpu_trace[0] is the "hold point";
- * cpu_trace[1] is the point which the CPU has reached;
- * cpu_trace[2] is the last value stored by HALTT.
- */
-#define HALT(x) \
-1:	movl (%edi),%ebx	;	\
-	cmpl $x,%ebx		;	\
-	jle 1b			;	\
-	movl $x,4(%edi)		;
-#define HALTT(x,y) \
-	movl y,8(%edi)		;	\
-	HALT(x)			;
-#else
-#define HALT(x)
-#define HALTT(x,y)
-#endif /* MPDEBUG */
-
 	.global _C_LABEL(cpu_spinup_trampoline)
 	.global _C_LABEL(cpu_spinup_trampoline_end)
 	.global _C_LABEL(mp_pdirpa)
@@ -129,34 +104,33 @@ LABEL(cpu_spinup_trampoline)
 	movw	%ax,%ds
 	movw	%ax,%es
 	movw	%ax,%ss
+
+	/* load flat descriptor table */
 #ifdef __clang__
-	lgdt (gdt_desc)			/* load flat descriptor table */
+	lgdt (gdt_desc)
 #else
-	data32 addr32 lgdt (gdt_desc)	/* load flat descriptor table */
+	data32 addr32 lgdt (gdt_desc)
 #endif
-	movl	%cr0, %eax	/* get cr0 */
-	orl	$CR0_PE, %eax	/* enable protected mode */
-	movl	%eax, %cr0	/* doit */
-	ljmpl	$0x8, $mp_startup
+
+	/* enable protected mode */
+	movl	%cr0,%eax
+	orl	$CR0_PE,%eax
+	movl	%eax,%cr0
+	ljmpl	$0x8,$mp_startup
 
 _TRMP_LABEL(mp_startup)
 	.code32
 
-	movl	$0x10, %eax	/* data segment */
-	movw	%ax, %ds
-	movw	%ax, %ss
-	movw	%ax, %es
-	movw	%ax, %fs
-	movw	%ax, %gs
+	movl	$0x10,%eax	/* data segment */
+	movw	%ax,%ds
+	movw	%ax,%ss
+	movw	%ax,%es
+	movw	%ax,%fs
+	movw	%ax,%gs
 
 	/* bootstrap stack end, with scratch space.. */
 	movl	$(MP_TRAMPOLINE+PAGE_SIZE-16),%esp
 
-#ifdef MPDEBUG
-	leal	RELOC(cpu_trace),%edi
-#endif
-
-	HALT(0x1)
 	/* First, reset the PSL. */
 	pushl	$PSL_MBO
 	popfl
@@ -192,7 +166,6 @@ no_NOX:
 
 	/* Load %cr3. */
 	movl	RELOC(mp_pdirpa),%ecx
-	HALTT(0x5,%ecx)
 	movl	%ecx,%cr3		/* load PTD addr into MMU */
 
 	/* Enable paging and the rest of it. */
@@ -200,46 +173,26 @@ no_NOX:
 	orl	$(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_MP|CR0_WP|CR0_AM),%eax
 	movl	%eax,%cr0
 
-#ifdef MPDEBUG
-	leal	_C_LABEL(cpu_trace),%edi
-#endif
-	HALT(0x6)
-
-
-/*
- * ok, we are now running with paging enabled and sharing page tables
- * with cpu0.  figure out which processor we really are, what stack we
- * should be on, etc.
- */
-
-	/* Don't touch lapic until BP has done init sequence. */
+	/* Wait until BP has done init sequence. */
 1:
 	movl	_C_LABEL(cpu_starting),%ecx
 	pause
-	testl	%ecx, %ecx
+	testl	%ecx,%ecx
 	jz	1b
 
-	HALTT(0x7, %ecx)
-
-	/* %ecx points at our cpu_info structure. */
-
-	movw	$(MAXGDTSIZ-1), 6(%esp)	/* prepare segment descriptor */
-	movl	CPU_INFO_GDT(%ecx), %eax	/* for our real gdt */
-	movl	%eax, 8(%esp)
+	movw	$(MAXGDTSIZ-1),6(%esp)	/* prepare segment descriptor */
+	movl	CPU_INFO_GDT(%ecx),%eax	/* for our real gdt */
+	movl	%eax,8(%esp)
 	lgdt	6(%esp)
-	HALT(0x8)
 	jmp	1f
 	nop
 1:
-	HALT(0x12)
 	movl	$GSEL(GDATA_SEL, SEL_KPL),%eax 	/* switch to new segment */
 	movl	%eax,%ds
 	movl	%eax,%es
 	movl	%eax,%ss
-	HALT(0x13)
 	pushl	$GSEL(GCODE_SEL, SEL_KPL)
 	pushl	$mp_cont
-	HALT(0x14)
 	lret
 	.align	4,0x0
 
@@ -254,36 +207,26 @@ _TRMP_LABEL(gdt_desc)
 _C_LABEL(cpu_spinup_trampoline_end):	/* end of code copied to MP_TRAMPOLINE */
 
 mp_cont:
-	HALT(0x15)
-
 	movl	CPU_INFO_IDLELWP(%ecx),%esi
 	movl	L_PCB(%esi),%esi
 
-	/* %esi now points at our PCB. */
-
-	HALTT(0x19, %esi)
-
 	movl	PCB_ESP(%esi),%esp
 	movl	PCB_EBP(%esi),%ebp
 
-	HALT(0x20)
 	/* Switch address space. */
 	movl	PCB_CR3(%esi),%eax
-	HALTT(0x22, %eax)
 	movl	%eax,%cr3
-	HALT(0x25)
+
 	/* load segment registers. */
 	movl	$GSEL(GCPU_SEL, SEL_KPL),%eax
-	HALTT(0x26,%eax)
 	movl	%eax,%fs
 	xorl	%eax,%eax
-	HALTT(0x27,%eax)
 	movl	%eax,%gs
+
 	movl	PCB_CR0(%esi),%eax
-	HALTT(0x28,%eax)
 	movl	%eax,%cr0
-	HALTT(0x30,%ecx)
 	pushl	%ecx
+
 	call	_C_LABEL(cpu_hatch)
 END(cpu_spinup_trampoline)
 
@@ -291,10 +234,4 @@ END(cpu_spinup_trampoline)
 LABEL(mp_pdirpa)
 	.long	0
 END(mp_pdirpa)
-#ifdef MPDEBUG
-LABEL(cpu_trace)
-	.long	0x40
-	.long	0xff
-	.long	0xff
-END(cpu_trace)
-#endif
+

Reply via email to