From 43c1cb852c69c7b80d22101fa4cfbd763dbf4380 Mon Sep 17 00:00:00 2001 From: pk Date: Sat, 26 Sep 1998 18:20:19 +0000 Subject: [PATCH] Move PROM interface prototypes into openprom.h Use the `openprom_addr' structure for passing around physical addresses. --- sys/arch/sparc/include/autoconf.h | 43 +++++--------------- sys/arch/sparc/include/bsd_openprom.h | 58 +++++++++++++++++++++------ 2 files changed, 54 insertions(+), 47 deletions(-) diff --git a/sys/arch/sparc/include/autoconf.h b/sys/arch/sparc/include/autoconf.h index 5578aaf568a4..d8a06039c1df 100644 --- a/sys/arch/sparc/include/autoconf.h +++ b/sys/arch/sparc/include/autoconf.h @@ -1,4 +1,4 @@ -/* $NetBSD: autoconf.h,v 1.28 1998/08/30 21:31:24 pk Exp $ */ +/* $NetBSD: autoconf.h,v 1.29 1998/09/26 18:20:19 pk Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -85,6 +85,7 @@ */ #include +#include #include /* @@ -160,33 +161,6 @@ int obio_find_rom_map __P((bus_addr_t, bus_type_t, int, bus_space_handle_t *)); - -/* - * The various getprop* functions obtain `properties' from the ROMs. - * getprop() obtains a property as a byte-sequence, and returns its - * length; the others convert or make some other guarantee. - */ -int getproplen __P((int node, char *name)); -int getprop __P((int, char *, int, int *, void **)); -char *getpropstring __P((int node, char *name)); -int getpropint __P((int node, char *name, int deflt)); - -/* Frequently used options node */ -extern int optionsnode; - - /* new interfaces: */ -char *getpropstringA __P((int, char *, char *)); - -/* - * Helper routines to get some of the more common properties. These - * only get the first item in case the property value is an array. - * Drivers that "need to know it all" can call getprop() directly. - */ -int getprop_reg1 __P((int, struct rom_reg *)); -int getprop_intr1 __P((int, int *)); -int getprop_address1 __P((int, void **)); - - /* * The matchbyname function is useful in drivers that are matched * by romaux name, i.e., all `mainbus attached' devices. It expects @@ -216,9 +190,6 @@ int makememarr(struct memarr *, int max, int which); #define MEMARR_AVAILPHYS 0 #define MEMARR_TOTALPHYS 1 -/* Pass a string to the FORTH interpreter. May fail silently. */ -void rominterpret __P((char *)); - /* Openprom V2 style boot path */ struct bootpath { char name[16]; /* name of this node */ @@ -238,13 +209,17 @@ void mountroot_hook_establish __P((void (*) __P((struct device *)), void configure __P((void)); void bootstrap __P((void)); -int firstchild __P((int)); -int nextsibling __P((int)); -void callrom __P((void)); struct device *getdevunit __P((char *, int)); void *findzs __P((int)); int romgetcursoraddr __P((int **, int **)); +#if 0 +/* Pass a string to the FORTH interpreter. May fail silently. */ +void rominterpret __P((char *)); +int firstchild __P((int)); +int nextsibling __P((int)); +void callrom __P((void)); int findroot __P((void)); int findnode __P((int, const char *)); int opennode __P((char *)); int node_has_property __P((int, const char *)); +#endif diff --git a/sys/arch/sparc/include/bsd_openprom.h b/sys/arch/sparc/include/bsd_openprom.h index c13f419910bb..31e55bb16df3 100644 --- a/sys/arch/sparc/include/bsd_openprom.h +++ b/sys/arch/sparc/include/bsd_openprom.h @@ -1,4 +1,4 @@ -/* $NetBSD: bsd_openprom.h,v 1.12 1998/09/12 13:34:38 pk Exp $ */ +/* $NetBSD: bsd_openprom.h,v 1.13 1998/09/26 18:20:19 pk Exp $ */ /* * Copyright (c) 1992, 1993 @@ -44,6 +44,9 @@ * All rights reserved. */ +#ifndef _BSD_OPENPROM_H_ +#define _BSD_OPENPROM_H_ + /* * This file defines the interface between the kernel and the Openboot PROM. * N.B.: this has been tested only on interface versions 0 and 2 (we have @@ -174,6 +177,15 @@ struct v2bootargs { int *v2_fd1; /* V2: Stdout descriptor */ }; +/* + * The format used by the PROM to describe a physical address. + */ +struct openprom_addr { + int oa_space; /* address space (may be relative) */ + u_int oa_base; /* address within space */ + u_int oa_size; /* extent (number of bytes) */ +}; + /* * The following structure defines the primary PROM vector interface. * The Boot PROM hands the kernel a pointer to this structure in %o0. @@ -262,7 +274,8 @@ struct promvec { * The following are V3 ROM functions to handle MP machines in the * Sun4m series. They have undefined results when run on a uniprocessor! */ - int (*pv_v3cpustart) __P((u_int module, u_int ctxtbl, + int (*pv_v3cpustart) __P((u_int module, + struct openprom_addr *ctxtbl, int context, caddr_t pc)); int (*pv_v3cpustop) __P((u_int module)); int (*pv_v3cpuidle) __P((u_int module)); @@ -284,8 +297,8 @@ struct promvec { * sometimes not, depending on the the interface version; v0 seems to * terminate and v2 not. Many others are simply integers stored as four * bytes in machine order: you just get them and go. The third popular - * format is an `address', which is made up of one or more sets of three - * integers as defined below. + * format is an `physical address', which is made up of one or more sets + * of three integers as defined above. * * N.B.: for the `next' functions, next(0) = first, and next(last) = 0. * Whoever designed this part had good taste. On the other hand, these @@ -293,11 +306,6 @@ struct promvec { * are not in the openprom vectors but rather found by indirection from * there. So the taste balances out. */ -struct openprom_addr { - int oa_space; /* address space (may be relative) */ - u_int oa_base; /* address within space */ - u_int oa_size; /* extent (number of bytes) */ -}; struct nodeops { /* @@ -318,9 +326,33 @@ struct nodeops { caddr_t (*no_nextprop) __P((int node, caddr_t name)); }; -void romhalt __P((void)) - __attribute__((__noreturn__)); -void romboot __P((char *)) - __attribute__((__noreturn__)); +void romhalt __P((void)) __attribute__((__noreturn__)); +void romboot __P((char *)) __attribute__((__noreturn__)); +void rominterpret __P((char *)); +void callrom __P((void)); + +int findroot __P((void)); +int findnode __P((int, const char *)); +int opennode __P((char *)); +int firstchild __P((int)); +int nextsibling __P((int)); + +/* + * The various getprop* functions obtain `properties' from the ROMs. + * getprop() obtains a property as a byte-sequence, and returns its + * length; the others convert or make some other guarantee. + */ +int getproplen __P((int node, char *name)); +int getprop __P((int, char *, int, int *, void **)); +int getpropint __P((int node, char *name, int deflt)); +char *getpropstring __P((int node, char *name)); +char *getpropstringA __P((int, char *, char *)); +int search_prom __P((int, char *)); +int node_has_property __P((int, const char *)); + extern struct promvec *promvec; +/* Frequently used options node */ +extern int optionsnode; + +#endif /* _BSD_OPENPROM_H_ */