Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/sparc Move makememarr() into promlib.c.



details:   https://anonhg.NetBSD.org/src/rev/8a713eed88b2
branches:  trunk
changeset: 543161:8a713eed88b2
user:      pk <pk%NetBSD.org@localhost>
date:      Tue Feb 18 13:36:51 2003 +0000

description:
Move makememarr() into promlib.c.

diffstat:

 sys/arch/sparc/include/autoconf.h |   20 +----
 sys/arch/sparc/include/promlib.h  |   14 +++-
 sys/arch/sparc/sparc/autoconf.c   |  148 +------------------------------------
 sys/arch/sparc/sparc/pmap.c       |    4 +-
 sys/arch/sparc/sparc/promlib.c    |  140 +++++++++++++++++++++++++++++++++++-
 5 files changed, 161 insertions(+), 165 deletions(-)

diffs (truncated from 432 to 300 lines):

diff -r 13c627ad5127 -r 8a713eed88b2 sys/arch/sparc/include/autoconf.h
--- a/sys/arch/sparc/include/autoconf.h Tue Feb 18 13:16:48 2003 +0000
+++ b/sys/arch/sparc/include/autoconf.h Tue Feb 18 13:36:51 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: autoconf.h,v 1.35 2002/08/25 16:05:42 thorpej Exp $ */
+/*     $NetBSD: autoconf.h,v 1.36 2003/02/18 13:36:51 pk Exp $ */
 
 /*-
  * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -171,19 +171,6 @@
  */
 char   *clockfreq __P((int freq));
 
-/*
- * Memory description arrays.  Shared between pmap.c and autoconf.c; no
- * one else should use this (except maybe mem.c, e.g., if we fix the VM to
- * handle discontiguous physical memory).
- */
-struct memarr {
-       paddr_t addr;
-       psize_t len;
-};
-int    makememarr(struct memarr *, int max, int which);
-#define        MEMARR_AVAILPHYS        0
-#define        MEMARR_TOTALPHYS        1
-
 /* Openprom V2 style boot path */
 struct bootpath {
        char    name[16];       /* name of this node */
@@ -191,11 +178,6 @@
        struct device *dev;     /* device that recognised this component */
 };
 
-#if 0
-struct bootpath        *bootpath_store __P((int, struct bootpath *));
-#endif
-int            sd_crazymap __P((int));
-
 /* Parse a disk string into a dev_t, return device struct pointer */
 struct device *parsedisk __P((char *, int, int, dev_t *));
 
diff -r 13c627ad5127 -r 8a713eed88b2 sys/arch/sparc/include/promlib.h
--- a/sys/arch/sparc/include/promlib.h  Tue Feb 18 13:16:48 2003 +0000
+++ b/sys/arch/sparc/include/promlib.h  Tue Feb 18 13:36:51 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: promlib.h,v 1.5 2003/01/16 16:58:52 pk Exp $ */
+/*     $NetBSD: promlib.h,v 1.6 2003/02/18 13:36:51 pk Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -115,6 +115,18 @@
 
 extern struct promops  promops;
 
+/*
+ * Memory description array.
+ */
+struct memarr {
+       paddr_t addr;
+       psize_t len;
+};
+int    prom_makememarr(struct memarr *, int max, int which);
+#define        MEMARR_AVAILPHYS        0
+#define        MEMARR_TOTALPHYS        1
+
+
 void   prom_init       __P((void));    /* To setup promops */
 
 /* Utility routines */
diff -r 13c627ad5127 -r 8a713eed88b2 sys/arch/sparc/sparc/autoconf.c
--- a/sys/arch/sparc/sparc/autoconf.c   Tue Feb 18 13:16:48 2003 +0000
+++ b/sys/arch/sparc/sparc/autoconf.c   Tue Feb 18 13:36:51 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: autoconf.c,v 1.189 2003/01/20 20:51:34 pk Exp $ */
+/*     $NetBSD: autoconf.c,v 1.190 2003/02/18 13:36:52 pk Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -125,6 +125,7 @@
 static int mbprint __P((void *, const char *));
 static void crazymap __P((char *, int *));
 int    st_crazymap __P((int));
+int    sd_crazymap __P((int));
 void   sync_crash __P((void));
 int    mainbus_match __P((struct device *, struct cfdata *, void *));
 static void mainbus_attach __P((struct device *, struct device *, void *));
@@ -1067,7 +1068,7 @@
  * only get the first item in case the property value is an array.
  * Drivers that "need to know it all" can call PROM_getprop() directly.
  */
-#if defined(SUN4C) || defined(SUN4M)
+#if defined(SUN4C) || defined(SUN4M) || defined(SUN4D)
 static int     PROM_getprop_reg1 __P((int, struct openprom_addr *));
 static int     PROM_getprop_intr1 __P((int, int *));
 static int     PROM_getprop_address1 __P((int, void **));
@@ -1390,145 +1391,8 @@
 CFATTACH_DECL(mainbus, sizeof(struct device),
     mainbus_match, mainbus_attach, NULL, NULL);
 
