Kyle Swenson | 8d8f654 | 2021-03-15 11:02:55 -0600 | [diff] [blame^] | 1 | /* |
| 2 | * Copyright (C) 1996 David S. Miller |
| 3 | * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Ralf Baechle |
| 4 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. |
| 5 | * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com |
| 6 | * Copyright (C) 2000 MIPS Technologies, Inc. |
| 7 | * |
| 8 | * Copyright (c) 2010-2012, The Linux Foundation. All rights reserved. |
| 9 | * |
| 10 | * This program is free software; you can redistribute it and/or modify |
| 11 | * it under the terms of the GNU General Public License version 2 and |
| 12 | * only version 2 as published by the Free Software Foundation. |
| 13 | * |
| 14 | * This program is distributed in the hope that it will be useful, |
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 17 | * GNU General Public License for more details. |
| 18 | * |
| 19 | * You should have received a copy of the GNU General Public License |
| 20 | * along with this program; if not, write to the Free Software |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 22 | * 02110-1301, USA. |
| 23 | */ |
| 24 | |
| 25 | #include <linux/compat.h> |
| 26 | #include <linux/types.h> |
| 27 | #include <linux/sched.h> |
| 28 | #include <linux/mm.h> |
| 29 | #include <linux/interrupt.h> |
| 30 | #include <linux/kbuild.h> |
| 31 | #include <asm/ptrace.h> |
| 32 | #include <asm/processor.h> |
| 33 | |
| 34 | /* This file is used to produce asm/linkerscript constants from header |
| 35 | files typically used in c. Specifically, it generates asm-offsets.h */ |
| 36 | |
| 37 | int main(void) |
| 38 | { |
| 39 | COMMENT("This is a comment."); |
| 40 | /* might get these from somewhere else. */ |
| 41 | DEFINE(_PAGE_SIZE, PAGE_SIZE); |
| 42 | DEFINE(_PAGE_SHIFT, PAGE_SHIFT); |
| 43 | BLANK(); |
| 44 | |
| 45 | COMMENT("Hexagon pt_regs definitions"); |
| 46 | OFFSET(_PT_SYSCALL_NR, pt_regs, syscall_nr); |
| 47 | OFFSET(_PT_GPUGP, pt_regs, gpugp); |
| 48 | OFFSET(_PT_CS1CS0, pt_regs, cs1cs0); |
| 49 | OFFSET(_PT_R3130, pt_regs, r3130); |
| 50 | OFFSET(_PT_R2928, pt_regs, r2928); |
| 51 | OFFSET(_PT_R2726, pt_regs, r2726); |
| 52 | OFFSET(_PT_R2524, pt_regs, r2524); |
| 53 | OFFSET(_PT_R2322, pt_regs, r2322); |
| 54 | OFFSET(_PT_R2120, pt_regs, r2120); |
| 55 | OFFSET(_PT_R1918, pt_regs, r1918); |
| 56 | OFFSET(_PT_R1716, pt_regs, r1716); |
| 57 | OFFSET(_PT_R1514, pt_regs, r1514); |
| 58 | OFFSET(_PT_R1312, pt_regs, r1312); |
| 59 | OFFSET(_PT_R1110, pt_regs, r1110); |
| 60 | OFFSET(_PT_R0908, pt_regs, r0908); |
| 61 | OFFSET(_PT_R0706, pt_regs, r0706); |
| 62 | OFFSET(_PT_R0504, pt_regs, r0504); |
| 63 | OFFSET(_PT_R0302, pt_regs, r0302); |
| 64 | OFFSET(_PT_R0100, pt_regs, r0100); |
| 65 | OFFSET(_PT_LC0SA0, pt_regs, lc0sa0); |
| 66 | OFFSET(_PT_LC1SA1, pt_regs, lc1sa1); |
| 67 | OFFSET(_PT_M1M0, pt_regs, m1m0); |
| 68 | OFFSET(_PT_PREDSUSR, pt_regs, predsusr); |
| 69 | OFFSET(_PT_EVREC, pt_regs, hvmer); |
| 70 | OFFSET(_PT_ER_VMEL, pt_regs, hvmer.vmel); |
| 71 | OFFSET(_PT_ER_VMEST, pt_regs, hvmer.vmest); |
| 72 | OFFSET(_PT_ER_VMPSP, pt_regs, hvmer.vmpsp); |
| 73 | OFFSET(_PT_ER_VMBADVA, pt_regs, hvmer.vmbadva); |
| 74 | DEFINE(_PT_REGS_SIZE, sizeof(struct pt_regs)); |
| 75 | BLANK(); |
| 76 | |
| 77 | COMMENT("Hexagon thread_info definitions"); |
| 78 | OFFSET(_THREAD_INFO_FLAGS, thread_info, flags); |
| 79 | OFFSET(_THREAD_INFO_PT_REGS, thread_info, regs); |
| 80 | OFFSET(_THREAD_INFO_SP, thread_info, sp); |
| 81 | DEFINE(_THREAD_SIZE, THREAD_SIZE); |
| 82 | BLANK(); |
| 83 | |
| 84 | COMMENT("Hexagon hexagon_switch_stack definitions"); |
| 85 | OFFSET(_SWITCH_R1716, hexagon_switch_stack, r1716); |
| 86 | OFFSET(_SWITCH_R1918, hexagon_switch_stack, r1918); |
| 87 | OFFSET(_SWITCH_R2120, hexagon_switch_stack, r2120); |
| 88 | OFFSET(_SWITCH_R2322, hexagon_switch_stack, r2322); |
| 89 | |
| 90 | OFFSET(_SWITCH_R2524, hexagon_switch_stack, r2524); |
| 91 | OFFSET(_SWITCH_R2726, hexagon_switch_stack, r2726); |
| 92 | OFFSET(_SWITCH_FP, hexagon_switch_stack, fp); |
| 93 | OFFSET(_SWITCH_LR, hexagon_switch_stack, lr); |
| 94 | DEFINE(_SWITCH_STACK_SIZE, sizeof(struct hexagon_switch_stack)); |
| 95 | BLANK(); |
| 96 | |
| 97 | COMMENT("Hexagon task_struct definitions"); |
| 98 | OFFSET(_TASK_THREAD_INFO, task_struct, stack); |
| 99 | OFFSET(_TASK_STRUCT_THREAD, task_struct, thread); |
| 100 | |
| 101 | COMMENT("Hexagon thread_struct definitions"); |
| 102 | OFFSET(_THREAD_STRUCT_SWITCH_SP, thread_struct, switch_sp); |
| 103 | |
| 104 | return 0; |
| 105 | } |