aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/include/asm/openprom.h
diff options
context:
space:
mode:
authorSam Ravnborg <sam@ravnborg.org>2009-01-16 06:58:10 -0500
committerGreg Ungerer <gerg@uclinux.org>2009-01-16 06:58:10 -0500
commit49148020bcb6910ce71417bd990a5ce7017f9bd3 (patch)
treee410cc433a69075a0254ee4000cb10d71df3a641 /arch/m68k/include/asm/openprom.h
parentae04d1401577bb63151480a053057de58b8e10bb (diff)
m68k,m68knommu: merge header files
Merge header files for m68k and m68knommu to the single location: arch/m68k/include/asm The majority of this patch was the result of the script that is included in the changelog below. The script was originally written by Arnd Bergman and exten by me to cover a few more files. When the header files differed the script uses the following: The original m68k file is named <file>_mm.h [mm for memory manager] The m68knommu file is named <file>_no.h [no for no memory manager] The files uses the following include guard: This include gaurd works as the m68knommu toolchain set the __uClinux__ symbol - so this should work in userspace too. Merging the header files for m68k and m68knommu exposes the (unexpected?) ABI differences thus it is easier to actually identify these and thus to fix them. The commit has been build tested with both a m68k and a m68knommu toolchain - with success. The commit has also been tested with "make headers_check" and this patch fixes make headers_check for m68knommu. The script used: TARGET=arch/m68k/include/asm SOURCE=arch/m68knommu/include/asm INCLUDE="cachectl.h errno.h fcntl.h hwtest.h ioctls.h ipcbuf.h \ linkage.h math-emu.h md.h mman.h movs.h msgbuf.h openprom.h \ oplib.h poll.h posix_types.h resource.h rtc.h sembuf.h shmbuf.h \ shm.h shmparam.h socket.h sockios.h spinlock.h statfs.h stat.h \ termbits.h termios.h tlb.h types.h user.h" EQUAL="auxvec.h cputime.h device.h emergency-restart.h futex.h \ ioctl.h irq_regs.h kdebug.h local.h mutex.h percpu.h \ sections.h topology.h" NOMUUFILES="anchor.h bootstd.h coldfire.h commproc.h dbg.h \ elia.h flat.h m5206sim.h m520xsim.h m523xsim.h m5249sim.h \ m5272sim.h m527xsim.h m528xsim.h m5307sim.h m532xsim.h \ m5407sim.h m68360_enet.h m68360.h m68360_pram.h m68360_quicc.h \ m68360_regs.h MC68328.h MC68332.h MC68EZ328.h MC68VZ328.h \ mcfcache.h mcfdma.h mcfmbus.h mcfne.h mcfpci.h mcfpit.h \ mcfsim.h mcfsmc.h mcftimer.h mcfuart.h mcfwdebug.h \ nettel.h quicc_simple.h smp.h" FILES="atomic.h bitops.h bootinfo.h bug.h bugs.h byteorder.h cache.h \ cacheflush.h checksum.h current.h delay.h div64.h \ dma-mapping.h dma.h elf.h entry.h fb.h fpu.h hardirq.h hw_irq.h io.h \ irq.h kmap_types.h machdep.h mc146818rtc.h mmu.h mmu_context.h \ module.h page.h page_offset.h param.h pci.h pgalloc.h \ pgtable.h processor.h ptrace.h scatterlist.h segment.h \ setup.h sigcontext.h siginfo.h signal.h string.h system.h swab.h \ thread_info.h timex.h tlbflush.h traps.h uaccess.h ucontext.h \ unaligned.h unistd.h" mergefile() { BASE=${1%.h} git mv ${SOURCE}/$1 ${TARGET}/${BASE}_no.h git mv ${TARGET}/$1 ${TARGET}/${BASE}_mm.h cat << EOF > ${TARGET}/$1 EOF git add ${TARGET}/$1 } set -e mkdir -p ${TARGET} git mv include/asm-m68k/* ${TARGET} rmdir include/asm-m68k git rm ${SOURCE}/Kbuild for F in $INCLUDE $EQUAL; do git rm ${SOURCE}/$F done for F in $NOMUUFILES; do git mv ${SOURCE}/$F ${TARGET}/$F done for F in $FILES ; do mergefile $F done rmdir arch/m68knommu/include/asm rmdir arch/m68knommu/include Cc: Arnd Bergmann <arnd@arndb.de> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch/m68k/include/asm/openprom.h')
-rw-r--r--arch/m68k/include/asm/openprom.h312
1 files changed, 312 insertions, 0 deletions
diff --git a/arch/m68k/include/asm/openprom.h b/arch/m68k/include/asm/openprom.h
new file mode 100644
index 000000000000..d33cdadf78e1
--- /dev/null
+++ b/arch/m68k/include/asm/openprom.h
@@ -0,0 +1,312 @@
1#ifndef __SPARC_OPENPROM_H
2#define __SPARC_OPENPROM_H
3
4/* openprom.h: Prom structures and defines for access to the OPENBOOT
5 * prom routines and data areas.
6 *
7 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
8 */
9
10
11/* Empirical constants... */
12#ifdef CONFIG_SUN3
13#define KADB_DEBUGGER_BEGVM 0x0fee0000 /* There is no kadb yet but...*/
14#define LINUX_OPPROM_BEGVM 0x0fef0000
15#define LINUX_OPPROM_ENDVM 0x0ff10000 /* I think this is right - tm */
16#else
17#define KADB_DEBUGGER_BEGVM 0xffc00000 /* Where kern debugger is in virt-mem */
18#define LINUX_OPPROM_BEGVM 0xffd00000
19#define LINUX_OPPROM_ENDVM 0xfff00000
20#define LINUX_OPPROM_MAGIC 0x10010407
21#endif
22
23#ifndef __ASSEMBLY__
24/* V0 prom device operations. */
25struct linux_dev_v0_funcs {
26 int (*v0_devopen)(char *device_str);
27 int (*v0_devclose)(int dev_desc);
28 int (*v0_rdblkdev)(int dev_desc, int num_blks, int blk_st, char *buf);
29 int (*v0_wrblkdev)(int dev_desc, int num_blks, int blk_st, char *buf);
30 int (*v0_wrnetdev)(int dev_desc, int num_bytes, char *buf);
31 int (*v0_rdnetdev)(int dev_desc, int num_bytes, char *buf);
32 int (*v0_rdchardev)(int dev_desc, int num_bytes, int dummy, char *buf);
33 int (*v0_wrchardev)(int dev_desc, int num_bytes, int dummy, char *buf);
34 int (*v0_seekdev)(int dev_desc, long logical_offst, int from);
35};
36
37/* V2 and later prom device operations. */
38struct linux_dev_v2_funcs {
39 int (*v2_inst2pkg)(int d); /* Convert ihandle to phandle */
40 char * (*v2_dumb_mem_alloc)(char *va, unsigned sz);
41 void (*v2_dumb_mem_free)(char *va, unsigned sz);
42
43 /* To map devices into virtual I/O space. */
44 char * (*v2_dumb_mmap)(char *virta, int which_io, unsigned paddr, unsigned sz);
45 void (*v2_dumb_munmap)(char *virta, unsigned size);
46
47 int (*v2_dev_open)(char *devpath);
48 void (*v2_dev_close)(int d);
49 int (*v2_dev_read)(int d, char *buf, int nbytes);
50 int (*v2_dev_write)(int d, char *buf, int nbytes);
51 int (*v2_dev_seek)(int d, int hi, int lo);
52
53 /* Never issued (multistage load support) */
54 void (*v2_wheee2)(void);
55 void (*v2_wheee3)(void);
56};
57
58struct linux_mlist_v0 {
59 struct linux_mlist_v0 *theres_more;
60 char *start_adr;
61 unsigned num_bytes;
62};
63
64struct linux_mem_v0 {
65 struct linux_mlist_v0 **v0_totphys;
66 struct linux_mlist_v0 **v0_prommap;
67 struct linux_mlist_v0 **v0_available; /* What we can use */
68};
69
70/* Arguments sent to the kernel from the boot prompt. */
71struct linux_arguments_v0 {
72 char *argv[8];
73 char args[100];
74 char boot_dev[2];
75 int boot_dev_ctrl;
76 int boot_dev_unit;
77 int dev_partition;
78 char *kernel_file_name;
79 void *aieee1; /* XXX */
80};
81
82/* V2 and up boot things. */
83struct linux_bootargs_v2 {
84 char **bootpath;
85 char **bootargs;
86 int *fd_stdin;
87 int *fd_stdout;
88};
89
90#if defined(CONFIG_SUN3) || defined(CONFIG_SUN3X)
91struct linux_romvec {
92 char *pv_initsp;
93 int (*pv_startmon)(void);
94
95 int *diagberr;
96
97 struct linux_arguments_v0 **pv_v0bootargs;
98 unsigned *pv_sun3mem;
99
100 unsigned char (*pv_getchar)(void);
101 int (*pv_putchar)(int ch);
102 int (*pv_nbgetchar)(void);
103 int (*pv_nbputchar)(int ch);
104 unsigned char *pv_echo;
105 unsigned char *pv_insource;
106 unsigned char *pv_outsink;
107
108 int (*pv_getkey)(void);
109 int (*pv_initgetkey)(void);
110 unsigned int *pv_translation;
111 unsigned char *pv_keybid;
112 int *pv_screen_x;
113 int *pv_screen_y;
114 struct keybuf *pv_keybuf;
115
116 char *pv_monid;
117
118 /*
119 * Frame buffer output and terminal emulation
120 */
121
122 int (*pv_fbwritechar)(char);
123 int *pv_fbaddr;
124 char **pv_font;
125 int (*pv_fbwritestr)(char);
126
127 void (*pv_reboot)(char *bootstr);
128
129 /*
130 * Line input and parsing
131 */
132
133 unsigned char *pv_linebuf;
134 unsigned char **pv_lineptr;
135 int *pv_linesize;
136 int (*pv_getline)(void);
137 unsigned char (*pv_getnextchar)(void);
138 unsigned char (*pv_peeknextchar)(void);
139 int *pv_fbthere;
140 int (*pv_getnum)(void);
141
142 void (*pv_printf)(const char *fmt, ...);
143 int (*pv_printhex)(void);
144
145 unsigned char *pv_leds;
146 int (*pv_setleds)(void);
147
148 /*
149 * Non-maskable interrupt (nmi) information
150 */
151
152 int (*pv_nmiaddr)(void);
153 int (*pv_abortentry)(void);
154 int *pv_nmiclock;
155
156 int *pv_fbtype;
157
158 /*
159 * Assorted other things
160 */
161
162 unsigned pv_romvers;
163 struct globram *pv_globram;
164 char *pv_kbdzscc;
165
166 int *pv_keyrinit;
167 unsigned char *pv_keyrtick;
168 unsigned *pv_memoryavail;
169 long *pv_resetaddr;
170 long *pv_resetmap;
171
172 void (*pv_halt)(void);
173 unsigned char *pv_memorybitmap;
174
175#ifdef CONFIG_SUN3
176 void (*pv_setctxt)(int ctxt, char *va, int pmeg);
177 void (*pv_vector_cmd)(void);
178 int dummy1z;
179 int dummy2z;
180 int dummy3z;
181 int dummy4z;
182#endif
183};
184#else
185/* The top level PROM vector. */
186struct linux_romvec {
187 /* Version numbers. */
188 unsigned int pv_magic_cookie;
189 unsigned int pv_romvers;
190 unsigned int pv_plugin_revision;
191 unsigned int pv_printrev;
192
193 /* Version 0 memory descriptors. */
194 struct linux_mem_v0 pv_v0mem;
195
196 /* Node operations. */
197 struct linux_nodeops *pv_nodeops;
198
199 char **pv_bootstr;
200 struct linux_dev_v0_funcs pv_v0devops;
201
202 char *pv_stdin;
203 char *pv_stdout;
204#define PROMDEV_KBD 0 /* input from keyboard */
205#define PROMDEV_SCREEN 0 /* output to screen */
206#define PROMDEV_TTYA 1 /* in/out to ttya */
207#define PROMDEV_TTYB 2 /* in/out to ttyb */
208
209 /* Blocking getchar/putchar. NOT REENTRANT! (grr) */
210 int (*pv_getchar)(void);
211 void (*pv_putchar)(int ch);
212
213 /* Non-blocking variants. */
214 int (*pv_nbgetchar)(void);
215 int (*pv_nbputchar)(int ch);
216
217 void (*pv_putstr)(char *str, int len);
218
219 /* Miscellany. */
220 void (*pv_reboot)(char *bootstr);
221 void (*pv_printf)(__const__ char *fmt, ...);
222 void (*pv_abort)(void);
223 __volatile__ int *pv_ticks;
224 void (*pv_halt)(void);
225 void (**pv_synchook)(void);
226
227 /* Evaluate a forth string, not different proto for V0 and V2->up. */
228 union {
229 void (*v0_eval)(int len, char *str);
230 void (*v2_eval)(char *str);
231 } pv_fortheval;
232
233 struct linux_arguments_v0 **pv_v0bootargs;
234
235 /* Get ether address. */
236 unsigned int (*pv_enaddr)(int d, char *enaddr);
237
238 struct linux_bootargs_v2 pv_v2bootargs;
239 struct linux_dev_v2_funcs pv_v2devops;
240
241 int filler[15];
242
243 /* This one is sun4c/sun4 only. */
244 void (*pv_setctxt)(int ctxt, char *va, int pmeg);
245
246 /* Prom version 3 Multiprocessor routines. This stuff is crazy.
247 * No joke. Calling these when there is only one cpu probably
248 * crashes the machine, have to test this. :-)
249 */
250
251 /* v3_cpustart() will start the cpu 'whichcpu' in mmu-context
252 * 'thiscontext' executing at address 'prog_counter'
253 */
254 int (*v3_cpustart)(unsigned int whichcpu, int ctxtbl_ptr,
255 int thiscontext, char *prog_counter);
256
257 /* v3_cpustop() will cause cpu 'whichcpu' to stop executing
258 * until a resume cpu call is made.
259 */
260 int (*v3_cpustop)(unsigned int whichcpu);
261
262 /* v3_cpuidle() will idle cpu 'whichcpu' until a stop or
263 * resume cpu call is made.
264 */
265 int (*v3_cpuidle)(unsigned int whichcpu);
266
267 /* v3_cpuresume() will resume processor 'whichcpu' executing
268 * starting with whatever 'pc' and 'npc' were left at the
269 * last 'idle' or 'stop' call.
270 */
271 int (*v3_cpuresume)(unsigned int whichcpu);
272};
273#endif
274
275/* Routines for traversing the prom device tree. */
276struct linux_nodeops {
277 int (*no_nextnode)(int node);
278 int (*no_child)(int node);
279 int (*no_proplen)(int node, char *name);
280 int (*no_getprop)(int node, char *name, char *val);
281 int (*no_setprop)(int node, char *name, char *val, int len);
282 char * (*no_nextprop)(int node, char *name);
283};
284
285/* More fun PROM structures for device probing. */
286#define PROMREG_MAX 16
287#define PROMVADDR_MAX 16
288#define PROMINTR_MAX 15
289
290struct linux_prom_registers {
291 int which_io; /* is this in OBIO space? */
292 char *phys_addr; /* The physical address of this register */
293 int reg_size; /* How many bytes does this register take up? */
294};
295
296struct linux_prom_irqs {
297 int pri; /* IRQ priority */
298 int vector; /* This is foobar, what does it do? */
299};
300
301/* Element of the "ranges" vector */
302struct linux_prom_ranges {
303 unsigned int ot_child_space;
304 unsigned int ot_child_base; /* Bus feels this */
305 unsigned int ot_parent_space;
306 unsigned int ot_parent_base; /* CPU looks from here */
307 unsigned int or_size;
308};
309
310#endif /* !(__ASSEMBLY__) */
311
312#endif /* !(__SPARC_OPENPROM_H) */