^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Generate definitions needed by assembly language modules.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * This code generates raw asm output which is post-processed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * to extract and format the required data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/sched.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/thread_info.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/procinfo.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/kbuild.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/unistd.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) void foo(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) OFFSET(REGS_A16, pt_regs, a16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) OFFSET(REGS_A17, pt_regs, a17);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) OFFSET(REGS_A18, pt_regs, a18);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) OFFSET(REGS_A19, pt_regs, a19);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) OFFSET(REGS_A20, pt_regs, a20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) OFFSET(REGS_A21, pt_regs, a21);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) OFFSET(REGS_A22, pt_regs, a22);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) OFFSET(REGS_A23, pt_regs, a23);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) OFFSET(REGS_A24, pt_regs, a24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) OFFSET(REGS_A25, pt_regs, a25);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) OFFSET(REGS_A26, pt_regs, a26);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) OFFSET(REGS_A27, pt_regs, a27);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) OFFSET(REGS_A28, pt_regs, a28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) OFFSET(REGS_A29, pt_regs, a29);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) OFFSET(REGS_A30, pt_regs, a30);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) OFFSET(REGS_A31, pt_regs, a31);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) OFFSET(REGS_B16, pt_regs, b16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) OFFSET(REGS_B17, pt_regs, b17);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) OFFSET(REGS_B18, pt_regs, b18);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) OFFSET(REGS_B19, pt_regs, b19);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) OFFSET(REGS_B20, pt_regs, b20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) OFFSET(REGS_B21, pt_regs, b21);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) OFFSET(REGS_B22, pt_regs, b22);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) OFFSET(REGS_B23, pt_regs, b23);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) OFFSET(REGS_B24, pt_regs, b24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) OFFSET(REGS_B25, pt_regs, b25);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) OFFSET(REGS_B26, pt_regs, b26);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) OFFSET(REGS_B27, pt_regs, b27);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) OFFSET(REGS_B28, pt_regs, b28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) OFFSET(REGS_B29, pt_regs, b29);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) OFFSET(REGS_B30, pt_regs, b30);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) OFFSET(REGS_B31, pt_regs, b31);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) OFFSET(REGS_A0, pt_regs, a0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) OFFSET(REGS_A1, pt_regs, a1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) OFFSET(REGS_A2, pt_regs, a2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) OFFSET(REGS_A3, pt_regs, a3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) OFFSET(REGS_A4, pt_regs, a4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) OFFSET(REGS_A5, pt_regs, a5);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) OFFSET(REGS_A6, pt_regs, a6);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) OFFSET(REGS_A7, pt_regs, a7);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) OFFSET(REGS_A8, pt_regs, a8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) OFFSET(REGS_A9, pt_regs, a9);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) OFFSET(REGS_A10, pt_regs, a10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) OFFSET(REGS_A11, pt_regs, a11);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) OFFSET(REGS_A12, pt_regs, a12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) OFFSET(REGS_A13, pt_regs, a13);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) OFFSET(REGS_A14, pt_regs, a14);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) OFFSET(REGS_A15, pt_regs, a15);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) OFFSET(REGS_B0, pt_regs, b0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) OFFSET(REGS_B1, pt_regs, b1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) OFFSET(REGS_B2, pt_regs, b2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) OFFSET(REGS_B3, pt_regs, b3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) OFFSET(REGS_B4, pt_regs, b4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) OFFSET(REGS_B5, pt_regs, b5);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) OFFSET(REGS_B6, pt_regs, b6);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) OFFSET(REGS_B7, pt_regs, b7);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) OFFSET(REGS_B8, pt_regs, b8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) OFFSET(REGS_B9, pt_regs, b9);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) OFFSET(REGS_B10, pt_regs, b10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) OFFSET(REGS_B11, pt_regs, b11);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) OFFSET(REGS_B12, pt_regs, b12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) OFFSET(REGS_B13, pt_regs, b13);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) OFFSET(REGS_DP, pt_regs, dp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) OFFSET(REGS_SP, pt_regs, sp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) OFFSET(REGS_TSR, pt_regs, tsr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) OFFSET(REGS_ORIG_A4, pt_regs, orig_a4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) DEFINE(REGS__END, sizeof(struct pt_regs));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) OFFSET(THREAD_PC, thread_struct, pc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) OFFSET(THREAD_B15_14, thread_struct, b15_14);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) OFFSET(THREAD_A15_14, thread_struct, a15_14);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) OFFSET(THREAD_B13_12, thread_struct, b13_12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) OFFSET(THREAD_A13_12, thread_struct, a13_12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) OFFSET(THREAD_B11_10, thread_struct, b11_10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) OFFSET(THREAD_A11_10, thread_struct, a11_10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) OFFSET(THREAD_RICL_ICL, thread_struct, ricl_icl);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) OFFSET(TASK_STATE, task_struct, state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) OFFSET(THREAD_INFO_FLAGS, thread_info, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) OFFSET(THREAD_INFO_PREEMPT_COUNT, thread_info, preempt_count);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) /* These would be unneccessary if we ran asm files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) * through the preprocessor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) DEFINE(KTHREAD_SHIFT, THREAD_SHIFT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) DEFINE(KTHREAD_START_SP, THREAD_START_SP);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) DEFINE(ENOSYS_, ENOSYS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) DEFINE(NR_SYSCALLS_, __NR_syscalls);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) DEFINE(_TIF_SYSCALL_TRACE, (1<<TIF_SYSCALL_TRACE));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) DEFINE(_TIF_NOTIFY_RESUME, (1<<TIF_NOTIFY_RESUME));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) DEFINE(_TIF_SIGPENDING, (1<<TIF_SIGPENDING));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) DEFINE(_TIF_NEED_RESCHED, (1<<TIF_NEED_RESCHED));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) DEFINE(_TIF_ALLWORK_MASK, TIF_ALLWORK_MASK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) DEFINE(_TIF_WORK_MASK, TIF_WORK_MASK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) }