mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-04 02:56:43 +07:00
7a88d7a8f4
s390 has a strange marker in DEFINE. Undefine the DEFINE from kbuild.h and define it the way s390 wants it to preserve things as they were. May be good if the arch maintainer could go over this and check if this workaround is really necessary. Signed-off-by: Christoph Lameter <clameter@sgi.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
48 lines
1.9 KiB
C
48 lines
1.9 KiB
C
/*
|
|
* Generate definitions needed by assembly language modules.
|
|
* This code generates raw asm output which is post-processed to extract
|
|
* and format the required data.
|
|
*/
|
|
|
|
#include <linux/sched.h>
|
|
#include <linux/kbuild.h>
|
|
|
|
/* Use marker if you need to separate the values later */
|
|
#undef DEFINE
|
|
#define DEFINE(sym, val, marker) \
|
|
asm volatile("\n->" #sym " %0 " #val " " #marker : : "i" (val))
|
|
|
|
int main(void)
|
|
{
|
|
DEFINE(__THREAD_info, offsetof(struct task_struct, stack),);
|
|
DEFINE(__THREAD_ksp, offsetof(struct task_struct, thread.ksp),);
|
|
DEFINE(__THREAD_per, offsetof(struct task_struct, thread.per_info),);
|
|
DEFINE(__THREAD_mm_segment,
|
|
offsetof(struct task_struct, thread.mm_segment),);
|
|
BLANK();
|
|
DEFINE(__TASK_pid, offsetof(struct task_struct, pid),);
|
|
BLANK();
|
|
DEFINE(__PER_atmid, offsetof(per_struct, lowcore.words.perc_atmid),);
|
|
DEFINE(__PER_address, offsetof(per_struct, lowcore.words.address),);
|
|
DEFINE(__PER_access_id, offsetof(per_struct, lowcore.words.access_id),);
|
|
BLANK();
|
|
DEFINE(__TI_task, offsetof(struct thread_info, task),);
|
|
DEFINE(__TI_domain, offsetof(struct thread_info, exec_domain),);
|
|
DEFINE(__TI_flags, offsetof(struct thread_info, flags),);
|
|
DEFINE(__TI_cpu, offsetof(struct thread_info, cpu),);
|
|
DEFINE(__TI_precount, offsetof(struct thread_info, preempt_count),);
|
|
BLANK();
|
|
DEFINE(__PT_ARGS, offsetof(struct pt_regs, args),);
|
|
DEFINE(__PT_PSW, offsetof(struct pt_regs, psw),);
|
|
DEFINE(__PT_GPRS, offsetof(struct pt_regs, gprs),);
|
|
DEFINE(__PT_ORIG_GPR2, offsetof(struct pt_regs, orig_gpr2),);
|
|
DEFINE(__PT_ILC, offsetof(struct pt_regs, ilc),);
|
|
DEFINE(__PT_TRAP, offsetof(struct pt_regs, trap),);
|
|
DEFINE(__PT_SIZE, sizeof(struct pt_regs),);
|
|
BLANK();
|
|
DEFINE(__SF_BACKCHAIN, offsetof(struct stack_frame, back_chain),);
|
|
DEFINE(__SF_GPRS, offsetof(struct stack_frame, gprs),);
|
|
DEFINE(__SF_EMPTY, offsetof(struct stack_frame, empty1),);
|
|
return 0;
|
|
}
|