^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (C) 1996 David S. Miller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Ralf Baechle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Copyright (C) 2000 MIPS Technologies, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Copyright (c) 2010-2012, The Linux Foundation. All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/compat.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/sched.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/interrupt.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include <linux/kbuild.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #include <asm/ptrace.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #include <asm/processor.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /* This file is used to produce asm/linkerscript constants from header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) files typically used in c. Specifically, it generates asm-offsets.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) int main(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) COMMENT("This is a comment.");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) /* might get these from somewhere else. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) DEFINE(_PAGE_SIZE, PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) DEFINE(_PAGE_SHIFT, PAGE_SHIFT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) COMMENT("Hexagon pt_regs definitions");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) OFFSET(_PT_SYSCALL_NR, pt_regs, syscall_nr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) OFFSET(_PT_GPUGP, pt_regs, gpugp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) OFFSET(_PT_CS1CS0, pt_regs, cs1cs0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) OFFSET(_PT_R3130, pt_regs, r3130);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) OFFSET(_PT_R2928, pt_regs, r2928);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) OFFSET(_PT_R2726, pt_regs, r2726);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) OFFSET(_PT_R2524, pt_regs, r2524);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) OFFSET(_PT_R2322, pt_regs, r2322);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) OFFSET(_PT_R2120, pt_regs, r2120);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) OFFSET(_PT_R1918, pt_regs, r1918);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) OFFSET(_PT_R1716, pt_regs, r1716);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) OFFSET(_PT_R1514, pt_regs, r1514);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) OFFSET(_PT_R1312, pt_regs, r1312);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) OFFSET(_PT_R1110, pt_regs, r1110);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) OFFSET(_PT_R0908, pt_regs, r0908);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) OFFSET(_PT_R0706, pt_regs, r0706);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) OFFSET(_PT_R0504, pt_regs, r0504);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) OFFSET(_PT_R0302, pt_regs, r0302);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) OFFSET(_PT_R0100, pt_regs, r0100);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) OFFSET(_PT_LC0SA0, pt_regs, lc0sa0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) OFFSET(_PT_LC1SA1, pt_regs, lc1sa1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) OFFSET(_PT_M1M0, pt_regs, m1m0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) OFFSET(_PT_PREDSUSR, pt_regs, predsusr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) OFFSET(_PT_EVREC, pt_regs, hvmer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) OFFSET(_PT_ER_VMEL, pt_regs, hvmer.vmel);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) OFFSET(_PT_ER_VMEST, pt_regs, hvmer.vmest);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) OFFSET(_PT_ER_VMPSP, pt_regs, hvmer.vmpsp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) OFFSET(_PT_ER_VMBADVA, pt_regs, hvmer.vmbadva);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) DEFINE(_PT_REGS_SIZE, sizeof(struct pt_regs));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) COMMENT("Hexagon thread_info definitions");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) OFFSET(_THREAD_INFO_FLAGS, thread_info, flags);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) OFFSET(_THREAD_INFO_PT_REGS, thread_info, regs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) OFFSET(_THREAD_INFO_SP, thread_info, sp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) DEFINE(_THREAD_SIZE, THREAD_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) COMMENT("Hexagon hexagon_switch_stack definitions");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) OFFSET(_SWITCH_R1716, hexagon_switch_stack, r1716);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) OFFSET(_SWITCH_R1918, hexagon_switch_stack, r1918);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) OFFSET(_SWITCH_R2120, hexagon_switch_stack, r2120);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) OFFSET(_SWITCH_R2322, hexagon_switch_stack, r2322);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) OFFSET(_SWITCH_R2524, hexagon_switch_stack, r2524);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) OFFSET(_SWITCH_R2726, hexagon_switch_stack, r2726);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) OFFSET(_SWITCH_FP, hexagon_switch_stack, fp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) OFFSET(_SWITCH_LR, hexagon_switch_stack, lr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) DEFINE(_SWITCH_STACK_SIZE, sizeof(struct hexagon_switch_stack));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) BLANK();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) COMMENT("Hexagon task_struct definitions");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) OFFSET(_TASK_THREAD_INFO, task_struct, stack);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) OFFSET(_TASK_STRUCT_THREAD, task_struct, thread);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) COMMENT("Hexagon thread_struct definitions");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) OFFSET(_THREAD_STRUCT_SWITCH_SP, thread_struct, switch_sp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) }