of.h Source File

Back to the index.

of.h
Go to the documentation of this file.
1 #ifndef OF_H
2 #define OF_H
3 
4 /*
5  * Copyright (C) 2005-2010 Anders Gavare. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  * 3. The name of the author may not be used to endorse or promote products
16  * derived from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  *
30  *
31  * OpenFirmware emulation. (See src/promemul/of.c for details.)
32  */
33 
34 struct machine;
35 struct cpu;
36 struct vfb_data;
37 
38 #ifdef OF_C
39 
40 #define OF_N_MAX_ARGS 10
41 #define OF_ARG_MAX_LEN 4096
42 
43 struct of_device_property {
44  struct of_device_property *next;
45  char *name;
46 
47  unsigned char *data;
48  uint32_t len;
49  int flags;
50 };
51 
52 #define OF_PROP_STRING 1
53 #define OF_PROP_INT 2
54 
55 struct of_device {
56  struct of_device *next;
57  int handle;
58  int parent;
59  char *name;
60  struct of_device_property *properties;
61 };
62 
63 #define OF_FIND(ptr,cond) for (; ptr != NULL; ptr = ptr->next) \
64  if (cond) \
65  break;
66 
67 #define OF_SERVICE_ARGS struct cpu *, char **, uint64_t, uint64_t
68 
69 /*
70  * OpenFirmare service 'name' is defined by a OF_SERVICE(name). The code
71  * implementing the service should use OF_GET_ARG to read numerical arguments
72  * and use arg[] for strings.
73  */
74 #define OF_SERVICE(n) static int of__ ## n (struct cpu *cpu, \
75  char **arg, uint64_t base, uint64_t retofs)
76 #define OF_GET_ARG(i) load_32bit_word(cpu, base + 12 + \
77  sizeof(uint32_t) * (i))
78 
79 struct of_service {
80  struct of_service *next;
81  char *name;
82  int (*f)(OF_SERVICE_ARGS);
83  int n_args;
84  int n_ret_args;
85 };
86 
87 struct of_data {
88  struct of_device *of_devices;
89  struct of_service *of_services;
90 
91  /* For framebuffers: */
92  struct vfb_data *vfb_data;
93 };
94 
95 #endif /* OF_C */
96 
97 
98 struct of_data *of_emul_init(struct machine *machine, struct vfb_data *,
99  uint64_t fb_addr, int fb_xsize, int fb_ysize);
100 
101 void of_emul_init_uninorth(struct machine *);
102 void of_emul_init_isa(struct machine *);
103 void of_emul_init_adb(struct machine *);
104 void of_emul_init_zs(struct machine *);
105 
106 int of_emul(struct cpu *cpu);
107 
108 
109 #endif /* OF_H */
void of_emul_init_isa(struct machine *)
Definition: of.cc:718
void f(int s, int func, int only_name)
u_short data
Definition: siireg.h:79
int of_emul(struct cpu *cpu)
Definition: of.cc:1078
void of_emul_init_adb(struct machine *)
Definition: of.cc:743
void of_emul_init_uninorth(struct machine *)
Definition: of.cc:839
Definition: cpu.h:326
struct of_data * of_emul_init(struct machine *machine, struct vfb_data *, uint64_t fb_addr, int fb_xsize, int fb_ysize)
Definition: of.cc:940
void of_emul_init_zs(struct machine *)
Definition: of.cc:775

Generated on Sun Sep 30 2018 16:05:18 for GXemul by doxygen 1.8.13