linux/arch/cris/kernel/asm-offsets.c
<<
>>
Prefs
   1#include <linux/sched.h>
   2#include <asm/thread_info.h>
   3#include <linux/autoconf.h>
   4
   5/*
   6 * Generate definitions needed by assembly language modules.
   7 * This code generates raw asm output which is post-processed to extract
   8 * and format the required data.
   9 */
  10
  11#define DEFINE(sym, val) \
  12        asm volatile("\n->" #sym " %0 " #val : : "i" (val))
  13
  14#define BLANK() asm volatile("\n->" : : )
  15
  16#if !defined(CONFIG_ETRAX_ARCH_V10) && !defined(CONFIG_ETRAX_ARCH_V32)
  17#error One of ARCH v10 and ARCH v32 must be true!
  18#endif
  19
  20int main(void)
  21{
  22#define ENTRY(entry) DEFINE(PT_ ## entry, offsetof(struct pt_regs, entry))
  23        ENTRY(orig_r10);
  24        ENTRY(r13);
  25        ENTRY(r12);
  26        ENTRY(r11);
  27        ENTRY(r10);
  28        ENTRY(r9);
  29#ifdef CONFIG_ETRAX_ARCH_V32
  30        ENTRY(acr);
  31        ENTRY(srs);
  32#endif
  33        ENTRY(mof);
  34#ifdef CONFIG_ETRAX_ARCH_V10
  35        ENTRY(dccr);
  36#else
  37        ENTRY(ccs);
  38#endif
  39        ENTRY(srp);
  40        BLANK();
  41#undef ENTRY
  42#define ENTRY(entry) DEFINE(TI_ ## entry, offsetof(struct thread_info, entry))
  43        ENTRY(task);
  44        ENTRY(flags);
  45        ENTRY(preempt_count);
  46        BLANK();
  47#undef ENTRY
  48#define ENTRY(entry) DEFINE(THREAD_ ## entry, offsetof(struct thread_struct, entry))
  49        ENTRY(ksp);
  50        ENTRY(usp);
  51#ifdef CONFIG_ETRAX_ARCH_V10
  52        ENTRY(dccr);
  53#else
  54        ENTRY(ccs);
  55#endif
  56        BLANK();
  57#undef ENTRY
  58#define ENTRY(entry) DEFINE(TASK_ ## entry, offsetof(struct task_struct, entry))
  59        ENTRY(pid);
  60        BLANK();
  61        DEFINE(LCLONE_VM, CLONE_VM);
  62        DEFINE(LCLONE_UNTRACED, CLONE_UNTRACED);
  63        return 0;
  64}
  65