From ae7c344679d17849a6ac15403564e88834c3405a Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Wed, 18 Mar 1998 04:08:21 +0000 Subject: [PATCH] Prototype common device framework. Plenty more work to go. --- sim/common/.Sanitize | 12 ++++++ sim/common/ChangeLog | 27 ++++++++++++++ sim/common/hw-tree.h | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+) create mode 100644 sim/common/hw-tree.h diff --git a/sim/common/.Sanitize b/sim/common/.Sanitize index dd1d6cf..595894f 100644 --- a/sim/common/.Sanitize +++ b/sim/common/.Sanitize @@ -117,6 +117,18 @@ tconfig.in Things-to-lose: +dv-core.c +dv-pal.c +hw-base.c +hw-base.h +hw-device.c +hw-device.h +hw-ports.c +hw-ports.h +hw-properties.c +hw-properties.h +hw-tree.c +hw-tree.h Do-last: diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 4f5a6d3..dda6f5c 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,30 @@ +Wed Mar 18 14:13:02 1998 Andrew Cagney + + * Make-common.in (SIM_HW_OBJS, SIM_HW_SRC, SIM_DV_OBJS): Define. + (hw-base_h, hw-device_h, hw-handles_h, hw-instances_h, hw_ports_h, + hw-properties_h, hw-tree_h): Define, point at corresponding + header. + (hw_base_headers): Define list of headers included by hw-base.h + (hw-base.o, hw-device.o, hw-instances.o, hw-handles.o, hw-ports.o, + hw-properties.o, hw-tree.o): Specify dependencies. + (dv-core.o, dv-pal.o): Ditto. + + * sim-hw.h: New file. + + * hw-device.h, hw-device.c, hw-properties.h, hw-properties.c, + hw-ports.h, hw-ports.c: New files. Copied from ../ppc/device.[ch]. + + * hw-tree.h, hw-tree.c: New files. Copied from ../ppc/tree.[hc]. + + * hw-base.h, hw-base.c: new files. Copied from + ../ppc/device_table.[hc]. + + * dv-core.c, dv-pal.c: New files. Copied from + ../ppc/hw_{core,pal}.c + + * sim-basics.h (struct hw): Declare. + (enum port_direction, enum object_disposition): Declare. + Wed Mar 18 12:38:12 1998 Andrew Cagney * aclocal.m4 (SIM_AC_OPTION_HARDWARE): Set sim_hw_obj, sim_dv_obj, diff --git a/sim/common/hw-tree.h b/sim/common/hw-tree.h new file mode 100644 index 0000000..3a8caff --- /dev/null +++ b/sim/common/hw-tree.h @@ -0,0 +1,103 @@ +/* This file is part of the program psim. + + Copyright (C) 1994-1997, Andrew Cagney + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + */ + + +#ifndef HW_TREE +#define HW_TREE + + +struct hw *hw_tree_create +(SIM_DESC sd, + const char *device); + +struct hw *hw_tree_parse +(struct hw *root, + const char *fmt, + ...) __attribute__ ((format (printf, 2, 3))); + +void hw_tree_finish +(struct hw *root); + +void hw_tree_print +(struct hw *root); + + +/* Tree traversal:: + + The entire device tree can be traversed using the + <> function. The traversal can be in + either prefix or postfix order. + + */ + +typedef void (hw_tree_traverse_function) + (struct hw *device, + void *data); + +void hw_tree_traverse +(struct hw *root, + hw_tree_traverse_function *prefix, + hw_tree_traverse_function *postfix, + void *data); + + +/* Tree lookup:: + + The function <> will attempt to locate the + specified device within the tree. If the device is not found a + NULL device is returned. + + */ + +struct hw * hw_tree_find_device +(struct hw *root, + const char *path); + + +const struct hw_property *hw_tree_find_property +(struct hw *root, + const char *path_to_property); + +int hw_tree_find_boolean_property +(struct hw *root, + const char *path_to_property); + +signed_cell hw_tree_find_integer_property +(struct hw *root, + const char *path_to_property); + +#if NOT_YET +device_instance *hw_tree_find_ihandle_property +(struct hw *root, + const char *path_to_property); +#endif + +const char *hw_tree_find_string_property +(struct hw *root, + const char *path_to_property); + + +/* Perform a soft reset on the created tree. */ + +void hw_tree_reset +(struct hw *root); + + +#endif -- 2.7.4