Merge branch 'kvm-updates/2.6.39' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[pandora-kernel.git] / arch / unicore32 / kernel / asm-offsets.c
1 /*
2  * linux/arch/unicore32/kernel/asm-offsets.c
3  *
4  * Code specific to PKUnity SoC and UniCore ISA
5  *
6  * Copyright (C) 2001-2010 GUAN Xue-tao
7  *
8  * Generate definitions needed by assembly language modules.
9  * This code generates raw asm output which is post-processed to extract
10  * and format the required data.
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License version 2 as
14  * published by the Free Software Foundation.
15  */
16 #include <linux/sched.h>
17 #include <linux/mm.h>
18 #include <linux/dma-mapping.h>
19 #include <linux/kbuild.h>
20 #include <linux/suspend.h>
21 #include <linux/thread_info.h>
22 #include <asm/memory.h>
23 #include <asm/suspend.h>
24
25 /*
26  * GCC 3.0, 3.1: general bad code generation.
27  * GCC 3.2.0: incorrect function argument offset calculation.
28  * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c
29  *      (http://gcc.gnu.org/PR8896) and incorrect structure
30  *              initialisation in fs/jffs2/erase.c
31  */
32 #if (__GNUC__ < 4)
33 #error Your compiler should upgrade to uc4
34 #error  Known good compilers: 4.2.2
35 #endif
36
37 int main(void)
38 {
39         DEFINE(TSK_ACTIVE_MM,   offsetof(struct task_struct, active_mm));
40         BLANK();
41         DEFINE(TI_FLAGS,        offsetof(struct thread_info, flags));
42         DEFINE(TI_PREEMPT,      offsetof(struct thread_info, preempt_count));
43         DEFINE(TI_ADDR_LIMIT,   offsetof(struct thread_info, addr_limit));
44         DEFINE(TI_TASK,         offsetof(struct thread_info, task));
45         DEFINE(TI_EXEC_DOMAIN,  offsetof(struct thread_info, exec_domain));
46         DEFINE(TI_CPU,          offsetof(struct thread_info, cpu));
47         DEFINE(TI_CPU_SAVE,     offsetof(struct thread_info, cpu_context));
48         DEFINE(TI_USED_CP,      offsetof(struct thread_info, used_cp));
49 #ifdef CONFIG_UNICORE_FPU_F64
50         DEFINE(TI_FPSTATE,      offsetof(struct thread_info, fpstate));
51 #endif
52         BLANK();
53         DEFINE(S_R0,            offsetof(struct pt_regs, UCreg_00));
54         DEFINE(S_R1,            offsetof(struct pt_regs, UCreg_01));
55         DEFINE(S_R2,            offsetof(struct pt_regs, UCreg_02));
56         DEFINE(S_R3,            offsetof(struct pt_regs, UCreg_03));
57         DEFINE(S_R4,            offsetof(struct pt_regs, UCreg_04));
58         DEFINE(S_R5,            offsetof(struct pt_regs, UCreg_05));
59         DEFINE(S_R6,            offsetof(struct pt_regs, UCreg_06));
60         DEFINE(S_R7,            offsetof(struct pt_regs, UCreg_07));
61         DEFINE(S_R8,            offsetof(struct pt_regs, UCreg_08));
62         DEFINE(S_R9,            offsetof(struct pt_regs, UCreg_09));
63         DEFINE(S_R10,           offsetof(struct pt_regs, UCreg_10));
64         DEFINE(S_R11,           offsetof(struct pt_regs, UCreg_11));
65         DEFINE(S_R12,           offsetof(struct pt_regs, UCreg_12));
66         DEFINE(S_R13,           offsetof(struct pt_regs, UCreg_13));
67         DEFINE(S_R14,           offsetof(struct pt_regs, UCreg_14));
68         DEFINE(S_R15,           offsetof(struct pt_regs, UCreg_15));
69         DEFINE(S_R16,           offsetof(struct pt_regs, UCreg_16));
70         DEFINE(S_R17,           offsetof(struct pt_regs, UCreg_17));
71         DEFINE(S_R18,           offsetof(struct pt_regs, UCreg_18));
72         DEFINE(S_R19,           offsetof(struct pt_regs, UCreg_19));
73         DEFINE(S_R20,           offsetof(struct pt_regs, UCreg_20));
74         DEFINE(S_R21,           offsetof(struct pt_regs, UCreg_21));
75         DEFINE(S_R22,           offsetof(struct pt_regs, UCreg_22));
76         DEFINE(S_R23,           offsetof(struct pt_regs, UCreg_23));
77         DEFINE(S_R24,           offsetof(struct pt_regs, UCreg_24));
78         DEFINE(S_R25,           offsetof(struct pt_regs, UCreg_25));
79         DEFINE(S_R26,           offsetof(struct pt_regs, UCreg_26));
80         DEFINE(S_FP,            offsetof(struct pt_regs, UCreg_fp));
81         DEFINE(S_IP,            offsetof(struct pt_regs, UCreg_ip));
82         DEFINE(S_SP,            offsetof(struct pt_regs, UCreg_sp));
83         DEFINE(S_LR,            offsetof(struct pt_regs, UCreg_lr));
84         DEFINE(S_PC,            offsetof(struct pt_regs, UCreg_pc));
85         DEFINE(S_PSR,           offsetof(struct pt_regs, UCreg_asr));
86         DEFINE(S_OLD_R0,        offsetof(struct pt_regs, UCreg_ORIG_00));
87         DEFINE(S_FRAME_SIZE,    sizeof(struct pt_regs));
88         BLANK();
89         DEFINE(VMA_VM_MM,       offsetof(struct vm_area_struct, vm_mm));
90         DEFINE(VMA_VM_FLAGS,    offsetof(struct vm_area_struct, vm_flags));
91         BLANK();
92         DEFINE(VM_EXEC,         VM_EXEC);
93         BLANK();
94         DEFINE(PAGE_SZ,         PAGE_SIZE);
95         BLANK();
96         DEFINE(SYS_ERROR0,      0x9f0000);
97         BLANK();
98         DEFINE(PBE_ADDRESS,             offsetof(struct pbe, address));
99         DEFINE(PBE_ORIN_ADDRESS,        offsetof(struct pbe, orig_address));
100         DEFINE(PBE_NEXT,                offsetof(struct pbe, next));
101         DEFINE(SWSUSP_CPU,              offsetof(struct swsusp_arch_regs, \
102                                                         cpu_context));
103 #ifdef  CONFIG_UNICORE_FPU_F64
104         DEFINE(SWSUSP_FPSTATE,          offsetof(struct swsusp_arch_regs, \
105                                                         fpstate));
106 #endif
107         BLANK();
108         DEFINE(DMA_BIDIRECTIONAL,       DMA_BIDIRECTIONAL);
109         DEFINE(DMA_TO_DEVICE,           DMA_TO_DEVICE);
110         DEFINE(DMA_FROM_DEVICE,         DMA_FROM_DEVICE);
111         return 0;
112 }