1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 #include <linux/types.h>
   9 
  10 #ifndef __ASSEMBLY__
  11 #include <linux/reboot.h>
  12 
  13 struct tag;
  14 struct pt_regs;
  15 struct smp_operations;
  16 #ifdef CONFIG_SMP
  17 #define smp_ops(ops) (&(ops))
  18 #define smp_init_ops(ops) (&(ops))
  19 #else
  20 #define smp_ops(ops) (struct smp_operations *)NULL
  21 #define smp_init_ops(ops) (bool (*)(void))NULL
  22 #endif
  23 
  24 struct machine_desc {
  25         unsigned int            nr;             
  26         const char              *name;          
  27         unsigned long           atag_offset;    
  28         const char *const       *dt_compat;     
  29 
  30 
  31         unsigned int            nr_irqs;        
  32 
  33 #ifdef CONFIG_ZONE_DMA
  34         phys_addr_t             dma_zone_size;  
  35 #endif
  36 
  37         unsigned int            video_start;    
  38         unsigned int            video_end;      
  39 
  40         unsigned char           reserve_lp0 :1; 
  41         unsigned char           reserve_lp1 :1; 
  42         unsigned char           reserve_lp2 :1; 
  43         enum reboot_mode        reboot_mode;    
  44         unsigned                l2c_aux_val;    
  45         unsigned                l2c_aux_mask;   
  46         void                    (*l2c_write_sec)(unsigned long, unsigned);
  47         const struct smp_operations     *smp;   
  48         bool                    (*smp_init)(void);
  49         void                    (*fixup)(struct tag *, char **);
  50         void                    (*dt_fixup)(void);
  51         long long               (*pv_fixup)(void);
  52         void                    (*reserve)(void);
  53         void                    (*map_io)(void);
  54         void                    (*init_early)(void);
  55         void                    (*init_irq)(void);
  56         void                    (*init_time)(void);
  57         void                    (*init_machine)(void);
  58         void                    (*init_late)(void);
  59 #ifdef CONFIG_GENERIC_IRQ_MULTI_HANDLER
  60         void                    (*handle_irq)(struct pt_regs *);
  61 #endif
  62         void                    (*restart)(enum reboot_mode, const char *);
  63 };
  64 
  65 
  66 
  67 
  68 extern const struct machine_desc *machine_desc;
  69 
  70 
  71 
  72 
  73 extern const struct machine_desc __arch_info_begin[], __arch_info_end[];
  74 #define for_each_machine_desc(p)                        \
  75         for (p = __arch_info_begin; p < __arch_info_end; p++)
  76 
  77 
  78 
  79 
  80 
  81 #define MACHINE_START(_type,_name)                      \
  82 static const struct machine_desc __mach_desc_##_type    \
  83  __used                                                 \
  84  __attribute__((__section__(".arch.info.init"))) = {    \
  85         .nr             = MACH_TYPE_##_type,            \
  86         .name           = _name,
  87 
  88 #define MACHINE_END                             \
  89 };
  90 
  91 #define DT_MACHINE_START(_name, _namestr)               \
  92 static const struct machine_desc __mach_desc_##_name    \
  93  __used                                                 \
  94  __attribute__((__section__(".arch.info.init"))) = {    \
  95         .nr             = ~0,                           \
  96         .name           = _namestr,
  97 
  98 #endif