-int
-makememarr(ap, max, which)
-       struct memarr *ap;
-       int max, which;
-{
-       struct v2rmi {
-               int     zero;
-               int     addr;
-               int     len;
-       } v2rmi[200];           /* version 2 rom meminfo layout */
-#define        MAXMEMINFO ((int)sizeof(v2rmi) / (int)sizeof(*v2rmi))
-       void *p;
 
-       struct v0mlist *mp;
-       int i, node, len;
-       char *prop;
-
-       switch (prom_version()) {
-               struct promvec *promvec;
-               struct om_vector *oldpvec;
-       case PROM_OLDMON:
-               oldpvec = (struct om_vector *)PROM_BASE;
-               switch (which) {
-               case MEMARR_AVAILPHYS:
-                       ap[0].addr = 0;
-                       ap[0].len = *oldpvec->memoryAvail;
-                       break;
-               case MEMARR_TOTALPHYS:
-                       ap[0].addr = 0;
-                       ap[0].len = *oldpvec->memorySize;
-                       break;
-               default:
-                       printf("pre_panic: makememarr");
-                       break;
-               }
-               i = (1);
-               break;
-
-       case PROM_OBP_V0:
-               /*
-                * Version 0 PROMs use a linked list to describe these
-                * guys.
-                */
-               promvec = romp;
-               switch (which) {
-               case MEMARR_AVAILPHYS:
-                       mp = *promvec->pv_v0mem.v0_physavail;
-                       break;
-
-               case MEMARR_TOTALPHYS:
-                       mp = *promvec->pv_v0mem.v0_phystot;
-                       break;
-
-               default:
-                       panic("makememarr");
-               }
-               for (i = 0; mp != NULL; mp = mp->next, i++) {
-                       if (i >= max)
-                               goto overflow;
-                       ap->addr = (u_int)mp->addr;
-                       ap->len = mp->nbytes;
-                       ap++;
-               }
-               break;
-
-       default:
-               printf("makememarr: hope version %d PROM is like version 2\n",
-                       prom_version());
-               /* FALLTHROUGH */
-
-        case PROM_OBP_V3:
-       case PROM_OBP_V2:
-               /*
-                * Version 2 PROMs use a property array to describe them.
-                */
-
-               /* Consider emulating `OF_finddevice' */
-               node = findnode(firstchild(findroot()), "memory");
-               goto case_common;
-
-       case PROM_OPENFIRM:
-               node = OF_finddevice("/memory");
-               if (node == -1)
-                   node = 0;
-
-       case_common:
-               if (node == 0)
-                       panic("makememarr: cannot find \"memory\" node");
-
-               if (max > MAXMEMINFO) {
-                       printf("makememarr: limited to %d\n", MAXMEMINFO);
-                       max = MAXMEMINFO;
-               }
-
-               switch (which) {
-               case MEMARR_AVAILPHYS:
-                       prop = "available";
-                       break;
-
-               case MEMARR_TOTALPHYS:
-                       prop = "reg";
-                       break;
-
-               default:
-                       panic("makememarr");
-               }
-
-               len = MAXMEMINFO;
-               p = v2rmi;
-               if (PROM_getprop(node, prop, sizeof(struct v2rmi), &len, &p) != 0)
-                       panic("makememarr: cannot get property");
-
-               for (i = 0; i < len; i++) {
-                       if (i >= max)
-                               goto overflow;
-                       ap->addr = v2rmi[i].addr;
-                       ap->len = v2rmi[i].len;
-                       ap++;
-               }
-               break;
-       }
-
-       /*
-        * Success!  (Hooray)
-        */
-       if (i == 0)
-               panic("makememarr: no memory found");
-       return (i);
-
-overflow:
-       /*
-        * Oops, there are more things in the PROM than our caller
-        * provided space for.  Truncate any extras.
-        */
-       printf("makememarr: WARNING: lost some memory\n");
-       return (i);
-}
-
-#if defined(SUN4C) || defined(SUN4M)
+#if defined(SUN4C) || defined(SUN4M) || defined(SUN4D)
 int
 PROM_getprop_reg1(node, rrp)
        int node;
@@ -1599,7 +1463,7 @@
        free(vp, M_DEVBUF);
        return (0);
 }
-#endif
+#endif /* SUN4C || SUN4M || SUN4D */
 
 #ifdef RASTERCONSOLE
 /*
@@ -1629,7 +1493,7 @@
        prom_interpret(buf);
        return (*rowp == NULL || *colp == NULL);
 }
-#endif
+#endif /* RASTERCONSOLE */
 
 /*
  * find a device matching "name" and unit number
diff -r 13c627ad5127 -r 8a713eed88b2 sys/arch/sparc/sparc/pmap.c
--- a/sys/arch/sparc/sparc/pmap.c       Tue Feb 18 13:16:48 2003 +0000
+++ b/sys/arch/sparc/sparc/pmap.c       Tue Feb 18 13:36:51 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap.c,v 1.239 2003/02/15 13:30:11 pk Exp $ */
+/*     $NetBSD: pmap.c,v 1.240 2003/02/18 13:36:52 pk Exp $ */
 
 /*
  * Copyright (c) 1996
@@ -935,7 +935,7 @@
        struct memarr *mp;
        int i;
 
-       npmemarr = makememarr(pmemarr, MA_SIZE, MEMARR_AVAILPHYS);
+       npmemarr = prom_makememarr(pmemarr, MA_SIZE, MEMARR_AVAILPHYS);
 
        for (physmem = 0, mp = pmemarr, i = npmemarr; --i >= 0; mp++)
                physmem += btoc(mp->len);
diff -r 13c627ad5127 -r 8a713eed88b2 sys/arch/sparc/sparc/promlib.c
--- a/sys/arch/sparc/sparc/promlib.c    Tue Feb 18 13:16:48 2003 +0000
+++ b/sys/arch/sparc/sparc/promlib.c    Tue Feb 18 13:36:51 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: promlib.c,v 1.13 2001/12/07 11:00:39 hannken Exp $ */
+/*     $NetBSD: promlib.c,v 1.14 2003/02/18 13:36:52 pk Exp $ */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -795,6 +795,144 @@
        return (buf);
 }
 
+int
+prom_makememarr(ap, max, which)
+       struct memarr *ap;
+       int max, which;
+{
+       struct v2rmi {
+               int     zero;
+               int     addr;
+               int     len;



Home | Main Index | Thread Index | Old Index