xref: /inferno-os/os/js/rom.h (revision 74a4d8c26dd3c1e9febcb717cfd6cb6512991a7a)
1 typedef struct ROM	ROM;
2 typedef struct ROMconf	ROMconf;
3 
4 struct ROM
5 {
6 	uint	magic;
7 	uint	version;
8 	uint	plugversion;
9 	uint	monid;
10 	uint	pad1[3];
11 	ROMconf	*conf;
12 	uint	pad2[17];
13 	void	(*boot)(void*);
14 	uint	pad3[1];
15 	void	(*enter)(void);
16 	int	*msec;
17 	void	(*exit)(void);
18 	void	(**callback)(void);
19 	uint	(*interpret)(void*);
20 	uint	pad4[2];
21 	char	**bootpath;
22 	char	**bootargs;
23 	uint	*stdin;
24 	uint	*stdout;
25 	uint	(*phandle)(uint);
26 	uint	(*alloc)(void*, uint);
27 	void	(*free)(void*);
28 	uint	(*map)(void*, uint, uint, uint);
29 	void	(*unmap)(void*, uint);
30 	uint	(*open)(char*);
31 	uint	(*close)(uint);
32 	uint	(*read)(uint, void*, int);
33 	uint	(*write)(uint, void*, int);
34 	uint	(*seek)(uint, uint, uint);
35 	void	(*chain)(void*, uint, void*, void*, uint);
36 	void	(*release)(void*, uint);
37 	uint	pad4[15];
38 	void	(*putcxsegm)(int, ulong, int);
39 	int	(*startcpu)(uint, uint, uint, uint);
40 	int	(*stopcpu)(uint);
41 	int	(*idlecpu)(uint);
42 	int	(*resumecpu)(uint);
43 };
44 
45 struct ROMconf
46 {
47 	uint	(*next)(uint);
48 	uint	(*child)(uint);
49 	int	(*getproplen)(uint, void*);
50 	int	(*getprop)(uint, void*, void*);
51 	int	(*setprop)(uint, void*, void*);
52 	void*	(*nextprop)(uint, void*);
53 };
54 
55 #define	ROMMAGIC	0x10010407
56 
57 extern	ROM	*rom;
58