Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/i386/i386 Switch to C-style comments, and reduce a ...
details: https://anonhg.NetBSD.org/src/rev/0684c9cb1527
branches: trunk
changeset: 345178:0684c9cb1527
user: maxv <maxv%NetBSD.org@localhost>
date: Wed May 11 17:48:05 2016 +0000
description:
Switch to C-style comments, and reduce a little the diff between i386 and
amd64. No functional changes.
diffstat:
sys/arch/i386/i386/locore.S | 275 ++++++++++++++++++++++---------------------
1 files changed, 140 insertions(+), 135 deletions(-)
diffs (truncated from 598 to 300 lines):
diff -r 7600872666b2 -r 0684c9cb1527 sys/arch/i386/i386/locore.S
--- a/sys/arch/i386/i386/locore.S Wed May 11 17:43:17 2016 +0000
+++ b/sys/arch/i386/i386/locore.S Wed May 11 17:48:05 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.114 2015/08/30 01:46:03 uebayasi Exp $ */
+/* $NetBSD: locore.S,v 1.115 2016/05/11 17:48:05 maxv Exp $ */
/*
* Copyright-o-rama!
@@ -64,7 +64,6 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-
/*-
* Copyright (c) 1998, 2000, 2004, 2006, 2007, 2009 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -129,7 +128,7 @@
*/
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.114 2015/08/30 01:46:03 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.115 2016/05/11 17:48:05 maxv Exp $");
#include "opt_compat_oldboot.h"
#include "opt_copy_symtab.h"
@@ -159,7 +158,6 @@
#include <machine/multiboot.h>
#endif
-/* XXX temporary kluge; these should not be here */
/* Get definitions for IOM_BEGIN, IOM_END, and IOM_SIZE */
#include <dev/isa/isareg.h>
@@ -170,6 +168,35 @@
#endif /* XEN */
#define RELOC(x) _RELOC(_C_LABEL(x))
+#ifndef PAE
+#define PROC0_PDIR_OFF 0
+#else
+#define PROC0_L3_OFF 0
+#define PROC0_PDIR_OFF 1 * PAGE_SIZE
+#endif
+
+#define PROC0_STK_OFF (PROC0_PDIR_OFF + PDP_SIZE * PAGE_SIZE)
+#define PROC0_PTP1_OFF (PROC0_STK_OFF + UPAGES * PAGE_SIZE)
+
+/*
+ * fillkpt - Fill in a kernel page table
+ * eax = pte (page frame | control | status)
+ * ebx = page table address
+ * ecx = number of pages to map
+ *
+ * For PAE, each entry is 8 bytes long: we must set the 4 upper bytes to 0.
+ * This is done by the first instruction of fillkpt. In the non-PAE case, this
+ * instruction just clears the page table entry.
+ */
+
+#define fillkpt \
+1: movl $0,(PDE_SIZE-4)(%ebx) ; /* upper 32 bits: 0 */ \
+ movl %eax,(%ebx) ; /* store phys addr */ \
+ addl $PDE_SIZE,%ebx ; /* next PTE/PDE */ \
+ addl $PAGE_SIZE,%eax ; /* next phys page */ \
+ loop 1b ;
+
+
#ifdef XEN
/*
* Xen guest identifier and loader selection
@@ -242,30 +269,32 @@
END(lapic_tpr)
#endif
.type _C_LABEL(cputype), @object
-LABEL(cputype) .long 0 # are we 80486, Pentium, or..
+LABEL(cputype) .long 0 /* are we 80486, Pentium, or.. */
END(cputype)
.type _C_LABEL(cpuid_level), @object
LABEL(cpuid_level) .long 0
END(cpuid_level)
.type _C_LABEL(atdevbase), @object
-LABEL(atdevbase) .long 0 # location of start of iomem in virtual
+LABEL(atdevbase) .long 0 /* location of start of iomem in virt */
END(atdevbase)
.type _C_LABEL(lwp0uarea), @object
LABEL(lwp0uarea) .long 0
END(lwp0uarea)
.type _C_LABEL(PDPpaddr), @object
-LABEL(PDPpaddr) .long 0 # paddr of PDP, for libkvm
+LABEL(PDPpaddr) .long 0 /* paddr of PDP, for libkvm */
END(PDPpaddr)
.type _C_LABEL(tablesize), @object
_C_LABEL(tablesize): .long 0
END(tablesize)
+
+ /* Space for the temporary stack */
.size tmpstk, tmpstk - .
- .space 512
+ .space 512
tmpstk:
#ifdef XEN
- .align PAGE_SIZE, 0x0 # Align on page boundary
+ .align PAGE_SIZE, 0x0 /* Align on page boundary */
LABEL(tmpgdt)
- .space PAGE_SIZE # Xen expects a page
+ .space PAGE_SIZE /* Xen expects a page */
END(tmpgdt)
#endif /* XEN */
@@ -275,7 +304,10 @@
ENTRY(start)
#ifndef XEN
- movw $0x1234,0x472 # warm boot
+
+ /* Warm boot */
+ movw $0x1234,0x472
+
#if defined(MULTIBOOT)
jmp 1f
@@ -299,7 +331,7 @@
* space to process it later -- after we are relocated. It will
* be safer to run complex C code than doing it at this point.
*/
- pushl %ebx # Address of Multiboot information
+ pushl %ebx /* Address of Multiboot information */
call _C_LABEL(multiboot_pre_reloc)
addl $4,%esp
jmp 2f
@@ -312,7 +344,7 @@
* (boothowto, [bootdev], bootinfo, esym, biosextmem, biosbasemem),
* 4 bytes each.
*/
- addl $4,%esp # Discard return address to boot loader
+ addl $4,%esp /* Discard return address to boot loader */
call _C_LABEL(native_loader)
addl $24,%esp
@@ -404,30 +436,30 @@
popfl
jmp 2f
trycyrix486:
- movl $CPU_6x86,RELOC(cputype) # set CPU type
+ movl $CPU_6x86,RELOC(cputype) /* set CPU type */
/*
* Check for Cyrix 486 CPU by seeing if the flags change during a
* divide. This is documented in the Cx486SLC/e SMM Programmer's
* Guide.
*/
xorl %edx,%edx
- cmpl %edx,%edx # set flags to known state
+ cmpl %edx,%edx /* set flags to known state */
pushfl
- popl %ecx # store flags in ecx
+ popl %ecx /* store flags in ecx */
movl $-1,%eax
movl $4,%ebx
- divl %ebx # do a long division
+ divl %ebx /* do a long division */
pushfl
popl %eax
- xorl %ecx,%eax # are the flags different?
- testl $0x8d5,%eax # only check C|PF|AF|Z|N|V
- jne 2f # yes; must be Cyrix 6x86 CPU
- movl $CPU_486DLC,RELOC(cputype) # set CPU type
+ xorl %ecx,%eax /* are the flags different? */
+ testl $0x8d5,%eax /* only check C|PF|AF|Z|N|V */
+ jne 2f /* yes; must be Cyrix 6x86 CPU */
+ movl $CPU_486DLC,RELOC(cputype) /* set CPU type */
#ifndef CYRIX_CACHE_WORKS
/* Disable caching of the ISA hole only. */
invd
- movb $CCR0,%al # Configuration Register index (CCR0)
+ movb $CCR0,%al /* Configuration Register index (CCR0) */
outb %al,$0x22
inb $0x23,%al
orb $(CCR0_NC1|CCR0_BARB),%al
@@ -439,8 +471,8 @@
invd
#else /* CYRIX_CACHE_WORKS */
/* Set cache parameters */
- invd # Start with guaranteed clean cache
- movb $CCR0,%al # Configuration Register index (CCR0)
+ invd /* Start with guaranteed clean cache */
+ movb $CCR0,%al /* Configuration Register index (CCR0) */
outb %al,$0x22
inb $0x23,%al
andb $~CCR0_NC0,%al
@@ -498,10 +530,11 @@
* The boot program should check:
* text+data <= &stack_variable - more_space_for_stack
* text+data+bss+pad+space_for_page_tables <= end_of_memory
- * Oops, the gdt is in the carcass of the boot program so clearing
+ *
+ * XXX: the gdt is in the carcass of the boot program so clearing
* the rest of memory is still not possible.
*/
- movl $_RELOC(tmpstk),%esp # bootstrap stack end location
+ movl $_RELOC(tmpstk),%esp
/*
* Virtual address space of kernel, without PAE. The page dir is 1 page long.
@@ -514,33 +547,6 @@
* text | data | bss | [syms] | [blobs] | L3 | page dir | proc0 kstack | L1 ptp
* 0 1 5 6 7
*/
-#ifndef PAE
-#define PROC0_PDIR_OFF 0
-#else
-#define PROC0_L3_OFF 0
-#define PROC0_PDIR_OFF 1 * PAGE_SIZE
-#endif
-
-#define PROC0_STK_OFF (PROC0_PDIR_OFF + PDP_SIZE * PAGE_SIZE)
-#define PROC0_PTP1_OFF (PROC0_STK_OFF + UPAGES * PAGE_SIZE)
-
-/*
- * fillkpt - Fill in a kernel page table
- * eax = pte (page frame | control | status)
- * ebx = page table address
- * ecx = number of pages to map
- *
- * For PAE, each entry is 8 bytes long: we must set the 4 upper bytes to 0.
- * This is done by the first instruction of fillkpt. In the non-PAE case, this
- * instruction just clears the page table entry.
- */
-
-#define fillkpt \
-1: movl $0,(PDE_SIZE-4)(%ebx) ; /* clear bits */ \
- movl %eax,(%ebx) ; /* store phys addr */ \
- addl $PDE_SIZE,%ebx ; /* next pte/pde */ \
- addl $PAGE_SIZE,%eax ; /* next phys page */ \
- loop 1b ;
/* Find end of kernel image. */
movl $RELOC(end),%edi
@@ -564,7 +570,7 @@
1:
/* Compute sizes */
movl %edi,%esi
- addl $PGOFSET,%esi # page align up
+ addl $PGOFSET,%esi
andl $~PGOFSET,%esi
/* nkptp[1] = (esi + ~L2_FRAME) >> L2_SHIFT + 1; */
@@ -635,14 +641,14 @@
/* Map the data, BSS, and bootstrap tables read-write. */
leal (PG_V|PG_KW)(%edx),%eax
movl RELOC(tablesize),%ecx
- addl %esi,%ecx # end of tables
- subl %edx,%ecx # subtract end of text
+ addl %esi,%ecx /* end of tables */
+ subl %edx,%ecx /* subtract end of text */
shrl $PGSHIFT,%ecx
fillkpt
/* Map ISA I/O mem (later atdevbase) */
- movl $(IOM_BEGIN|PG_V|PG_KW/*|PG_N*/),%eax # having these bits set
- movl $(IOM_SIZE>>PGSHIFT),%ecx # for this many pte s,
+ movl $(IOM_BEGIN|PG_V|PG_KW/*|PG_N*/),%eax
+ movl $(IOM_SIZE>>PGSHIFT),%ecx
fillkpt
/*
@@ -691,18 +697,17 @@
* Startup checklist:
* 1. Load %cr3 with pointer to PDIR (or L3 PD page for PAE).
*/
- movl %esi,%eax # phys address of ptd in proc 0
- movl %eax,%cr3 # load ptd addr into mmu
+ movl %esi,%eax /* phys address of PTD in proc0 */
+ movl %eax,%cr3 /* load PTD addr into MMU */
/*
* 2. Enable paging and the rest of it.
*/
- movl %cr0,%eax # get control word
- # enable paging & NPX
+ movl %cr0,%eax
orl $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_MP|CR0_WP|CR0_AM),%eax
- movl %eax,%cr0 # and page NOW!
+ movl %eax,%cr0
- pushl $begin # jump to high mem
+ pushl $begin /* jump to high mem */
ret
begin:
@@ -712,9 +717,9 @@
* memory, remove it.
*/
movl _C_LABEL(nkptp)+1*4,%ecx
- leal (PROC0_PDIR_OFF)(%esi),%ebx # old, phys address of PDIR
- addl $(KERNBASE), %ebx # new, virtual address of PDIR
-1: movl $0,(PDE_SIZE-4)(%ebx) # Upper bits (for PAE)
+ leal (PROC0_PDIR_OFF)(%esi),%ebx /* old, phys address of PDIR */
+ addl $(KERNBASE), %ebx /* new, virt address of PDIR */
+1: movl $0,(PDE_SIZE-4)(%ebx) /* upper bits (for PAE) */
Home |
Main Index |
Thread Index |
Old Index