linux/arch/unicore32/kernel/asm-offsets.c
<<
>>
Prefs
   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
  37int 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_CPU,          offsetof(struct thread_info, cpu));
  46        DEFINE(TI_CPU_SAVE,     offsetof(struct thread_info, cpu_context));
  47        DEFINE(TI_USED_CP,      offsetof(struct thread_info, used_cp));
  48#ifdef CONFIG_UNICORE_FPU_F64
  49        DEFINE(TI_FPSTATE,      offsetof(struct thread_info, fpstate));
  50#endif
  51        BLANK();
  52        DEFINE(S_R0,            offsetof(struct pt_regs, UCreg_00));
  53        DEFINE(S_R1,            offsetof(struct pt_regs, UCreg_01));
  54        DEFINE(S_R2,            offsetof(struct pt_regs, UCreg_02));
  55        DEFINE(S_R3,            offsetof(struct pt_regs, UCreg_03));
  56        DEFINE(S_R4,            offsetof(struct pt_regs, UCreg_04));
  57        DEFINE(S_R5,            offsetof(struct pt_regs, UCreg_05));
  58        DEFINE(S_R6,            offsetof(struct pt_regs, UCreg_06));
  59        DEFINE(S_R7,            offsetof(struct pt_regs, UCreg_07));
  60        DEFINE(S_R8,            offsetof(struct pt_regs, UCreg_08));
  61        DEFINE(S_R9,            offsetof(struct pt_regs, UCreg_09));
  62        DEFINE(S_R10,           offsetof(struct pt_regs, UCreg_10));
  63        DEFINE(S_R11,           offsetof(struct pt_regs, UCreg_11));
  64        DEFINE(S_R12,           offsetof(struct pt_regs, UCreg_12));
  65        DEFINE(S_R13,           offsetof(struct pt_regs, UCreg_13));
  66        DEFINE(S_R14,           offsetof(struct pt_regs, UCreg_14));
  67        DEFINE(S_R15,           offsetof(struct pt_regs, UCreg_15));
  68        DEFINE(S_R16,           offsetof(struct pt_regs, UCreg_16));
  69        DEFINE(S_R17,           offsetof(struct pt_regs, UCreg_17));
  70        DEFINE(S_R18,           offsetof(struct pt_regs, UCreg_18));
  71        DEFINE(S_R19,           offsetof(struct pt_regs, UCreg_19));
  72        DEFINE(S_R20,           offsetof(struct pt_regs, UCreg_20));
  73        DEFINE(S_R21,           offsetof(struct pt_regs, UCreg_21));
  74        DEFINE(S_R22,           offsetof(struct pt_regs, UCreg_22));
  75        DEFINE(S_R23,           offsetof(struct pt_regs, UCreg_23));
  76        DEFINE(S_R24,           offsetof(struct pt_regs, UCreg_24));
  77        DEFINE(S_R25,           offsetof(struct pt_regs, UCreg_25));
  78        DEFINE(S_R26,           offsetof(struct pt_regs, UCreg_26));
  79        DEFINE(S_FP,            offsetof(struct pt_regs, UCreg_fp));
  80        DEFINE(S_IP,            offsetof(struct pt_regs, UCreg_ip));
  81        DEFINE(S_SP,            offsetof(struct pt_regs, UCreg_sp));
  82        DEFINE(S_LR,            offsetof(struct pt_regs, UCreg_lr));
  83        DEFINE(S_PC,            offsetof(struct pt_regs, UCreg_pc));
  84        DEFINE(S_PSR,           offsetof(struct pt_regs, UCreg_asr));
  85        DEFINE(S_OLD_R0,        offsetof(struct pt_regs, UCreg_ORIG_00));
  86        DEFINE(S_FRAME_SIZE,    sizeof(struct pt_regs));
  87        BLANK();
  88        DEFINE(VMA_VM_MM,       offsetof(struct vm_area_struct, vm_mm));
  89        DEFINE(VMA_VM_FLAGS,    offsetof(struct vm_area_struct, vm_flags));
  90        BLANK();
  91        DEFINE(VM_EXEC,         VM_EXEC);
  92        BLANK();
  93        DEFINE(PAGE_SZ,         PAGE_SIZE);
  94        BLANK();
  95        DEFINE(SYS_ERROR0,      0x9f0000);
  96        BLANK();
  97        DEFINE(PBE_ADDRESS,             offsetof(struct pbe, address));
  98        DEFINE(PBE_ORIN_ADDRESS,        offsetof(struct pbe, orig_address));
  99        DEFINE(PBE_NEXT,                offsetof(struct pbe, next));
 100        DEFINE(SWSUSP_CPU,              offsetof(struct swsusp_arch_regs, \
 101                                                        cpu_context));
 102#ifdef  CONFIG_UNICORE_FPU_F64
 103        DEFINE(SWSUSP_FPSTATE,          offsetof(struct swsusp_arch_regs, \
 104                                                        fpstate));
 105#endif
 106        BLANK();
 107        DEFINE(DMA_BIDIRECTIONAL,       DMA_BIDIRECTIONAL);
 108        DEFINE(DMA_TO_DEVICE,           DMA_TO_DEVICE);
 109        DEFINE(DMA_FROM_DEVICE,         DMA_FROM_DEVICE);
 110        return 0;
 111}
 112