1/*
2 * Generate definitions needed by assembly language modules.
3 * This code generates raw asm output which is post-processed to extract
4 * and format the required data.
5 */
6
7#include <linux/config.h>
8#include <linux/sched.h>
9
10/* Use marker if you need to separate the values later */
11
12#define DEFINE(sym, val, marker) \
13	asm volatile("\n->" #sym " %0 " #val " " #marker : : "i" (val))
14
15#define BLANK() asm volatile("\n->" : : )
16
17int main(void)
18{
19	DEFINE(__THREAD_ar2, offsetof(struct task_struct, thread.ar2),);
20	DEFINE(__THREAD_ar4, offsetof(struct task_struct, thread.ar4),);
21	DEFINE(__THREAD_ksp, offsetof(struct task_struct, thread.ksp),);
22	DEFINE(__THREAD_per, offsetof(struct task_struct, thread.per_info),);
23	BLANK();
24	DEFINE(__TASK_state, offsetof(struct task_struct, state),);
25	DEFINE(__TASK_sigpending, offsetof(struct task_struct, sigpending),);
26	DEFINE(__TASK_need_resched,
27	       offsetof(struct task_struct, need_resched),);
28	DEFINE(__TASK_ptrace, offsetof(struct task_struct, ptrace),);
29	DEFINE(__TASK_processor, offsetof(struct task_struct, processor),);
30
31	return 0;
32}
33