Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch KNF, and reduce the diff between amd64 and i386.
details: https://anonhg.NetBSD.org/src/rev/19015dd5b0d2
branches: trunk
changeset: 345198:19015dd5b0d2
user: maxv <maxv%NetBSD.org@localhost>
date: Thu May 12 09:40:23 2016 +0000
description:
KNF, and reduce the diff between amd64 and i386.
diffstat:
sys/arch/amd64/amd64/mptramp.S | 24 ++--
sys/arch/i386/i386/mptramp.S | 210 +++++++++++++++++++++-------------------
2 files changed, 120 insertions(+), 114 deletions(-)
diffs (truncated from 418 to 300 lines):
diff -r 3d90bc463153 -r 19015dd5b0d2 sys/arch/amd64/amd64/mptramp.S
--- a/sys/arch/amd64/amd64/mptramp.S Thu May 12 09:05:16 2016 +0000
+++ b/sys/arch/amd64/amd64/mptramp.S Thu May 12 09:40:23 2016 +0000
@@ -1,6 +1,6 @@
-/* $NetBSD: mptramp.S,v 1.21 2016/05/11 19:35:08 maxv Exp $ */
+/* $NetBSD: mptramp.S,v 1.22 2016/05/12 09:40:23 maxv Exp $ */
-/*-
+/*
* Copyright (c) 2000, 2016 The NetBSD Foundation, Inc.
* All rights reserved.
*
@@ -71,7 +71,7 @@
* 1) Get the processors running kernel-code from a special
* page-table and stack page, do chip identification.
* 2) halt the processors waiting for them to be enabled
- * by a idle-thread
+ * by a idle-thread
*/
#include "opt_mpbios.h" /* for MPDEBUG */
@@ -84,10 +84,10 @@
#include <machine/i82489reg.h>
#include <machine/gdt.h>
-#define _RELOC(x) ((x) - KERNBASE)
-#define RELOC(x) _RELOC(_C_LABEL(x))
+#define _RELOC(x) ((x) - KERNBASE)
+#define RELOC(x) _RELOC(_C_LABEL(x))
-#define _TRMP_LABEL(a) a = . - _C_LABEL(cpu_spinup_trampoline) + MP_TRAMPOLINE
+#define _TRMP_LABEL(a) a = . - _C_LABEL(cpu_spinup_trampoline) + MP_TRAMPOLINE
#ifdef MPDEBUG
/*
@@ -131,10 +131,10 @@
#ifdef __clang__
lgdt (mptramp_gdt32_desc) /* load flat descriptor table */
#else
- data32 addr32 lgdt (mptramp_gdt32_desc) /* load flat descriptor table */
+ data32 addr32 lgdt (mptramp_gdt32_desc) /* load flat descriptor table */
#endif
movl %cr0, %eax /* get cr0 */
- orl $0x1, %eax /* enable protected mode */
+ orl $CR0_PE, %eax /* enable protected mode */
movl %eax, %cr0 /* doit */
ljmpl $0x8, $mp_startup
@@ -149,7 +149,7 @@
movw %ax, %gs
/* bootstrap stack end, with scratch space.. */
- movl $(MP_TRAMPOLINE+NBPG-16),%esp
+ movl $(MP_TRAMPOLINE+PAGE_SIZE-16),%esp
#ifdef MPDEBUG
leal RELOC(cpu_trace),%edi
@@ -208,8 +208,8 @@
ljmp *(%eax)
_TRMP_LABEL(mptramp_jmp64)
- .long mptramp_longmode
- .word GSEL(GCODE_SEL, SEL_KPL)
+ .long mptramp_longmode
+ .word GSEL(GCODE_SEL, SEL_KPL)
#define GDT_LIMIT 0x17 /* 23 = 3 * 8 - 1 */
_TRMP_LABEL(mptramp_gdt32)
@@ -237,8 +237,8 @@
_C_LABEL(cpu_spinup_trampoline_end): /* end of code copied to MP_TRAMPOLINE */
+ /* Don't touch lapic until BP has done init sequence. */
1:
- /* Don't touch lapic until BP has done init sequence. */
movq _C_LABEL(cpu_starting),%rdi
pause
testq %rdi, %rdi
diff -r 3d90bc463153 -r 19015dd5b0d2 sys/arch/i386/i386/mptramp.S
--- a/sys/arch/i386/i386/mptramp.S Thu May 12 09:05:16 2016 +0000
+++ b/sys/arch/i386/i386/mptramp.S Thu May 12 09:40:23 2016 +0000
@@ -1,13 +1,11 @@
-/* $NetBSD: mptramp.S,v 1.27 2014/02/02 22:41:20 dsl Exp $ */
+/* $NetBSD: mptramp.S,v 1.28 2016/05/12 09:40:23 maxv Exp $ */
-/*-
- * Copyright (c) 2000 The NetBSD Foundation, Inc.
+/*
+ * Copyright (c) 2000, 2016 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
- * by RedBack Networks Inc.
- *
- * Author: Bill Sommerfeld
+ * by RedBack Networks Inc. (Author: Bill Sommerfeld), and Maxime Villard.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -30,7 +28,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
-
+
/*
* Copyright (c) 1999 Stefan Grefen
*
@@ -62,24 +60,25 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
/*
* MP startup ...
- * the stuff from cpu_spinup_trampoline to mp_startup
- * is copied into the first 640 KB
+ * the stuff from cpu_spinup_trampoline to mp_startup is copied into the
+ * first 640 KB.
*
* We startup the processors now when the kthreads become ready.
* The steps are:
- * 1) Get the processors running kernel-code from a special
- * page-table and stack page, do chip identification.
- * 2) halt the processors waiting for them to be enabled
- * by a idle-thread
+ * 1) Get the processors running kernel-code from a special
+ * page-table and stack page, do chip identification.
+ * 2) halt the processors waiting for them to be enabled
+ * by a idle-thread
*/
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: mptramp.S,v 1.27 2014/02/02 22:41:20 dsl Exp $");
-
+__KERNEL_RCSID(0, "$NetBSD: mptramp.S,v 1.28 2016/05/12 09:40:23 maxv Exp $");
+
#include "opt_mpbios.h" /* for MPDEBUG */
-
+
#include "assym.h"
#include <machine/specialreg.h>
#include <machine/segments.h>
@@ -87,29 +86,34 @@
#include <machine/i82489reg.h>
#include <machine/gdt.h>
-#define GDTE(a,b) .byte 0xff,0xff,0x0,0x0,0x0,a,b,0x0
-#define _RELOC(x) ((x) - KERNBASE)
-#define RELOC(x) _RELOC(_C_LABEL(x))
+#define GDTE(a,b) .byte 0xff,0xff,0x0,0x0,0x0,a,b,0x0
+#define _RELOC(x) ((x) - KERNBASE)
+#define RELOC(x) _RELOC(_C_LABEL(x))
-#define _TRMP_LABEL(a) a = . - _C_LABEL(cpu_spinup_trampoline) + MP_TRAMPOLINE
+#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.
+ * %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)
+#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
+#define HALT(x)
+#define HALTT(x,y)
+#endif /* MPDEBUG */
.global _C_LABEL(cpu_spinup_trampoline)
.global _C_LABEL(cpu_spinup_trampoline_end)
@@ -121,52 +125,53 @@
/* XXX ENTRY() */
LABEL(cpu_spinup_trampoline)
cli
- xorw %ax,%ax
- movw %ax, %ds
- movw %ax, %es
- movw %ax, %ss
+ xorw %ax,%ax
+ movw %ax,%ds
+ movw %ax,%es
+ movw %ax,%ss
#ifdef __clang__
- lgdt (gdt_desc) # load flat descriptor table
+ lgdt (gdt_desc) /* load flat descriptor table */
#else
- data32 addr32 lgdt (gdt_desc) # load flat descriptor table
+ data32 addr32 lgdt (gdt_desc) /* load flat descriptor table */
#endif
- movl %cr0, %eax # get cr0
- orl $CR0_PE, %eax # enable protected mode
- movl %eax, %cr0 # doit
- ljmpl $0x8, $mp_startup
+ movl %cr0, %eax /* get cr0 */
+ orl $CR0_PE, %eax /* enable protected mode */
+ movl %eax, %cr0 /* doit */
+ 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 $ (MP_TRAMPOLINE+PAGE_SIZE-16),%esp # bootstrap stack end,
- # with scratch space..
-
+ 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
+ leal RELOC(cpu_trace),%edi
#endif
HALT(0x1)
/* First, reset the PSL. */
- pushl $PSL_MBO
+ pushl $PSL_MBO
popfl
-
+
+ /* Enable PSE if available */
movl RELOC(pmap_largepages),%eax
orl %eax,%eax
- jz 1f
+ jz no_PSE
movl %cr4,%eax
orl $CR4_PSE,%eax
movl %eax,%cr4
+no_PSE:
-1:
-
-#ifdef PAE /* Enable PAE */
+#ifdef PAE
+ /* Enable PAE */
movl %cr4,%eax
or $CR4_PAE,%eax
movl %eax,%cr4
@@ -174,16 +179,15 @@
movl RELOC(mp_pdirpa),%ecx
HALTT(0x5,%ecx)
-
- /* Load base of page directory and enable mapping. */
- movl %ecx,%cr3 # load ptd addr into mmu
- movl %cr0,%eax # get control word
- # enable paging & the fpu
- orl $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_MP|CR0_WP|CR0_AM),%eax
- movl %eax,%cr0 # and page NOW!
+
+ /* Load base of page directory and enable mapping. */
+ movl %ecx,%cr3 /* load PTD addr into MMU */
+ movl %cr0,%eax
+ 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
+ leal _C_LABEL(cpu_trace),%edi
#endif
HALT(0x6)
@@ -211,81 +215,83 @@
pause
testl %ecx, %ecx
jz 1b
Home |
Main Index |
Thread Index |
Old Index