Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/arch/ppc/include/ci.h

Source at commit 1305 created 12 years 8 months ago.
By meklort, Cleanup arch makefiles. Begin merging of BootX source - will need cleaning up
1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22/*
23 * ci.h - Headers for the OF Client Interface Library
24 *
25 * Copyright (c) 1998-2002 Apple Computer, Inc.
26 *
27 * DRI: Josh de Cesare
28 */
29
30#ifndef _BOOTX_CI_H_
31#define _BOOTX_CI_H_
32
33#define kCINoError (0)
34#define kCIError (-1)
35#define kCICatch (-2)
36
37typedef long CICell;
38
39struct CIArgs {
40 char *service;
41 CICell nArgs;
42 CICell nReturns;
43
44 union {
45 struct {// nArgs=1 + args, nReturns=1 + rets
46 const char *forth;
47 CICell cells[6 + 1 + 6];
48 } interpret;
49
50 struct {// nArgs=2 + args, nReturns=1 + rets
51 const char *method;
52 CICell iHandle;
53 CICell cells[6 + 1 + 6];
54 } callMethod;
55
56 struct {// nArgs=1, nReturns=1( device-specifier -- ihandle )
57 char *devSpec; // IN parameter
58 CICell ihandle;// RETURN value
59 } open;
60
61 struct {// nArgs=1, nReturns=0( ihandle -- )
62 CICell ihandle;// IN parameter
63 } close;
64
65 struct { // nArgs=3, nReturns=1 ( ihandle addr length -- actual )
66 CICell ihandle;
67 CICell addr;
68 CICell length;
69 CICell actual;
70 } read;
71
72 struct { // nArgs=3, nReturns=1 ( ihandle addr length -- actual )
73 CICell ihandle;
74 CICell addr;
75 CICell length;
76 CICell actual;
77 } write;
78
79 struct { // nArgs=3, nReturns=1 ( ihandle pos.high pos.low -- result )
80 CICell ihandle;
81 CICell pos_high;
82 CICell pos_low;
83 CICell result;
84 } seek;
85
86 struct {// nArgs=3, nReturns=1
87 CICell virt;
88 CICell size;
89 CICell align;
90 CICell baseaddr;
91 } claim;
92
93 struct {// nArgs=2, nReturns=0
94 CICell virt;
95 CICell size;
96 } release;
97
98 struct {// nArgs=1, nReturns=1( phandle -- peer-phandle )
99 CICell phandle; // IN parameter
100 CICell peerPhandle;// RETURN value
101 } peer;
102
103 struct {// nArgs=1, nReturns=1( phandle -- child-phandle )
104 CICell phandle;// IN parameter
105 CICell childPhandle;// RETURN value
106 } child;
107
108 struct {// nArgs=1, nReturns=1( phandle -- parent-phandle )
109 CICell childPhandle;// IN parameter
110 CICell parentPhandle;// RETURN value
111 } parent;
112
113 struct {// nArgs=1, nReturns=1( devSpec -- phandle )
114 char *devSpec; // IN parameter
115 CICell phandle; // RETURN value
116 } finddevice;
117
118 struct { // nArgs=3, nReturns=1 ( ihandle buf buflen -- length )
119 CICell ihandle; // IN ihandle
120 char *buf; // IN buf
121 CICell buflen; // IN buflen
122 CICell length; // RETURN length
123 } instanceToPath;
124
125 struct { // nArgs=1, nReturns=1 ( ihandle -- phandle )
126 CICell ihandle; // IN ihandle
127 CICell phandle; // RETURN phandle
128 } instanceToPackage;
129
130 struct { // nArgs=3, nReturns=1 ( phandle buf buflen -- length )
131 CICell phandle; // IN phandle
132 char *buf; // IN buf
133 CICell buflen; // IN buflen
134 CICell length; // RETURN length
135 } packageToPath;
136
137 struct {// nArgs=2, nReturns=1( phandle name -- size )
138 CICell phandle;// IN parameter
139 char *name;// IN parameter
140 CICell size;// RETURN value
141 } getproplen;
142
143 struct {// nArgs=4, nReturns=1( phandle name buf buflen -- size )
144 CICell phandle;// IN parameter
145 char *name;// IN parameter
146 char *buf;// IN parameter
147 CICell buflen;// IN parameter
148 CICell size;// RETURN value
149 } getprop;
150
151 struct {// nArgs=3, nReturns=1( phandle previous buf -- flag )
152 CICell phandle;// IN parameter
153 char *previous;// IN parameter
154 char *buf;// IN parameter
155 CICell flag;// RETURN value
156 } nextprop;
157
158 struct {// nArgs=4, nReturns=1( phandle name buf buflen -- size )
159 CICell phandle;// IN parameter
160 char *name;// IN parameter
161 char *buf;// IN parameter
162 CICell buflen;// IN parameter
163 CICell size;// RETURN value
164 } setprop;
165
166 struct {// nArgs=1, nReturns=0
167 char *bootspec;
168 } boot;
169 } args;
170};
171typedef struct CIArgs CIArgs;
172
173typedef long (*ClientInterfacePtr)(CIArgs *args);
174
175// ci.c
176long InitCI(ClientInterfacePtr ciPtr);
177long CallCI(CIArgs *ciArgsPtr);
178
179// Device Tree
180CICell Peer(CICell phandle);
181CICell Child(CICell phandle);
182CICell Parent(CICell phandle);
183CICell FindDevice(char *devSpec);
184CICell InstanceToPath(CICell ihandle, char *buf, long buflen);
185CICell InstanceToPackage(CICell ihandle);
186CICell PackageToPath(CICell phandle, char *buf, long buflen);
187CICell GetPropLen(CICell phandle, char *name);
188CICell GetProp(CICell phandle, char *name, char *buf, long buflen);
189CICell NextProp(CICell phandle, char *previous, char *buf);
190CICell SetProp(CICell phandle, char *name, char *buf, long buflen);
191
192// Device I/O
193CICell Open(char *devSpec);
194void Close(CICell ihandle);
195CICell Read(CICell ihandle, long addr, long length);
196CICell Write(CICell ihandle, long addr, long length);
197CICell Seek(CICell ihandle, long long position);
198
199// Call Method
200long CallMethod(long args, long rets, CICell iHandle, const char *method, ...);
201
202// Memory
203CICell Claim(CICell virt, CICell size, CICell align);
204void Release(CICell virt, CICell size);
205
206// Control Transfer
207void Boot(char *bootspec);
208void Enter(void);
209void Exit(void);
210void Quiesce(void);
211
212// Interpret
213long Interpret(long args, long rets, const char *forthString, ...);
214
215#endif /* ! _BOOTX_CI_H_ */
216

Archive Download this file

Revision: 1305