11da177e4SLinus Torvalds /* 24baa9922SRussell King * arch/arm/include/asm/mach/arch.h 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Copyright (C) 2000 Russell King 51da177e4SLinus Torvalds * 61da177e4SLinus Torvalds * This program is free software; you can redistribute it and/or modify 71da177e4SLinus Torvalds * it under the terms of the GNU General Public License version 2 as 81da177e4SLinus Torvalds * published by the Free Software Foundation. 91da177e4SLinus Torvalds */ 101da177e4SLinus Torvalds 111da177e4SLinus Torvalds #ifndef __ASSEMBLY__ 121da177e4SLinus Torvalds 131da177e4SLinus Torvalds struct tag; 141da177e4SLinus Torvalds struct meminfo; 151da177e4SLinus Torvalds struct sys_timer; 161da177e4SLinus Torvalds 171da177e4SLinus Torvalds struct machine_desc { 181da177e4SLinus Torvalds /* 196451d778SNicolas Pitre * Note! The first two elements are used 20717a54adSLeonid Evdokimov * by assembler code in head.S, head-common.S 211da177e4SLinus Torvalds */ 221da177e4SLinus Torvalds unsigned int nr; /* architecture number */ 231da177e4SLinus Torvalds const char *name; /* architecture name */ 24f9bd6ea4SRussell King unsigned long boot_params; /* tagged list */ 251da177e4SLinus Torvalds 26d71e3eb5SNicolas Pitre unsigned int nr_irqs; /* number of IRQs */ 27d71e3eb5SNicolas Pitre 281da177e4SLinus Torvalds unsigned int video_start; /* start of video RAM */ 291da177e4SLinus Torvalds unsigned int video_end; /* end of video RAM */ 301da177e4SLinus Torvalds 311da177e4SLinus Torvalds unsigned int reserve_lp0 :1; /* never has lp0 */ 321da177e4SLinus Torvalds unsigned int reserve_lp1 :1; /* never has lp1 */ 331da177e4SLinus Torvalds unsigned int reserve_lp2 :1; /* never has lp2 */ 341da177e4SLinus Torvalds unsigned int soft_reboot :1; /* soft reboot */ 351da177e4SLinus Torvalds void (*fixup)(struct machine_desc *, 361da177e4SLinus Torvalds struct tag *, char **, 371da177e4SLinus Torvalds struct meminfo *); 3898c672cfSRussell King void (*reserve)(void);/* reserve mem blocks */ 391da177e4SLinus Torvalds void (*map_io)(void);/* IO mapping function */ 401da177e4SLinus Torvalds void (*init_irq)(void); 411da177e4SLinus Torvalds struct sys_timer *timer; /* system tick timer */ 421da177e4SLinus Torvalds void (*init_machine)(void); 4352108641Seric miao #ifdef CONFIG_MULTI_IRQ_HANDLER 4452108641Seric miao void (*handle_irq)(struct pt_regs *); 4552108641Seric miao #endif 461da177e4SLinus Torvalds }; 471da177e4SLinus Torvalds 481da177e4SLinus Torvalds /* 49*8ff1443cSRussell King * Current machine - only accessible during boot. 50*8ff1443cSRussell King */ 51*8ff1443cSRussell King extern struct machine_desc *machine_desc; 52*8ff1443cSRussell King 53*8ff1443cSRussell King /* 541da177e4SLinus Torvalds * Set of macros to define architecture features. This is built into 551da177e4SLinus Torvalds * a table by the linker. 561da177e4SLinus Torvalds */ 571da177e4SLinus Torvalds #define MACHINE_START(_type,_name) \ 58f339ab3dSRussell King static const struct machine_desc __mach_desc_##_type \ 59b91d8a12SDavid Rientjes __used \ 609d0fd1ebSBen Dooks __attribute__((__section__(".arch.info.init"))) = { \ 611da177e4SLinus Torvalds .nr = MACH_TYPE_##_type, \ 621da177e4SLinus Torvalds .name = _name, 631da177e4SLinus Torvalds 641da177e4SLinus Torvalds #define MACHINE_END \ 651da177e4SLinus Torvalds }; 661da177e4SLinus Torvalds 671da177e4SLinus Torvalds #endif 68