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