Date: Wed, 14 May 2003 09:50:46 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 31168 for review Message-ID: <200305141650.h4EGokGv037987@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=31168 Change 31168 by jhb@jhb_laptop on 2003/05/14 09:50:05 IFC @31165. Affected files ... .. //depot/projects/smpng/sys/amd64/amd64/cpu_switch.S#3 integrate .. //depot/projects/smpng/sys/amd64/amd64/exception.S#4 integrate .. //depot/projects/smpng/sys/amd64/amd64/genassym.c#3 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#5 integrate .. //depot/projects/smpng/sys/amd64/amd64/support.S#3 integrate .. //depot/projects/smpng/sys/amd64/amd64/trap.c#4 integrate .. //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#2 integrate .. //depot/projects/smpng/sys/amd64/conf/GENERIC#3 integrate .. //depot/projects/smpng/sys/amd64/ia32/Makefile#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32.h#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_exception.S#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_genassym.c#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_misc.c#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_proto.h#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_signal.h#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_sigtramp.S#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_syscall.c#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_syscall.h#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_sysent.c#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_sysvec.c#1 branch .. //depot/projects/smpng/sys/amd64/ia32/ia32_util.h#1 branch .. //depot/projects/smpng/sys/amd64/ia32/syscalls.conf#1 branch .. //depot/projects/smpng/sys/amd64/ia32/syscalls.master#1 branch .. //depot/projects/smpng/sys/amd64/include/cpufunc.h#2 integrate .. //depot/projects/smpng/sys/amd64/include/elf.h#2 integrate .. //depot/projects/smpng/sys/amd64/include/md_var.h#3 integrate .. //depot/projects/smpng/sys/amd64/include/pcb.h#3 integrate .. //depot/projects/smpng/sys/amd64/include/segments.h#2 integrate .. //depot/projects/smpng/sys/conf/files.amd64#2 integrate .. //depot/projects/smpng/sys/conf/options.amd64#2 integrate .. //depot/projects/smpng/sys/dev/ata/atapi-cam.c#8 integrate .. //depot/projects/smpng/sys/dev/puc/pucdata.c#14 integrate .. //depot/projects/smpng/sys/kern/tty.c#35 integrate .. //depot/projects/smpng/sys/sys/signalvar.h#17 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/cpu_switch.S#3 (text+ko) ==== @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.139 2003/05/12 02:37:28 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.140 2003/05/14 04:10:47 peter Exp $ */ #include <machine/asmacros.h> @@ -106,6 +106,12 @@ pushfq /* PSL */ popq PCB_RFLAGS(%r8) + /* Save kernel %gs.base */ + movl $MSR_GSBASE,%ecx + rdmsr + movl %eax,PCB_KGSBASE(%r8) + movl %edx,PCB_KGSBASE+4(%r8) + /* Save userland %fs */ movl $MSR_FSBASE,%ecx rdmsr @@ -118,6 +124,12 @@ movl %eax,PCB_GSBASE(%r8) movl %edx,PCB_GSBASE+4(%r8) + /* Save segment selector numbers */ + movl %ds,PCB_DS(%r8) + movl %es,PCB_ES(%r8) + movl %fs,PCB_FS(%r8) + movl %gs,PCB_GS(%r8) + /* have we used fp, and need a save? */ cmpq %rdi,PCPU(FPCURTHREAD) jne 1f @@ -160,6 +172,18 @@ */ movq TD_PCB(%rsi),%r8 + /* Restore segment selector numbers */ + movl PCB_DS(%r8),%ds + movl PCB_ES(%r8),%es + movl PCB_FS(%r8),%fs + movl PCB_GS(%r8),%gs + + /* Restore kernel %gs.base */ + movl $MSR_GSBASE,%ecx + movl PCB_KGSBASE(%r8),%eax + movl PCB_KGSBASE+4(%r8),%edx + wrmsr + /* Restore userland %fs */ movl $MSR_FSBASE,%ecx movl PCB_FSBASE(%r8),%eax ==== //depot/projects/smpng/sys/amd64/amd64/exception.S#4 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.109 2003/05/12 18:33:19 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.110 2003/05/14 04:10:47 peter Exp $ */ #include <machine/asmacros.h> @@ -218,40 +218,6 @@ jmp alltraps_pushregs_no_rdi /* - * Call gate entry for FreeBSD ELF and Linux/NetBSD syscall (int 0x80) - * - * This is a SDT_SYSIDT entry point (unlike the i386 port) so that we - * can do a swapgs before enabling interrupts. This is critical because - * if we took an interrupt before swapgs, the interrupt code would see - * that it originated in supervisor mode and skip the swapgs. - */ - SUPERALIGN_TEXT -IDTVEC(int0x80_syscall) - swapgs - sti - pushq $2 /* sizeof "int 0x80" */ - subq $TF_ERR,%rsp /* skip over tf_trapno */ - movq %rdi,TF_RDI(%rsp) - movq %rsi,TF_RSI(%rsp) - movq %rdx,TF_RDX(%rsp) - movq %rcx,TF_RCX(%rsp) - movq %r8,TF_R8(%rsp) - movq %r9,TF_R9(%rsp) - movq %rax,TF_RAX(%rsp) - movq %rbx,TF_RBX(%rsp) - movq %rbp,TF_RBP(%rsp) - movq %r10,TF_R10(%rsp) - movq %r11,TF_R11(%rsp) - movq %r12,TF_R12(%rsp) - movq %r13,TF_R13(%rsp) - movq %r14,TF_R14(%rsp) - movq %r15,TF_R15(%rsp) - FAKE_MCOUNT(13*4(%rsp)) - call syscall - MEXITCOUNT - jmp doreti - -/* * Fast syscall entry point. We enter here with just our new %cs/%ss set, * and the new privilige level. We are still running on the old user stack * pointer. We have to juggle a few things around to find our stack etc. @@ -353,6 +319,7 @@ */ .text SUPERALIGN_TEXT + .globl doreti .type doreti,@function doreti: FAKE_MCOUNT(bintr) /* init "from" bintr -> doreti */ ==== //depot/projects/smpng/sys/amd64/amd64/genassym.c#3 (text+ko) ==== @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)genassym.c 5.11 (Berkeley) 5/10/91 - * $FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.144 2003/05/12 18:33:19 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.145 2003/05/14 04:10:48 peter Exp $ */ #include "opt_compat.h" @@ -125,6 +125,11 @@ ASSYM(PCB_RFLAGS, offsetof(struct pcb, pcb_rflags)); ASSYM(PCB_FSBASE, offsetof(struct pcb, pcb_fsbase)); ASSYM(PCB_GSBASE, offsetof(struct pcb, pcb_gsbase)); +ASSYM(PCB_KGSBASE, offsetof(struct pcb, pcb_kgsbase)); +ASSYM(PCB_DS, offsetof(struct pcb, pcb_ds)); +ASSYM(PCB_ES, offsetof(struct pcb, pcb_es)); +ASSYM(PCB_FS, offsetof(struct pcb, pcb_fs)); +ASSYM(PCB_GS, offsetof(struct pcb, pcb_gs)); ASSYM(PCB_FLAGS, offsetof(struct pcb, pcb_flags)); ASSYM(PCB_FULLCTX, PCB_FULLCTX); @@ -181,8 +186,10 @@ ASSYM(KDSEL, GSEL(GDATA_SEL, SEL_KPL)); ASSYM(KUCSEL, GSEL(GUCODE_SEL, SEL_UPL)); ASSYM(KUDSEL, GSEL(GUDATA_SEL, SEL_UPL)); +ASSYM(KUC32SEL, GSEL(GUCODE32_SEL, SEL_UPL)); ASSYM(MSR_FSBASE, MSR_FSBASE); +ASSYM(MSR_GSBASE, MSR_GSBASE); ASSYM(MSR_KGSBASE, MSR_KGSBASE); ASSYM(GPROC0_SEL, GPROC0_SEL); ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#5 (text+ko) ==== @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.576 2003/05/13 20:35:57 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.577 2003/05/14 04:10:48 peter Exp $ */ #include "opt_atalk.h" @@ -124,12 +124,11 @@ #define EFL_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) static void cpu_startup(void *); -static void fpstate_drop(struct thread *td); static void get_fpcontext(struct thread *td, mcontext_t *mcp); static int set_fpcontext(struct thread *td, const mcontext_t *mcp); SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL) -int _udatasel, _ucodesel; +int _udatasel, _ucodesel, _ucode32sel; u_long atdevbase; u_int64_t modulep; /* phys addr of metadata table */ @@ -390,6 +389,16 @@ return (EJUSTRETURN); } +#ifdef COMPAT_FREEBSD4 +int +freebsd4_sigreturn(struct thread *td, struct freebsd4_sigreturn_args *uap) +{ + + return sigreturn(td, (struct sigreturn_args *)uap); +} +#endif + + /* * Machine dependent boot() routine * @@ -467,11 +476,25 @@ { struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; + u_int64_t pc; + wrmsr(MSR_FSBASE, 0); + wrmsr(MSR_KGSBASE, 0); /* User value while we're in the kernel */ pcb->pcb_fsbase = 0; pcb->pcb_gsbase = 0; - wrmsr(MSR_FSBASE, 0); - wrmsr(MSR_KGSBASE, 0); /* User value while we're in the kernel */ + pcb->pcb_kgsbase = rdmsr(MSR_GSBASE); + load_ds(_udatasel); + load_es(_udatasel); + load_fs(_udatasel); + critical_enter(); + pc = rdmsr(MSR_GSBASE); + load_gs(_udatasel); /* Clobbers kernel %GS.base */ + wrmsr(MSR_GSBASE, pc); + critical_exit(); + pcb->pcb_ds = _udatasel; + pcb->pcb_es = _udatasel; + pcb->pcb_fs = _udatasel; + pcb->pcb_gs = _udatasel; bzero((char *)regs, sizeof(struct trapframe)); regs->tf_rip = entry; @@ -590,7 +613,7 @@ 0xfffff, /* length - all address space */ SDT_MEMERA, /* segment type */ SEL_UPL, /* segment descriptor priority level */ - 0, /* segment descriptor present */ + 1, /* segment descriptor present */ 0, /* long */ 1, /* default 32 vs 16 bit size */ 1 /* limit granularity (byte/page units)*/ }, @@ -661,7 +684,7 @@ IDTVEC(bnd), IDTVEC(ill), IDTVEC(dna), IDTVEC(fpusegm), IDTVEC(tss), IDTVEC(missing), IDTVEC(stk), IDTVEC(prot), IDTVEC(page), IDTVEC(mchk), IDTVEC(rsvd), IDTVEC(fpu), IDTVEC(align), - IDTVEC(xmm), IDTVEC(dblfault), IDTVEC(int0x80_syscall), + IDTVEC(xmm), IDTVEC(dblfault), IDTVEC(fast_syscall), IDTVEC(fast_syscall32); void @@ -1232,7 +1255,6 @@ setidt(17, &IDTVEC(align), SDT_SYSIGT, SEL_KPL, 0); setidt(18, &IDTVEC(mchk), SDT_SYSIGT, SEL_KPL, 0); setidt(19, &IDTVEC(xmm), SDT_SYSIGT, SEL_KPL, 0); - setidt(0x80, &IDTVEC(int0x80_syscall), SDT_SYSIGT, SEL_UPL, 0); r_idt.rd_limit = sizeof(idt0) - 1; r_idt.rd_base = (long) idt; @@ -1290,10 +1312,12 @@ _ucodesel = GSEL(GUCODE_SEL, SEL_UPL); _udatasel = GSEL(GUDATA_SEL, SEL_UPL); + _ucode32sel = GSEL(GUCODE32_SEL, SEL_UPL); /* setup proc 0's pcb */ thread0.td_pcb->pcb_flags = 0; /* XXXKSE */ thread0.td_pcb->pcb_cr3 = IdlePML4; + thread0.td_pcb->pcb_kgsbase = (u_int64_t)pc; thread0.td_frame = &proc0_tf; } @@ -1613,7 +1637,7 @@ return (0); } -static void +void fpstate_drop(struct thread *td) { register_t s; ==== //depot/projects/smpng/sys/amd64/amd64/support.S#3 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.99 2003/05/11 22:38:54 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.100 2003/05/14 03:38:13 peter Exp $ */ #include <machine/asmacros.h> @@ -358,6 +358,9 @@ movq $0,PCB_ONFAULT(%rcx) ret +ENTRY(fuword) + jmp fuword64 + ENTRY(fuword32) movq PCPU(CURPCB),%rcx movq $fusufault,PCB_ONFAULT(%rcx) @@ -366,15 +369,10 @@ cmpq %rax,%rdi /* verify address is valid */ ja fusufault -/* XXX use the 64 extend */ - xorq %rax, %rax movl (%rdi),%eax movq $0,PCB_ONFAULT(%rcx) ret -ENTRY(fuword) - jmp fuword32 - /* * These two routines are called from the profiling code, potentially * at interrupt time. If they fail, that's okay, good things will @@ -397,8 +395,6 @@ cmpq %rax,%rdi ja fusufault -/* XXX use the 64 extend */ - xorq %rax, %rax movzwl (%rdi),%eax movq $0,PCB_ONFAULT(%rcx) ret @@ -414,8 +410,6 @@ cmpq %rax,%rdi ja fusufault -/* XXX use the 64 extend */ - xorq %rax, %rax movzbl (%rdi),%eax movq $0,PCB_ONFAULT(%rcx) ret @@ -448,6 +442,9 @@ movq %rax,PCB_ONFAULT(%rcx) ret +ENTRY(suword) + jmp suword64 + ENTRY(suword32) movq PCPU(CURPCB),%rcx movq $fusufault,PCB_ONFAULT(%rcx) @@ -462,9 +459,6 @@ movq %rax,PCB_ONFAULT(%rcx) ret -ENTRY(suword) - jmp suword32 - /* * suword16 - MP SAFE */ ==== //depot/projects/smpng/sys/amd64/amd64/trap.c#4 (text+ko) ==== @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $FreeBSD: src/sys/amd64/amd64/trap.c,v 1.256 2003/05/12 18:33:19 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/trap.c,v 1.257 2003/05/14 04:10:48 peter Exp $ */ /* @@ -91,7 +91,7 @@ extern void trap(struct trapframe frame); extern void syscall(struct trapframe frame); -static int trap_pfault(struct trapframe *, int, vm_offset_t); +static int trap_pfault(struct trapframe *, int); static void trap_fatal(struct trapframe *, vm_offset_t); void dblfault_handler(void); @@ -161,13 +161,13 @@ struct proc *p = td->td_proc; u_int sticks = 0; int i = 0, ucode = 0, type, code; - vm_offset_t eva; atomic_add_int(&cnt.v_trap, 1); type = frame.tf_trapno; #ifdef DDB if (db_active) { + vm_offset_t eva; eva = (type == T_PAGEFLT ? frame.tf_addr : 0); trap_fatal(&frame, eva); goto out; @@ -202,7 +202,6 @@ } } - eva = 0; code = frame.tf_err; if (type == T_PAGEFLT) { /* @@ -213,9 +212,8 @@ * kernel can print out a useful trap message and even get * to the debugger. */ - eva = frame.tf_addr; if (PCPU_GET(spinlocks) != NULL) - trap_fatal(&frame, eva); + trap_fatal(&frame, frame.tf_addr); } #ifdef DEVICE_POLLING @@ -261,7 +259,7 @@ break; case T_PAGEFLT: /* page fault */ - i = trap_pfault(&frame, TRUE, eva); + i = trap_pfault(&frame, TRUE); if (i == -1) goto userout; if (i == 0) @@ -331,7 +329,7 @@ ("kernel trap doesn't have ucred")); switch (type) { case T_PAGEFLT: /* page fault */ - (void) trap_pfault(&frame, FALSE, eva); + (void) trap_pfault(&frame, FALSE); goto out; case T_DNA: @@ -430,7 +428,7 @@ #endif /* DEV_ISA */ } - trap_fatal(&frame, eva); + trap_fatal(&frame, 0); goto out; } @@ -445,7 +443,7 @@ uprintf("fatal process exception: %s", trap_msg[type]); if ((type == T_PAGEFLT) || (type == T_PROTFLT)) - uprintf(", fault VA = 0x%lx", eva); + uprintf(", fault VA = 0x%lx", frame.tf_addr); uprintf("\n"); } #endif @@ -462,10 +460,9 @@ } static int -trap_pfault(frame, usermode, eva) +trap_pfault(frame, usermode) struct trapframe *frame; int usermode; - vm_offset_t eva; { vm_offset_t va; struct vmspace *vm = NULL; @@ -474,6 +471,7 @@ vm_prot_t ftype; struct thread *td = curthread; struct proc *p = td->td_proc; + vm_offset_t eva = frame->tf_addr; va = trunc_page(eva); if (va >= KERNBASE) { @@ -813,4 +811,3 @@ mtx_assert(&sched_lock, MA_NOTOWNED); mtx_assert(&Giant, MA_NOTOWNED); } - ==== //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#2 (text+ko) ==== @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.207 2003/05/01 01:05:22 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.208 2003/05/14 04:10:48 peter Exp $ */ #include "opt_isa.h" @@ -76,7 +76,6 @@ #include <amd64/isa/isa.h> static void cpu_reset_real(void); -extern int _ucodesel, _udatasel; /* * Finish a fork operation, with process p2 nearly set up. @@ -143,6 +142,7 @@ * pcb2->pcb_savefpu: cloned above. * pcb2->pcb_flags: cloned above. * pcb2->pcb_onfault: cloned above (always NULL here?). + * pcb2->pcb_[fg]sbase: cloned above */ /* ==== //depot/projects/smpng/sys/amd64/conf/GENERIC#3 (text+ko) ==== @@ -16,12 +16,14 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.384 2003/05/09 18:26:06 peter Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.385 2003/05/14 04:10:48 peter Exp $ machine amd64 cpu HAMMER ident GENERIC maxusers 0 +options IA32 +options COMPAT_FREEBSD4 makeoptions NO_MODULES=not_yet @@ -41,6 +43,10 @@ options INVARIANTS #Enable calls of extra sanity checking options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS +options SYSVMSG +options SYSVSEM +options SYSVSHM + device isa device pci ==== //depot/projects/smpng/sys/amd64/include/cpufunc.h#2 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.134 2003/05/01 01:05:23 peter Exp $ + * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.135 2003/05/14 04:10:49 peter Exp $ */ /* @@ -447,7 +447,6 @@ __asm __volatile("invlpg %0" : : "m" (*(char *)addr) : "memory"); } -/* XXX these are replaced with rdmsr/wrmsr */ static __inline u_int rfs(void) { @@ -465,6 +464,18 @@ } static __inline void +load_ds(u_int sel) +{ + __asm __volatile("movl %0,%%ds" : : "rm" (sel)); +} + +static __inline void +load_es(u_int sel) +{ + __asm __volatile("movl %0,%%es" : : "rm" (sel)); +} + +static __inline void load_fs(u_int sel) { __asm __volatile("movl %0,%%fs" : : "rm" (sel)); ==== //depot/projects/smpng/sys/amd64/include/elf.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/elf.h,v 1.14 2003/05/01 01:05:23 peter Exp $ + * $FreeBSD: src/sys/amd64/include/elf.h,v 1.15 2003/05/14 04:10:49 peter Exp $ */ #ifndef _MACHINE_ELF_H_ @@ -33,9 +33,12 @@ * ELF definitions for the AMD64 architecture. */ -#include <sys/elf64.h> /* Definitions common to all 64 bit architectures. */ +#ifndef __ELF_WORD_SIZE #define __ELF_WORD_SIZE 64 /* Used by <sys/elf_generic.h> */ +#endif +#include <sys/elf32.h> /* Definitions common to all 32 bit architectures. */ +#include <sys/elf64.h> /* Definitions common to all 64 bit architectures. */ #include <sys/elf_generic.h> #define ELF_ARCH EM_X86_64 @@ -48,7 +51,14 @@ * The i386 supplement to the SVR4 ABI specification names this "auxv_t", * but POSIX lays claim to all symbols ending with "_t". */ +typedef struct { /* Auxiliary vector entry on initial stack */ + int a_type; /* Entry type. */ + union { + int a_val; /* Integer value. */ + } a_un; +} Elf32_Auxinfo; + typedef struct { /* Auxiliary vector entry on initial stack */ long a_type; /* Entry type. */ union { @@ -118,7 +128,11 @@ #define R_X86_64_COUNT 16 /* Count of defined relocation types. */ /* Define "machine" characteristics */ -#define ELF_TARG_CLASS ELFCLASS64 +#if __ELF_WORD_SIZE == 32 +#define ELF_TARG_CLASS ELFCLASS32 +#else +#define ELF_TARG_CLASS ELFCLASS64 +#endif #define ELF_TARG_DATA ELFDATA2LSB #define ELF_TARG_MACH EM_X86_64 #define ELF_TARG_VER 1 ==== //depot/projects/smpng/sys/amd64/include/md_var.h#3 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.65 2003/05/11 22:53:43 peter Exp $ + * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.66 2003/05/14 04:10:49 peter Exp $ */ #ifndef _MACHINE_MD_VAR_H_ @@ -69,5 +69,6 @@ int is_physical_memory(vm_offset_t addr); void setidt(int idx, alias_for_inthand_t *func, int typ, int dpl, int ist); void swi_vm(void *); +void fpstate_drop(struct thread *td); #endif /* !_MACHINE_MD_VAR_H_ */ ==== //depot/projects/smpng/sys/amd64/include/pcb.h#3 (text+ko) ==== @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)pcb.h 5.10 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pcb.h,v 1.51 2003/05/12 02:37:29 peter Exp $ + * $FreeBSD: src/sys/amd64/include/pcb.h,v 1.52 2003/05/14 04:10:49 peter Exp $ */ #ifndef _I386_PCB_H_ @@ -59,6 +59,11 @@ register_t pcb_rflags; register_t pcb_fsbase; register_t pcb_gsbase; + register_t pcb_kgsbase; + u_int32_t pcb_ds; + u_int32_t pcb_es; + u_int32_t pcb_fs; + u_int32_t pcb_gs; struct savefpu pcb_save; u_long pcb_flags; ==== //depot/projects/smpng/sys/amd64/include/segments.h#2 (text+ko) ==== @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)segments.h 7.1 (Berkeley) 5/9/91 - * $FreeBSD: src/sys/amd64/include/segments.h,v 1.34 2003/05/01 01:05:23 peter Exp $ + * $FreeBSD: src/sys/amd64/include/segments.h,v 1.35 2003/05/14 04:10:49 peter Exp $ */ #ifndef _MACHINE_SEGMENTS_H_ @@ -166,7 +166,7 @@ /* * Size of IDT table */ -#define NIDT 129 /* 32 reserved, 16 h/w, 0 s/w, linux's 0x80 */ +#define NIDT 256 /* 32 reserved, 16 h/w, 0 s/w, linux's 0x80 */ #define NRSVIDT 32 /* reserved entries for cpu exceptions */ /* ==== //depot/projects/smpng/sys/conf/files.amd64#2 (text+ko) ==== @@ -1,13 +1,26 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.amd64,v 1.13 2003/05/03 03:30:29 peter Exp $ +# $FreeBSD: src/sys/conf/files.amd64,v 1.14 2003/05/14 04:10:49 peter Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and # dependency lines other than the first are silently ignored. # +ia32_genassym.o optional ia32 \ + dependency "$S/amd64/ia32/ia32_genassym.c" \ + compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ + no-obj no-implicit-rule \ + clean "ia32_genassym.o" +# +ia32_assym.h optional ia32 \ + dependency "$S/kern/genassym.sh ia32_genassym.o" \ + compile-with "sh $S/kern/genassym.sh ia32_genassym.o > ${.TARGET}" \ + no-obj no-implicit-rule before-depend \ + clean "ia32_assym.h" +# + dev/kbd/atkbd.c optional atkbd dev/kbd/atkbdc.c optional atkbdc dev/kbd/kbd.c optional atkbd @@ -64,7 +77,14 @@ amd64/pci/pci_cfgreg.c optional pci amd64/pci/pci_bus.c optional pci - +amd64/ia32/ia32_misc.c optional ia32 +amd64/ia32/ia32_sysent.c optional ia32 +amd64/ia32/ia32_sysvec.c optional ia32 +amd64/ia32/ia32_signal.c optional ia32 +amd64/ia32/ia32_sigtramp.S optional ia32 +amd64/ia32/ia32_exception.S optional ia32 +amd64/ia32/ia32_syscall.c optional ia32 +kern/imgact_elf32.c optional ia32 # This file tells config what files go into building a kernel, # files marked standard are always included. ==== //depot/projects/smpng/sys/conf/options.amd64#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.amd64,v 1.6 2003/05/01 02:59:24 peter Exp $ +# $FreeBSD: src/sys/conf/options.amd64,v 1.7 2003/05/14 04:10:49 peter Exp $ # Options specific to the AMD x86-64 platform kernels MAXMEM @@ -59,3 +59,4 @@ PSM_HOOKRESUME opt_psm.h PSM_RESETAFTERSUSPEND opt_psm.h PSM_DEBUG opt_psm.h +IA32 ==== //depot/projects/smpng/sys/dev/ata/atapi-cam.c#8 (text+ko) ==== @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.15 2003/03/08 08:01:28 phk Exp $ + * $FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.16 2003/05/14 14:20:22 thomas Exp $ */ #include <sys/param.h> @@ -167,7 +167,14 @@ void atapi_cam_reinit_bus(struct ata_channel *ata_ch) { struct atapi_xpt_softc *scp = get_softc(ata_ch); - reinit_bus(scp, RESET); + + /* + * scp might be null if the bus is being reinitialised during + * the boot-up sequence, before the ATAPI bus is registered. + */ + + if (scp != NULL) + reinit_bus(scp, RESET); } static void ==== //depot/projects/smpng/sys/dev/puc/pucdata.c#14 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/puc/pucdata.c,v 1.20 2003/04/30 22:15:47 sobomax Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/puc/pucdata.c,v 1.21 2003/05/14 09:37:46 wilko Exp $"); /* * PCI "universal" communications card driver configuration data (used to @@ -891,6 +891,19 @@ }, }, + /* NetMos 4S0P PCI: 4S, 0P */ + { "NetMos NM9845 Quad UART", + NULL, + { 0x9710, 0x9845, 0, 0 }, + { 0xffff, 0xffff, 0, 0 }, + { + { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ }, + { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ }, + { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ }, + { PUC_PORT_TYPE_COM, 0x1c, 0x00, COM_FREQ }, + }, + }, + /* * This is the Middle Digital, Inc. PCI-Weasel, which * uses a PCI interface implemented in FPGA. ==== //depot/projects/smpng/sys/kern/tty.c#35 (text+ko) ==== @@ -44,7 +44,7 @@ * SUCH DAMAGE. * * @(#)tty.c 8.8 (Berkeley) 1/21/94 - * $FreeBSD: src/sys/kern/tty.c,v 1.200 2003/05/13 20:35:59 jhb Exp $ + * $FreeBSD: src/sys/kern/tty.c,v 1.201 2003/05/14 00:03:55 ps Exp $ */ /*- @@ -1601,7 +1601,7 @@ splx(s); sx_slock(&proctree_lock); PROC_LOCK(p); - if (SIGISMEMBER(p->p_sigignore, SIGTTIN) || + if (SIGISMEMBER(p->p_sigacts->ps_sigignore, SIGTTIN) || SIGISMEMBER(td->td_sigmask, SIGTTIN) || (p->p_flag & P_PPWAIT) || p->p_pgrp->pg_jobc == 0) { PROC_UNLOCK(p); ==== //depot/projects/smpng/sys/sys/signalvar.h#17 (text+ko) ==== @@ -31,12 +31,13 @@ * SUCH DAMAGE. * * @(#)signalvar.h 8.6 (Berkeley) 2/19/95 - * $FreeBSD: src/sys/sys/signalvar.h,v 1.61 2003/05/13 20:36:02 jhb Exp $ + * $FreeBSD: src/sys/sys/signalvar.h,v 1.62 2003/05/14 15:00:24 jhb Exp $ */ #ifndef _SYS_SIGNALVAR_H_ #define _SYS_SIGNALVAR_H_ +#include <sys/queue.h> #include <sys/_lock.h> #include <sys/_mutex.h> #include <sys/signal.h>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200305141650.h4EGokGv037987>