1 /*
2  *  linux/include/asm-arm/mach/arch.h
3  *
4  *  Copyright (C) 2000 Russell King
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10 
11 /*
12  * The size of struct machine_desc
13  *   (for assembler code)
14  */
15 #define SIZEOF_MACHINE_DESC	48
16 
17 #ifndef __ASSEMBLY__
18 
19 extern void setup_initrd(unsigned int start, unsigned int size);
20 extern void setup_ramdisk(int doload, int prompt, int start, unsigned int rd_sz);
21 
22 struct machine_desc {
23 	/*
24 	 * Note! The first four elements are used
25 	 * by assembler code in head-armv.S
26 	 */
27 	unsigned int		nr;		/* architecture number	*/
28 	unsigned int		phys_ram;	/* start of physical ram */
29 	unsigned int		phys_io;	/* start of physical io	*/
30 	unsigned int		io_pg_offst;	/* byte offset for io
31 						 * page tabe entry	*/
32 
33 	const char		*name;		/* architecture name	*/
34 	unsigned int		param_offset;	/* parameter page	*/
35 
36 	unsigned int		video_start;	/* start of video RAM	*/
37 	unsigned int		video_end;	/* end of video RAM	*/
38 
39 	unsigned int		reserve_lp0 :1;	/* never has lp0	*/
40 	unsigned int		reserve_lp1 :1;	/* never has lp1	*/
41 	unsigned int		reserve_lp2 :1;	/* never has lp2	*/
42 	unsigned int		soft_reboot :1;	/* soft reboot		*/
43 	void			(*fixup)(struct machine_desc *,
44 					 struct param_struct *, char **,
45 					 struct meminfo *);
46 	void			(*map_io)(void);/* IO mapping function	*/
47 	void			(*init_irq)(void);
48 };
49 
50 /*
51  * Set of macros to define architecture features.  This is built into
52  * a table by the linker.
53  */
54 #define MACHINE_START(_type,_name)		\
55 const struct machine_desc __mach_desc_##_type	\
56  __attribute__((__section__(".arch.info"))) = {	\
57 	.nr		= MACH_TYPE_##_type,	\
58 	.name		= _name,
59 
60 #define MAINTAINER(n)
61 
62 #define BOOT_MEM(_pram,_pio,_vio)		\
63 	.phys_ram	= _pram,                \
64 	.phys_io	= _pio,			\
65 	.io_pg_offst	= ((_vio)>>18)&0xfffc,
66 
67 #define BOOT_PARAMS(_params)			\
68 	.param_offset	= _params,
69 
70 #define VIDEO(_start,_end)			\
71 	.video_start	= _start,		\
72 	.video_end	= _end,
73 
74 #define DISABLE_PARPORT(_n)			\
75 	.reserve_lp##_n	= 1,
76 
77 #define BROKEN_HLT /* unused */
78 
79 #define SOFT_REBOOT				\
80 	.soft_reboot	= 1,
81 
82 #define FIXUP(_func)				\
83 	.fixup		= _func,
84 
85 #define MAPIO(_func)				\
86 	.map_io		= _func,
87 
88 #define INITIRQ(_func)				\
89 	.init_irq	= _func,
90 
91 #define MACHINE_END				\
92 };
93 
94 #endif
95