1*4baa9922SRussell King /* 2*4baa9922SRussell King * arch/arm/include/asm/mach/arch.h 3*4baa9922SRussell King * 4*4baa9922SRussell King * Copyright (C) 2000 Russell King 5*4baa9922SRussell King * 6*4baa9922SRussell King * This program is free software; you can redistribute it and/or modify 7*4baa9922SRussell King * it under the terms of the GNU General Public License version 2 as 8*4baa9922SRussell King * published by the Free Software Foundation. 9*4baa9922SRussell King */ 10*4baa9922SRussell King 11*4baa9922SRussell King #ifndef __ASSEMBLY__ 12*4baa9922SRussell King 13*4baa9922SRussell King struct tag; 14*4baa9922SRussell King struct meminfo; 15*4baa9922SRussell King struct sys_timer; 16*4baa9922SRussell King 17*4baa9922SRussell King struct machine_desc { 18*4baa9922SRussell King /* 19*4baa9922SRussell King * Note! The first four elements are used 20*4baa9922SRussell King * by assembler code in head.S, head-common.S 21*4baa9922SRussell King */ 22*4baa9922SRussell King unsigned int nr; /* architecture number */ 23*4baa9922SRussell King unsigned int phys_io; /* start of physical io */ 24*4baa9922SRussell King unsigned int io_pg_offst; /* byte offset for io 25*4baa9922SRussell King * page tabe entry */ 26*4baa9922SRussell King 27*4baa9922SRussell King const char *name; /* architecture name */ 28*4baa9922SRussell King unsigned long boot_params; /* tagged list */ 29*4baa9922SRussell King 30*4baa9922SRussell King unsigned int video_start; /* start of video RAM */ 31*4baa9922SRussell King unsigned int video_end; /* end of video RAM */ 32*4baa9922SRussell King 33*4baa9922SRussell King unsigned int reserve_lp0 :1; /* never has lp0 */ 34*4baa9922SRussell King unsigned int reserve_lp1 :1; /* never has lp1 */ 35*4baa9922SRussell King unsigned int reserve_lp2 :1; /* never has lp2 */ 36*4baa9922SRussell King unsigned int soft_reboot :1; /* soft reboot */ 37*4baa9922SRussell King void (*fixup)(struct machine_desc *, 38*4baa9922SRussell King struct tag *, char **, 39*4baa9922SRussell King struct meminfo *); 40*4baa9922SRussell King void (*map_io)(void);/* IO mapping function */ 41*4baa9922SRussell King void (*init_irq)(void); 42*4baa9922SRussell King struct sys_timer *timer; /* system tick timer */ 43*4baa9922SRussell King void (*init_machine)(void); 44*4baa9922SRussell King }; 45*4baa9922SRussell King 46*4baa9922SRussell King /* 47*4baa9922SRussell King * Set of macros to define architecture features. This is built into 48*4baa9922SRussell King * a table by the linker. 49*4baa9922SRussell King */ 50*4baa9922SRussell King #define MACHINE_START(_type,_name) \ 51*4baa9922SRussell King static const struct machine_desc __mach_desc_##_type \ 52*4baa9922SRussell King __used \ 53*4baa9922SRussell King __attribute__((__section__(".arch.info.init"))) = { \ 54*4baa9922SRussell King .nr = MACH_TYPE_##_type, \ 55*4baa9922SRussell King .name = _name, 56*4baa9922SRussell King 57*4baa9922SRussell King #define MACHINE_END \ 58*4baa9922SRussell King }; 59*4baa9922SRussell King 60*4baa9922SRussell King #endif 61