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