~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/arm/include/asm/mach/arch.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  arch/arm/include/asm/mach/arch.h
 
3
 *
 
4
 *  Copyright (C) 2000 Russell King
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License version 2 as
 
8
 * published by the Free Software Foundation.
 
9
 */
 
10
 
 
11
#ifndef __ASSEMBLY__
 
12
 
 
13
struct tag;
 
14
struct meminfo;
 
15
struct sys_timer;
 
16
struct pt_regs;
 
17
 
 
18
struct machine_desc {
 
19
        unsigned int            nr;             /* architecture number  */
 
20
        const char              *name;          /* architecture name    */
 
21
        unsigned long           atag_offset;    /* tagged list (relative) */
 
22
        const char              **dt_compat;    /* array of device tree
 
23
                                                 * 'compatible' strings */
 
24
 
 
25
        unsigned int            nr_irqs;        /* number of IRQs */
 
26
 
 
27
#ifdef CONFIG_ZONE_DMA
 
28
        unsigned long           dma_zone_size;  /* size of DMA-able area */
 
29
#endif
 
30
 
 
31
        unsigned int            video_start;    /* start of video RAM   */
 
32
        unsigned int            video_end;      /* end of video RAM     */
 
33
 
 
34
        unsigned int            reserve_lp0 :1; /* never has lp0        */
 
35
        unsigned int            reserve_lp1 :1; /* never has lp1        */
 
36
        unsigned int            reserve_lp2 :1; /* never has lp2        */
 
37
        unsigned int            soft_reboot :1; /* soft reboot          */
 
38
        void                    (*fixup)(struct tag *, char **,
 
39
                                         struct meminfo *);
 
40
        void                    (*reserve)(void);/* reserve mem blocks  */
 
41
        void                    (*map_io)(void);/* IO mapping function  */
 
42
        void                    (*init_early)(void);
 
43
        void                    (*init_irq)(void);
 
44
        struct sys_timer        *timer;         /* system tick timer    */
 
45
        void                    (*init_machine)(void);
 
46
#ifdef CONFIG_MULTI_IRQ_HANDLER
 
47
        void                    (*handle_irq)(struct pt_regs *);
 
48
#endif
 
49
};
 
50
 
 
51
/*
 
52
 * Current machine - only accessible during boot.
 
53
 */
 
54
extern struct machine_desc *machine_desc;
 
55
 
 
56
/*
 
57
 * Machine type table - also only accessible during boot
 
58
 */
 
59
extern struct machine_desc __arch_info_begin[], __arch_info_end[];
 
60
#define for_each_machine_desc(p)                        \
 
61
        for (p = __arch_info_begin; p < __arch_info_end; p++)
 
62
 
 
63
/*
 
64
 * Set of macros to define architecture features.  This is built into
 
65
 * a table by the linker.
 
66
 */
 
67
#define MACHINE_START(_type,_name)                      \
 
68
static const struct machine_desc __mach_desc_##_type    \
 
69
 __used                                                 \
 
70
 __attribute__((__section__(".arch.info.init"))) = {    \
 
71
        .nr             = MACH_TYPE_##_type,            \
 
72
        .name           = _name,
 
73
 
 
74
#define MACHINE_END                             \
 
75
};
 
76
 
 
77
#define DT_MACHINE_START(_name, _namestr)               \
 
78
static const struct machine_desc __mach_desc_##_name    \
 
79
 __used                                                 \
 
80
 __attribute__((__section__(".arch.info.init"))) = {    \
 
81
        .nr             = ~0,                           \
 
82
        .name           = _namestr,
 
83
 
 
84
#endif