Module Name: src
Committed By: uebayasi
Date: Sat Jun 22 15:13:56 UTC 2013
Modified Files:
src/sys/arch/amd64/amd64: locore.S
src/sys/arch/i386/i386: locore.S
Log Message:
Use END() markers, etc. Pure ELF .symtab (size) changes.
To generate a diff of this commit:
cvs rdiff -u -r1.70 -r1.71 src/sys/arch/amd64/amd64/locore.S
cvs rdiff -u -r1.103 -r1.104 src/sys/arch/i386/i386/locore.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/locore.S
diff -u src/sys/arch/amd64/amd64/locore.S:1.70 src/sys/arch/amd64/amd64/locore.S:1.71
--- src/sys/arch/amd64/amd64/locore.S:1.70 Sun Jul 15 15:17:56 2012
+++ src/sys/arch/amd64/amd64/locore.S Sat Jun 22 15:13:56 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.70 2012/07/15 15:17:56 dsl Exp $ */
+/* $NetBSD: locore.S,v 1.71 2013/06/22 15:13:56 uebayasi Exp $ */
/*
* Copyright-o-rama!
@@ -187,6 +187,9 @@
/* Get definitions for IOM_BEGIN, IOM_END, and IOM_SIZE */
#include <dev/isa/isareg.h>
+#define _RELOC(x) ((x) - KERNBASE)
+#define RELOC(x) _RELOC(_C_LABEL(x))
+
#ifdef XEN
/*
@@ -216,53 +219,92 @@
#if NLAPIC > 0
.align NBPG
- .globl _C_LABEL(local_apic), _C_LABEL(lapic_id), _C_LABEL(lapic_tpr)
-_C_LABEL(local_apic):
+ .globl _C_LABEL(local_apic)
+ .globl _C_LABEL(lapic_id)
+ .globl _C_LABEL(lapic_tpr)
+
+ .type _C_LABEL(local_apic), @object
+LABEL(local_apic)
.space LAPIC_ID
-_C_LABEL(lapic_id):
+END(local_apic)
+ .type _C_LABEL(lapic_id), @object
+LABEL(lapic_id)
.long 0x00000000
.space LAPIC_TPRI-(LAPIC_ID+4)
-_C_LABEL(lapic_tpr):
+END(lapic_id)
+ .type _C_LABEL(lapic_tpr), @object
+LABEL(lapic_tpr)
.space LAPIC_PPRI-LAPIC_TPRI
+END(lapic_tpr)
+ .type _C_LABEL(lapic_ppr), @object
_C_LABEL(lapic_ppr):
.space LAPIC_ISR-LAPIC_PPRI
+END(lapic_ppr)
+ .type _C_LABEL(lapic_isr), @object
_C_LABEL(lapic_isr):
.space NBPG-LAPIC_ISR
+END(lapic_isr)
#endif
- .globl _C_LABEL(cpu_id),_C_LABEL(cpu_vendorname), _C_LABEL(cpu_brand_id)
+ .globl _C_LABEL(cpu_id)
+ .globl _C_LABEL(cpu_vendorname)
+ .globl _C_LABEL(cpu_brand_id)
.globl _C_LABEL(cpuid_level)
- .globl _C_LABEL(esym),_C_LABEL(eblob),_C_LABEL(boothowto)
- .globl _C_LABEL(bootinfo),_C_LABEL(atdevbase)
+ .globl _C_LABEL(esym)
+ .globl _C_LABEL(eblob)
+ .globl _C_LABEL(boothowto)
+ .globl _C_LABEL(bootinfo)
+ .globl _C_LABEL(atdevbase)
.globl _C_LABEL(PDPpaddr)
- .globl _C_LABEL(biosbasemem),_C_LABEL(biosextmem)
- .globl _C_LABEL(gdtstore),_C_LABEL(cputype)
+ .globl _C_LABEL(biosbasemem)
+ .globl _C_LABEL(biosextmem)
+ .globl _C_LABEL(gdtstore)
+ .globl _C_LABEL(cputype)
-_C_LABEL(cputype): .long 0 # are we 386, 386sx, or 486,
+ .type _C_LABEL(cputype), @object
+LABEL(cputype) .long 0 # are we 386, 386sx, or 486,
# or Pentium, or..
-_C_LABEL(cpu_id): .long 0 # saved from `cpuid' instruction
-_C_LABEL(cpuid_level): .long -1 # max. level accepted by 'cpuid'
+END(cputype)
+ .type _C_LABEL(cpu_id), @object
+LABEL(cpu_id) .long 0 # saved from `cpuid' instruction
+END(cpu_id)
+ .type _C_LABEL(cpuid_level), @object
+LABEL(cpuid_level) .long -1 # max. level accepted by 'cpuid'
# instruction
-_C_LABEL(cpu_vendorname): .space 16 # vendor string returned by `cpuid'
+END(cpuid_level)
+ .type _C_LABEL(cpu_vendorname), @object
+LABEL(cpu_vendorname) .space 16 # vendor string returned by `cpuid'
# instruction
-_C_LABEL(cpu_brand_id): .long 0 # brand ID from 'cpuid' instruction
-_C_LABEL(esym): .quad 0 # ptr to end of syms
-_C_LABEL(eblob): .quad 0 # ptr to end of modules
-_C_LABEL(atdevbase): .quad 0 # location of start of iomem in virtual
-_C_LABEL(PDPpaddr): .quad 0 # paddr of PTD, for libkvm
+END(cpu_vendorname)
+ .type _C_LABEL(cpu_brand_id), @object
+LABEL(cpu_brand_id) .long 0 # brand ID from 'cpuid' instruction
+END(cpu_brand_id)
+ .type _C_LABEL(esym), @object
+LABEL(esym) .quad 0 # ptr to end of syms
+END(esym)
+ .type _C_LABEL(eblob), @object
+LABEL(eblob) .quad 0 # ptr to end of modules
+END(eblob)
+ .type _C_LABEL(atdevbase), @object
+LABEL(atdevbase) .quad 0 # location of start of iomem in virtual
+END(atdevbase)
+ .type _C_LABEL(PDPpaddr), @object
+LABEL(PDPpaddr) .quad 0 # paddr of PTD, for libkvm
+END(PDPpaddr)
+ .type _C_LABEL(biosbasemem), @object
#ifndef REALBASEMEM
-_C_LABEL(biosbasemem): .long 0 # base memory reported by BIOS
+LABEL(biosbasemem) .long 0 # base memory reported by BIOS
#else
-_C_LABEL(biosbasemem): .long REALBASEMEM
+LABEL(biosbasemem) .long REALBASEMEM
#endif
+END(biosbasemem)
+ .type _C_LABEL(biosextmem), @object
#ifndef REALEXTMEM
-_C_LABEL(biosextmem): .long 0 # extended memory reported by BIOS
+LABEL(biosextmem) .long 0 # extended memory reported by BIOS
#else
-_C_LABEL(biosextmem): .long REALEXTMEM
+LABEL(biosextmem) .long REALEXTMEM
#endif
-
-#define _RELOC(x) ((x) - KERNBASE)
-#define RELOC(x) _RELOC(_C_LABEL(x))
+END(biosextmem)
#ifndef XEN
.globl gdt64_lo
@@ -271,30 +313,40 @@ _C_LABEL(biosextmem): .long REALEXTMEM
#define GDT64_LIMIT gdt64_end-gdt64_start-1
/* Temporary gdt64, with base address in low memory */
-gdt64_lo:
+ .type _C_LABEL(gdt64_lo), @object
+LABEL(gdt64_lo)
.word GDT64_LIMIT
.quad _RELOC(gdt64_start)
+END(gdt64_lo)
.align 64
/* Temporary gdt64, with base address in high memory */
-gdt64_hi:
+ .type _C_LABEL(gdt64_hi), @object
+LABEL(gdt64_hi)
.word GDT64_LIMIT
.quad gdt64_start
+END(gdt64_hi)
.align 64
#undef GDT64_LIMIT
-gdt64_start:
+ .type _C_LABEL(gdt64_start), @object
+_C_LABEL(gdt64_start):
.quad 0x0000000000000000 /* always empty */
.quad 0x00af9a000000ffff /* kernel CS */
.quad 0x00cf92000000ffff /* kernel DS */
+END(gdt64_start)
gdt64_end:
-farjmp64:
+ .type _C_LABEL(farjmp64), @object
+_C_LABEL(farjmp64):
.long _RELOC(longmode)
.word GSEL(GCODE_SEL, SEL_KPL)
+END(farjmp64)
#endif /* !XEN */
+
+ .size tmpstk, tmpstk - .
.space 512
tmpstk:
@@ -311,12 +363,10 @@ tmpstk:
.globl _C_LABEL(kernel_text)
.set _C_LABEL(kernel_text),KERNTEXTOFF
+ENTRY(start)
#ifndef XEN
-.code32
-
- .globl start
-start: movw $0x1234,0x472 # warm boot
-
+ .code32
+ movw $0x1234,0x472 # warm boot
/*
* Load parameters from stack
* (howto, [bootdev], bootinfo, esym, basemem, extmem).
@@ -717,8 +767,6 @@ longmode_hi:
leaq (TABLESIZE+IOM_SIZE)(%rsi),%rdi
#else /* XEN */
- .globl start
-start:
/* First, reset the PSL. */
pushq $2
popfq
@@ -814,6 +862,7 @@ start:
call _C_LABEL(init_x86_64)
call _C_LABEL(main)
+END(start)
#ifdef XEN
/* space for the hypercall call page */
@@ -821,6 +870,7 @@ start:
.org HYPERCALL_PAGE_OFFSET
ENTRY(hypercall_page)
.skip 0x1000
+END(hypercall_page)
#endif /* XEN */
/*
@@ -846,6 +896,7 @@ ENTRY(setjmp)
movq %rdx,56(%rax)
xorl %eax,%eax
ret
+END(setjmp)
/*
* int longjmp(label_t *)
@@ -865,6 +916,7 @@ ENTRY(longjmp)
movq %rdx,(%rsp)
movl $1,%eax
ret
+END(longjmp)
ENTRY(dumpsys)
# mimic cpu_switchto() for postmortem debugging.
@@ -885,6 +937,7 @@ ENTRY(dumpsys)
addq $(5*8), %rsp # sizeof(switchframe) - sizeof(%rip)
ret
+END(dumpsys)
/*
* struct lwp *cpu_switchto(struct lwp *oldlwp, struct lwp *newlwp,
@@ -1045,6 +1098,7 @@ ENTRY(cpu_switchto)
je 2b
movq %rax,TF_RIP(%rbx)
jmp 2b
+END(cpu_switchto)
/*
* void savectx(struct pcb *pcb);
@@ -1056,9 +1110,11 @@ ENTRY(savectx)
movq %rsp,PCB_RSP(%rdi)
movq %rbp,PCB_RBP(%rdi)
ret
+END(savectx)
IDTVEC(syscall32)
sysret /* go away please */
+IDTVEC_END(syscall32)
/*
* syscall()
@@ -1204,6 +1260,7 @@ do_syscall:
movq %rsp,%rdi
call _C_LABEL(trap)
jmp .Lsyscall_checkast /* re-check ASTs */
+IDTVEC_END(syscall)
/*
* void lwp_trampoline(void);
@@ -1220,6 +1277,7 @@ NENTRY(lwp_trampoline)
movq %r13,%rdi
call *%r12
jmp .Lsyscall_checkast
+END(lwp_trampoline)
/*
* oosyscall()
@@ -1240,6 +1298,7 @@ IDTVEC(oosyscall)
popq 16(%rsp)
pushq $7 # size of instruction for restart
jmp osyscall1
+IDTVEC_END(oosyscall)
/*
* osyscall()
@@ -1258,6 +1317,7 @@ osyscall1:
INTRENTRY
STI(si)
jmp do_syscall
+IDTVEC_END(osyscall)
/*
* bool sse2_idlezero_page(void *pg)
@@ -1294,6 +1354,7 @@ ENTRY(sse2_idlezero_page)
sfence
popq %rbp
ret
+END(sse2_idlezero_page)
/*
* void pagezero(vaddr_t va)
@@ -1318,3 +1379,4 @@ ENTRY(pagezero)
jne 1b
sfence
ret
+END(pagezero)
Index: src/sys/arch/i386/i386/locore.S
diff -u src/sys/arch/i386/i386/locore.S:1.103 src/sys/arch/i386/i386/locore.S:1.104
--- src/sys/arch/i386/i386/locore.S:1.103 Fri Oct 26 14:46:44 2012
+++ src/sys/arch/i386/i386/locore.S Sat Jun 22 15:13:55 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.103 2012/10/26 14:46:44 chs Exp $ */
+/* $NetBSD: locore.S,v 1.104 2013/06/22 15:13:55 uebayasi Exp $ */
/*
* Copyright-o-rama!
@@ -129,7 +129,7 @@
*/
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.103 2012/10/26 14:46:44 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.104 2013/06/22 15:13:55 uebayasi Exp $");
#include "opt_compat_oldboot.h"
#include "opt_ddb.h"
@@ -163,6 +163,13 @@ __KERNEL_RCSID(0, "$NetBSD: locore.S,v 1
/* Get definitions for IOM_BEGIN, IOM_END, and IOM_SIZE */
#include <dev/isa/isareg.h>
+#ifndef XEN
+#define _RELOC(x) ((x) - KERNBASE)
+#else
+#define _RELOC(x) ((x))
+#endif /* XEN */
+#define RELOC(x) _RELOC(_C_LABEL(x))
+
#ifdef XEN
/*
* Xen guest identifier and loader selection
@@ -194,7 +201,8 @@ __KERNEL_RCSID(0, "$NetBSD: locore.S,v 1
.globl _C_LABEL(esym)
.globl _C_LABEL(eblob)
.globl _C_LABEL(atdevbase)
- .globl _C_LABEL(lwp0uarea),_C_LABEL(PDPpaddr)
+ .globl _C_LABEL(lwp0uarea)
+ .globl _C_LABEL(PDPpaddr)
.globl _C_LABEL(gdt)
.globl _C_LABEL(idt)
.globl _C_LABEL(lapic_tpr)
@@ -206,52 +214,68 @@ __KERNEL_RCSID(0, "$NetBSD: locore.S,v 1
.align 12
#endif
.globl _C_LABEL(local_apic), _C_LABEL(lapic_id)
-_C_LABEL(local_apic):
+ .type _C_LABEL(local_apic), @object
+LABEL(local_apic)
.space LAPIC_ID
-_C_LABEL(lapic_id):
+END(local_apic)
+ .type _C_LABEL(lapic_id), @object
+LABEL(lapic_id)
.long 0x00000000
.space LAPIC_TPRI-(LAPIC_ID+4)
-_C_LABEL(lapic_tpr):
+END(lapic_id)
+ .type _C_LABEL(lapic_tpr), @object
+LABEL(lapic_tpr)
.space LAPIC_PPRI-LAPIC_TPRI
+END(lapic_tpr)
+ .type _C_LABEL(lapic_ppr), @object
_C_LABEL(lapic_ppr):
.space LAPIC_ISR-LAPIC_PPRI
+END(lapic_ppr)
+ .type _C_LABEL(lapic_isr), @object
_C_LABEL(lapic_isr):
.space PAGE_SIZE-LAPIC_ISR
+END(lapic_isr)
#else
-_C_LABEL(lapic_tpr):
+ .type _C_LABEL(lapic_tpr), @object
+LABEL(lapic_tpr)
.long 0
+END(lapic_tpr)
#endif
-
-_C_LABEL(cputype): .long 0 # are we 80486, Pentium, or..
-_C_LABEL(cpuid_level): .long 0
-_C_LABEL(atdevbase): .long 0 # location of start of iomem in virtual
-_C_LABEL(lwp0uarea): .long 0
-_C_LABEL(PDPpaddr): .long 0 # paddr of PDP, for libkvm
+ .type _C_LABEL(cputype), @object
+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
+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
+END(PDPpaddr)
+ .type _C_LABEL(tablesize), @object
_C_LABEL(tablesize): .long 0
-
+END(tablesize)
+ .size tmpstk, tmpstk - .
.space 512
tmpstk:
#ifdef XEN
.align PAGE_SIZE, 0x0 # Align on page boundary
- .globl tmpgdt
-_C_LABEL(tmpgdt):
+LABEL(tmpgdt)
.space PAGE_SIZE # Xen expects a page
+END(tmpgdt)
#endif /* XEN */
-#ifndef XEN
-#define _RELOC(x) ((x) - KERNBASE)
-#else
-#define _RELOC(x) ((x))
-#endif /* XEN */
-#define RELOC(x) _RELOC(_C_LABEL(x))
.text
.globl _C_LABEL(kernel_text)
.set _C_LABEL(kernel_text),KERNTEXTOFF
- .globl start
+ENTRY(start)
#ifndef XEN
-start: movw $0x1234,0x472 # warm boot
-
+ movw $0x1234,0x472 # warm boot
#if defined(MULTIBOOT)
jmp 1f
@@ -752,7 +776,6 @@ begin:
call _C_LABEL(main)
#else /* XEN */
-start:
/* First, reset the PSL. */
pushl $PSL_MBO
popfl
@@ -816,6 +839,8 @@ start:
call _C_LABEL(init386) # wire 386 chip for unix operation
addl $PDE_SIZE,%esp # pop paddr_t
call _C_LABEL(main)
+#endif /* defined(XEN) */
+END(start)
#if defined(XEN)
/* space for the hypercall call page */
@@ -823,7 +848,7 @@ start:
.org HYPERCALL_PAGE_OFFSET
ENTRY(hypercall_page)
.skip 0x1000
-#endif /* defined(XEN) */
+END(hypercall_page)
/*
* void lgdt_finish(void);