Prototype common device framework. Plenty more work to go.
authorAndrew Cagney <cagney@redhat.com>
Wed, 18 Mar 1998 04:08:21 +0000 (04:08 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 18 Mar 1998 04:08:21 +0000 (04:08 +0000)
sim/common/.Sanitize
sim/common/ChangeLog
sim/common/hw-tree.h [new file with mode: 0644]

index dd1d6cfd0dc730b7df54b30f18ef3142309d7176..595894fce24b04bf75db657a148d5871837d0ddc 100644 (file)
@@ -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:
 
index 4f5a6d3c878fbde60ef2f77ea2292d0cde9abb6a..dda6f5c4093884fa294480cdbaa5eda9280f1d19 100644 (file)
@@ -1,3 +1,30 @@
+Wed Mar 18 14:13:02 1998  Andrew Cagney  <cagney@b1.cygnus.com>
+
+       * 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  <cagney@b1.cygnus.com>
 
        * 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 (file)
index 0000000..3a8caff
--- /dev/null
@@ -0,0 +1,103 @@
+/*  This file is part of the program psim.
+
+    Copyright (C) 1994-1997, Andrew Cagney <cagney@highland.com.au>
+
+    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
+   <<device_tree_traverse()>> 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 <<hw_tree_find_device()>> 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