Author: jmallett
Date: Sun May  6 05:58:56 2012
New Revision: 235070
URL: http://svn.freebsd.org/changeset/base/235070

Log:
  Get the memory size from the gxemul mp device.  Don't dump the environment if
  it is not present.

Added:
  head/sys/mips/gxemul/mpreg.h   (contents, props changed)
Modified:
  head/sys/mips/gxemul/files.gxemul
  head/sys/mips/gxemul/gxemul_machdep.c

Modified: head/sys/mips/gxemul/files.gxemul
==============================================================================
--- head/sys/mips/gxemul/files.gxemul   Sun May  6 05:49:23 2012        
(r235069)
+++ head/sys/mips/gxemul/files.gxemul   Sun May  6 05:58:56 2012        
(r235070)
@@ -3,3 +3,6 @@ dev/gxemul/cons/gxemul_cons.c           optional 
 mips/gxemul/gxemul_machdep.c           standard
 mips/mips/intr_machdep.c               standard
 mips/mips/tick.c                       standard
+
+dev/gxemul/disk/gxemul_disk.c          optional gxemul_disk
+dev/gxemul/ether/gxemul_ether.c                optional gxemul_ether

Modified: head/sys/mips/gxemul/gxemul_machdep.c
==============================================================================
--- head/sys/mips/gxemul/gxemul_machdep.c       Sun May  6 05:49:23 2012        
(r235069)
+++ head/sys/mips/gxemul/gxemul_machdep.c       Sun May  6 05:58:56 2012        
(r235070)
@@ -62,6 +62,8 @@ __FBSDID("$FreeBSD$");
 #include <machine/pmap.h>
 #include <machine/trap.h>
 
+#include <mips/gxemul/mpreg.h>
+
 extern int     *edata;
 extern int     *end;
 
@@ -123,7 +125,6 @@ platform_start(__register_t a0, __regist
        int argc = a0;
        char **argv = (char **)a1;
        char **envp = (char **)a2;
-       unsigned int memsize = a3;
        int i;
 
        /* clear the BSS and SBSS segments */
@@ -152,14 +153,16 @@ platform_start(__register_t a0, __regist
                        printf("%s ", argv[i]);
                printf("\n");
 
-               printf("envp:\n");
-               for (i = 0; envp[i]; i += 2)
-                       printf("\t%s = %s\n", envp[i], envp[i+1]);
-
-               printf("memsize = %08x\n", memsize);
+               if (envp != NULL) {
+                       printf("envp:\n");
+                       for (i = 0; envp[i]; i += 2)
+                               printf("\t%s = %s\n", envp[i], envp[i+1]);
+               } else {
+                       printf("no envp.\n");
+               }
        }
 
-       realmem = btoc(memsize);
+       realmem = btoc(GXEMUL_MP_DEV_READ(GXEMUL_MP_DEV_MEMORY));
        mips_init();
 
        mips_timer_init_params(platform_counter_freq, 0);

Added: head/sys/mips/gxemul/mpreg.h
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/mips/gxemul/mpreg.h        Sun May  6 05:58:56 2012        
(r235070)
@@ -0,0 +1,53 @@
+/*-
+ * Copyright (c) 2004-2012 Juli Mallett <jmall...@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (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$
+ */
+
+#ifndef        _MIPS_GXEMUL_MPREG_H_
+#define        _MIPS_GXEMUL_MPREG_H_
+
+#define        GXEMUL_MP_DEV_BASE      0x11000000
+
+#define        GXEMUL_MP_DEV_WHOAMI    0x0000
+#define        GXEMUL_MP_DEV_NCPUS     0x0010
+#define        GXEMUL_MP_DEV_START     0x0020
+#define        GXEMUL_MP_DEV_STARTADDR 0x0030
+#define        GXEMUL_MP_DEV_STACK     0x0070
+#define        GXEMUL_MP_DEV_MEMORY    0x0090
+#define        GXEMUL_MP_DEV_IPI_ONE   0x00a0
+#define        GXEMUL_MP_DEV_IPI_MANY  0x00b0
+#define        GXEMUL_MP_DEV_IPI_READ  0x00c0
+
+#define        GXEMUL_MP_DEV_FUNCTION(f)                                       
\
+       (volatile uint64_t *)MIPS_PHYS_TO_DIRECT_UNCACHED(GXEMUL_MP_DEV_BASE + 
(f))
+#define        GXEMUL_MP_DEV_READ(f)                                           
\
+       (volatile uint64_t)*GXEMUL_MP_DEV_FUNCTION(f)
+#define        GXEMUL_MP_DEV_WRITE(f, v)                                       
\
+       *GXEMUL_MP_DEV_FUNCTION(f) = (v)
+
+#define        GXEMUL_MP_DEV_IPI_INTERRUPT     (6)
+
+#endif /* !_MIPS_GXEMUL_MPREG_H */
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to