summaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/arch.h')
-rw-r--r--arch/arm/kernel/arch.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/arch/arm/kernel/arch.h b/arch/arm/kernel/arch.h
index b7635b11e..91de77772 100644
--- a/arch/arm/kernel/arch.h
+++ b/arch/arm/kernel/arch.h
@@ -1,9 +1,27 @@
+/*
+ * The size of struct machine_desc
+ * (for assembler code)
+ */
+#define SIZEOF_MACHINE_DESC 40
+
+#ifndef __ASSEMBLY__
+
struct machine_desc {
+ /*
+ * Note! The first four elements are used
+ * by assembler code in head-armv.S
+ */
unsigned int nr; /* architecture number */
+ unsigned int phys_ram; /* start of physical ram */
+ unsigned int phys_io; /* start of physical io */
+ unsigned int virt_io; /* start of virtual io */
+
const char *name; /* architecture name */
unsigned int param_offset; /* parameter page */
+
unsigned int video_start; /* start of video RAM */
unsigned int video_end; /* end of video RAM */
+
unsigned int reserve_lp0 :1; /* never has lp0 */
unsigned int reserve_lp1 :1; /* never has lp1 */
unsigned int reserve_lp2 :1; /* never has lp2 */
@@ -13,3 +31,43 @@ struct machine_desc {
struct param_struct *, char **,
struct meminfo *);
};
+
+/*
+ * Set of macros to define architecture features
+ */
+#define MACHINE_START(_type,_name) \
+const struct machine_desc __mach_desc_##_type \
+ __attribute__((__section__(".arch.info"))) = { \
+ nr: MACH_TYPE_##_type##, \
+ name: _name,
+
+#define MAINTAINER(n)
+
+#define BOOT_MEM(_pram,_pio,_vio) \
+ phys_ram: _pram, \
+ phys_io: _pio, \
+ virt_io: _vio,
+
+#define BOOT_PARAMS(_params) \
+ param_offset: _params,
+
+#define VIDEO(_start,_end) \
+ video_start: _start, \
+ video_end: _end,
+
+#define DISABLE_PARPORT(_n) \
+ reserve_lp##_n##: 1,
+
+#define BROKEN_HLT \
+ broken_hlt: 1,
+
+#define SOFT_REBOOT \
+ soft_reboot: 1,
+
+#define FIXUP(_func) \
+ fixup: _func,
+
+#define MACHINE_END \
+};
+
+#endif