1#include <linux/sched.h> 2#include <asm/thread_info.h> 3 4/* 5 * Generate definitions needed by assembly language modules. 6 * This code generates raw asm output which is post-processed to extract 7 * and format the required data. 8 */ 9 10#define DEFINE(sym, val) \ 11 asm volatile("\n->" #sym " %0 " #val : : "i" (val)) 12 13#define BLANK() asm volatile("\n->" : : ) 14 15int main(void) 16{ 17#define ENTRY(entry) DEFINE(PT_ ## entry, offsetof(struct pt_regs, entry)) 18 ENTRY(orig_r10); 19 ENTRY(r13); 20 ENTRY(r12); 21 ENTRY(r11); 22 ENTRY(r10); 23 ENTRY(r9); 24 ENTRY(acr); 25 ENTRY(srs); 26 ENTRY(mof); 27 ENTRY(ccs); 28 ENTRY(srp); 29 BLANK(); 30#undef ENTRY 31#define ENTRY(entry) DEFINE(TI_ ## entry, offsetof(struct thread_info, entry)) 32 ENTRY(task); 33 ENTRY(flags); 34 ENTRY(preempt_count); 35 BLANK(); 36#undef ENTRY 37#define ENTRY(entry) DEFINE(THREAD_ ## entry, offsetof(struct thread_struct, entry)) 38 ENTRY(ksp); 39 ENTRY(usp); 40 ENTRY(ccs); 41 BLANK(); 42#undef ENTRY 43#define ENTRY(entry) DEFINE(TASK_ ## entry, offsetof(struct task_struct, entry)) 44 ENTRY(pid); 45 BLANK(); 46 DEFINE(LCLONE_VM, CLONE_VM); 47 DEFINE(LCLONE_UNTRACED, CLONE_UNTRACED); 48 return 0; 49} 50