Module Name: src Committed By: matt Date: Wed Sep 16 03:39:03 UTC 2009
Modified Files: src/sys/arch/algor/algor [matt-nb5-mips64]: machdep.c pmon.c Added Files: src/sys/arch/algor/conf [matt-nb5-mips64]: P5064-64 std.algor64 Log Message: Add ELF64 config for P5064 and do the LP64 dance in mach_init. Deal with envp being a list of 32bit pointers. XXX still need to do argv. To generate a diff of this commit: cvs rdiff -u -r1.38.10.1 -r1.38.10.2 src/sys/arch/algor/algor/machdep.c cvs rdiff -u -r1.5 -r1.5.18.1 src/sys/arch/algor/algor/pmon.c cvs rdiff -u -r0 -r1.1.2.1 src/sys/arch/algor/conf/P5064-64 \ src/sys/arch/algor/conf/std.algor64 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/algor/algor/machdep.c diff -u src/sys/arch/algor/algor/machdep.c:1.38.10.1 src/sys/arch/algor/algor/machdep.c:1.38.10.2 --- src/sys/arch/algor/algor/machdep.c:1.38.10.1 Wed Aug 26 03:46:38 2009 +++ src/sys/arch/algor/algor/machdep.c Wed Sep 16 03:39:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.38.10.1 2009/08/26 03:46:38 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.38.10.2 2009/09/16 03:39:03 matt Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -106,7 +106,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.38.10.1 2009/08/26 03:46:38 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.38.10.2 2009/09/16 03:39:03 matt Exp $"); #include "opt_algor_p4032.h" #include "opt_algor_p5064.h" @@ -569,7 +569,13 @@ v = (void *) uvm_pageboot_alloc(USPACE); lwp0.l_addr = proc0paddr = (struct user *) v; lwp0.l_md.md_regs = (struct frame *)((char*)v + USPACE) - 1; - proc0paddr->u_pcb.pcb_context[11] = +#ifdef _LP64 + lwp0.l_md.md_regs->f_regs[_R_SR] = MIPS_SR_KX; +#endif + proc0paddr->u_pcb.pcb_context.val[_L_SR] = +#ifdef _LP64 + MIPS_SR_KX | +#endif MIPS_INT_MASK | MIPS_SR_INT_IE; /* SR */ /* Index: src/sys/arch/algor/algor/pmon.c diff -u src/sys/arch/algor/algor/pmon.c:1.5 src/sys/arch/algor/algor/pmon.c:1.5.18.1 --- src/sys/arch/algor/algor/pmon.c:1.5 Mon Apr 28 20:23:10 2008 +++ src/sys/arch/algor/algor/pmon.c Wed Sep 16 03:39:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pmon.c,v 1.5 2008/04/28 20:23:10 martin Exp $ */ +/* $NetBSD: pmon.c,v 1.5.18.1 2009/09/16 03:39:03 matt Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -30,14 +30,18 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmon.c,v 1.5 2008/04/28 20:23:10 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmon.c,v 1.5.18.1 2009/09/16 03:39:03 matt Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <machine/pmon.h> +#ifdef _LP64 +static char *environ[64]; +#else static char **environ; +#endif /* * pmon_init: @@ -47,9 +51,22 @@ void pmon_init(char *envp[]) { +#ifdef _LP64 + int32_t *envp32 = (void *) envp; + envp = environ; + if (envp32 != NULL) { + while (*envp32 != 0) { + KASSERT(envp - environ < __arraycount(environ)); + *envp++ = (char *)(intptr_t)*envp32++; + } + } + KASSERT(envp - environ < __arraycount(environ)); + *envp = NULL; +#else if (environ == NULL) environ = envp; +#endif #ifdef PMON_DEBUG printf("pmon_init: environ = %p (%p)\n", environ, *environ); #endif Added files: Index: src/sys/arch/algor/conf/P5064-64 diff -u /dev/null src/sys/arch/algor/conf/P5064-64:1.1.2.1 --- /dev/null Wed Sep 16 03:39:03 2009 +++ src/sys/arch/algor/conf/P5064-64 Wed Sep 16 03:39:03 2009 @@ -0,0 +1,12 @@ +# $NetBSD: P5064-64,v 1.1.2.1 2009/09/16 03:39:03 matt Exp $ +# +# Algorithmics P-5064 kernel (64-bit). +# + +include "arch/algor/conf/P5064" + +include "arch/algor/conf/std.algor64" + +no options SYMTAB_SPACE +options SYMTAB_SPACE=505000 +#ident "P5064-64-$Revision: 1.1.2.1 $" Index: src/sys/arch/algor/conf/std.algor64 diff -u /dev/null src/sys/arch/algor/conf/std.algor64:1.1.2.1 --- /dev/null Wed Sep 16 03:39:03 2009 +++ src/sys/arch/algor/conf/std.algor64 Wed Sep 16 03:39:03 2009 @@ -0,0 +1,13 @@ +# $NetBSD: std.algor64,v 1.1.2.1 2009/09/16 03:39:03 matt Exp $ +# standard, required pmax info + +no makeoptions MACHINE_ARCH +makeoptions MACHINE_ARCH="mips64el" + +# Standard exec-package options +options EXEC_ELF64 # 64-bit ELF support (native format) +#options EXEC_ELF32 +options COMPAT_NETBSD32 # exec NetBSD 32-bit binaries + +makeoptions LP64="yes" +