of.h Source File
Back to the index.
src
include
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 */
of_emul_init_zs
void of_emul_init_zs(struct machine *)
Definition:
of.cc:775
data
u_short data
Definition:
siireg.h:79
f
void f(int s, int func, int only_name)
Definition:
generate_arm_r.c:45
of_emul_init_isa
void of_emul_init_isa(struct machine *)
Definition:
of.cc:718
of_emul_init
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
of_emul
int of_emul(struct cpu *cpu)
Definition:
of.cc:1078
of_emul_init_uninorth
void of_emul_init_uninorth(struct machine *)
Definition:
of.cc:839
machine
Definition:
machine.h:97
of_emul_init_adb
void of_emul_init_adb(struct machine *)
Definition:
of.cc:743
cpu
Definition:
cpu.h:326
vfb_data
Definition:
devices.h:198
Generated on Tue Aug 25 2020 19:25:06 for GXemul by
1.8.18