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"
+

Reply via email to