MIPS: add asm-offsets.h generation
Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
fbf502a9c2
commit
ddac4f3ea2
|
@ -143,3 +143,46 @@ dtbs: scripts
|
||||||
KBUILD_DTBS := dtbs
|
KBUILD_DTBS := dtbs
|
||||||
|
|
||||||
KBUILD_IMAGE ?= $(KBUILD_BINARY)
|
KBUILD_IMAGE ?= $(KBUILD_BINARY)
|
||||||
|
|
||||||
|
#####
|
||||||
|
# Generate asm-offsets.h
|
||||||
|
#
|
||||||
|
|
||||||
|
offsets-file := include/generated/asm-offsets.h
|
||||||
|
|
||||||
|
always += $(offsets-file)
|
||||||
|
targets += $(offsets-file)
|
||||||
|
targets += arch/$(SRCARCH)/lib/asm-offsets.s
|
||||||
|
|
||||||
|
# Default sed regexp - multiline due to syntax constraints
|
||||||
|
define sed-y
|
||||||
|
"/^->/{s:->#\(.*\):/* \1 */:; \
|
||||||
|
s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
|
||||||
|
s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
|
||||||
|
s:->::; p;}"
|
||||||
|
endef
|
||||||
|
|
||||||
|
quiet_cmd_offsets = GEN $@
|
||||||
|
define cmd_offsets
|
||||||
|
(set -e; \
|
||||||
|
echo "#ifndef __ASM_OFFSETS_H__"; \
|
||||||
|
echo "#define __ASM_OFFSETS_H__"; \
|
||||||
|
echo "/*"; \
|
||||||
|
echo " * DO NOT MODIFY."; \
|
||||||
|
echo " *"; \
|
||||||
|
echo " * This file was generated by Kbuild"; \
|
||||||
|
echo " *"; \
|
||||||
|
echo " */"; \
|
||||||
|
echo ""; \
|
||||||
|
sed -ne $(sed-y) $<; \
|
||||||
|
echo ""; \
|
||||||
|
echo "#endif" ) > $@
|
||||||
|
endef
|
||||||
|
|
||||||
|
# We use internal kbuild rules to avoid the "is up to date" message from make
|
||||||
|
arch/$(SRCARCH)/lib/asm-offsets.s: arch/$(SRCARCH)/lib/asm-offsets.c FORCE
|
||||||
|
$(Q)mkdir -p $(dir $@)
|
||||||
|
$(call if_changed_dep,cc_s_c)
|
||||||
|
|
||||||
|
$(obj)/$(offsets-file): arch/$(SRCARCH)/lib/asm-offsets.s Makefile
|
||||||
|
$(call cmd,offsets)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#include <generated/asm-offsets.h>
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle
|
||||||
|
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_PTRACE_H
|
||||||
|
#define _ASM_PTRACE_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This struct defines the way the registers are stored on the stack during an
|
||||||
|
* exception. As usual the registers k0/k1 aren't being saved.
|
||||||
|
*/
|
||||||
|
struct pt_regs {
|
||||||
|
#ifdef CONFIG_32BIT
|
||||||
|
/* Pad bytes for argument save space on the stack. */
|
||||||
|
unsigned long pad0[6];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Saved main processor registers. */
|
||||||
|
unsigned long regs[32];
|
||||||
|
|
||||||
|
/* Saved special registers. */
|
||||||
|
unsigned long cp0_status;
|
||||||
|
unsigned long hi;
|
||||||
|
unsigned long lo;
|
||||||
|
unsigned long cp0_badvaddr;
|
||||||
|
unsigned long cp0_cause;
|
||||||
|
unsigned long cp0_epc;
|
||||||
|
} __attribute__ ((aligned (8)));
|
||||||
|
|
||||||
|
#endif /* _ASM_PTRACE_H */
|
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
* offset.c: Calculate pt_regs and task_struct offsets.
|
||||||
|
*
|
||||||
|
* Copyright (C) 1996 David S. Miller
|
||||||
|
* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Ralf Baechle
|
||||||
|
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
|
||||||
|
*
|
||||||
|
* Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
|
||||||
|
* Copyright (C) 2000 MIPS Technologies, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kbuild.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
|
void output_ptreg_defines(void);
|
||||||
|
|
||||||
|
void output_ptreg_defines(void)
|
||||||
|
{
|
||||||
|
COMMENT("MIPS pt_regs offsets.");
|
||||||
|
OFFSET(PT_R0, pt_regs, regs[0]);
|
||||||
|
OFFSET(PT_R1, pt_regs, regs[1]);
|
||||||
|
OFFSET(PT_R2, pt_regs, regs[2]);
|
||||||
|
OFFSET(PT_R3, pt_regs, regs[3]);
|
||||||
|
OFFSET(PT_R4, pt_regs, regs[4]);
|
||||||
|
OFFSET(PT_R5, pt_regs, regs[5]);
|
||||||
|
OFFSET(PT_R6, pt_regs, regs[6]);
|
||||||
|
OFFSET(PT_R7, pt_regs, regs[7]);
|
||||||
|
OFFSET(PT_R8, pt_regs, regs[8]);
|
||||||
|
OFFSET(PT_R9, pt_regs, regs[9]);
|
||||||
|
OFFSET(PT_R10, pt_regs, regs[10]);
|
||||||
|
OFFSET(PT_R11, pt_regs, regs[11]);
|
||||||
|
OFFSET(PT_R12, pt_regs, regs[12]);
|
||||||
|
OFFSET(PT_R13, pt_regs, regs[13]);
|
||||||
|
OFFSET(PT_R14, pt_regs, regs[14]);
|
||||||
|
OFFSET(PT_R15, pt_regs, regs[15]);
|
||||||
|
OFFSET(PT_R16, pt_regs, regs[16]);
|
||||||
|
OFFSET(PT_R17, pt_regs, regs[17]);
|
||||||
|
OFFSET(PT_R18, pt_regs, regs[18]);
|
||||||
|
OFFSET(PT_R19, pt_regs, regs[19]);
|
||||||
|
OFFSET(PT_R20, pt_regs, regs[20]);
|
||||||
|
OFFSET(PT_R21, pt_regs, regs[21]);
|
||||||
|
OFFSET(PT_R22, pt_regs, regs[22]);
|
||||||
|
OFFSET(PT_R23, pt_regs, regs[23]);
|
||||||
|
OFFSET(PT_R24, pt_regs, regs[24]);
|
||||||
|
OFFSET(PT_R25, pt_regs, regs[25]);
|
||||||
|
OFFSET(PT_R26, pt_regs, regs[26]);
|
||||||
|
OFFSET(PT_R27, pt_regs, regs[27]);
|
||||||
|
OFFSET(PT_R28, pt_regs, regs[28]);
|
||||||
|
OFFSET(PT_R29, pt_regs, regs[29]);
|
||||||
|
OFFSET(PT_R30, pt_regs, regs[30]);
|
||||||
|
OFFSET(PT_R31, pt_regs, regs[31]);
|
||||||
|
OFFSET(PT_LO, pt_regs, lo);
|
||||||
|
OFFSET(PT_HI, pt_regs, hi);
|
||||||
|
OFFSET(PT_EPC, pt_regs, cp0_epc);
|
||||||
|
OFFSET(PT_BVADDR, pt_regs, cp0_badvaddr);
|
||||||
|
OFFSET(PT_STATUS, pt_regs, cp0_status);
|
||||||
|
OFFSET(PT_CAUSE, pt_regs, cp0_cause);
|
||||||
|
DEFINE(PT_SIZE, sizeof(struct pt_regs));
|
||||||
|
BLANK();
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef __LINUX_KBUILD_H
|
||||||
|
#define __LINUX_KBUILD_H
|
||||||
|
|
||||||
|
#define DEFINE(sym, val) \
|
||||||
|
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
|
||||||
|
|
||||||
|
#define BLANK() asm volatile("\n->" : : )
|
||||||
|
|
||||||
|
#define OFFSET(sym, str, mem) \
|
||||||
|
DEFINE(sym, offsetof(struct str, mem))
|
||||||
|
|
||||||
|
#define COMMENT(x) \
|
||||||
|
asm volatile("\n->#" x)
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue