1
2
3
4
5
6
7
8
9
10
11#ifndef __ASSEMBLY__
12
13struct tag;
14struct meminfo;
15struct sys_timer;
16
17struct machine_desc {
18 unsigned int nr;
19 const char *name;
20 unsigned long boot_params;
21 const char **dt_compat;
22
23
24 unsigned int nr_irqs;
25
26 unsigned int video_start;
27 unsigned int video_end;
28
29 unsigned int reserve_lp0 :1;
30 unsigned int reserve_lp1 :1;
31 unsigned int reserve_lp2 :1;
32 unsigned int soft_reboot :1;
33 void (*fixup)(struct machine_desc *,
34 struct tag *, char **,
35 struct meminfo *);
36 void (*reserve)(void);
37 void (*map_io)(void);
38 void (*init_early)(void);
39 void (*init_irq)(void);
40 struct sys_timer *timer;
41 void (*init_machine)(void);
42#ifdef CONFIG_MULTI_IRQ_HANDLER
43 void (*handle_irq)(struct pt_regs *);
44#endif
45};
46
47
48
49
50extern struct machine_desc *machine_desc;
51
52
53
54
55extern struct machine_desc __arch_info_begin[], __arch_info_end[];
56#define for_each_machine_desc(p) \
57 for (p = __arch_info_begin; p < __arch_info_end; p++)
58
59
60
61
62
63#define MACHINE_START(_type,_name) \
64static const struct machine_desc __mach_desc_##_type \
65 __used \
66 __attribute__((__section__(".arch.info.init"))) = { \
67 .nr = MACH_TYPE_##_type, \
68 .name = _name,
69
70#define MACHINE_END \
71};
72
73#endif
74