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