#include <linux/sched.h>
#include <asm/thread_info.h>
#include <linux/autoconf.h>

/*
 * Generate definitions needed by assembly language modules.
 * This code generates raw asm output which is post-processed to extract
 * and format the required data.
 */

#define DEFINE(sym, val) \
	asm volatile("\n->" #sym " %0 " #val : : "i" (val))

#define BLANK() asm volatile("\n->" : : )

#if !defined(CONFIG_ETRAX_ARCH_V10) && !defined(CONFIG_ETRAX_ARCH_V32)
#error One of ARCH v10 and ARCH v32 must be true!
#endif

int main(void)
{
#define ENTRY(entry) DEFINE(PT_ ## entry, offsetof(struct pt_regs, entry))
	ENTRY(orig_r10);
	ENTRY(r13);
	ENTRY(r12);
	ENTRY(r11);
	ENTRY(r10);
	ENTRY(r9);
#ifdef CONFIG_ETRAX_ARCH_V32
	ENTRY(acr);
	ENTRY(srs);
#endif
	ENTRY(mof);
#ifdef CONFIG_ETRAX_ARCH_V10
	ENTRY(dccr);
#else
	ENTRY(ccs);
#endif
	ENTRY(srp);
	BLANK();
#undef ENTRY
#define ENTRY(entry) DEFINE(TI_ ## entry, offsetof(struct thread_info, entry))
	ENTRY(task);
	ENTRY(flags);
	ENTRY(preempt_count);
	BLANK();
#undef ENTRY
#define ENTRY(entry) DEFINE(THREAD_ ## entry, offsetof(struct thread_struct, entry))
	ENTRY(ksp);
	ENTRY(usp);
#ifdef CONFIG_ETRAX_ARCH_V10
	ENTRY(dccr);
#else
	ENTRY(ccs);
#endif
	BLANK();
#undef ENTRY
#define ENTRY(entry) DEFINE(TASK_ ## entry, offsetof(struct task_struct, entry))
	ENTRY(pid);
	BLANK();
	DEFINE(LCLONE_VM, CLONE_VM);
	DEFINE(LCLONE_UNTRACED, CLONE_UNTRACED);
	return 0;
}
