From: Peter Chubb <peter@chubb.wattle.id.au>
To: linux-ia64@vger.kernel.org
Subject: Re: [Linux-ia64] offsets.h generation
Date: Fri, 23 May 2003 01:09:14 +0000 [thread overview]
Message-ID: <marc-linux-ia64-105590723705992@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590723705941@msgid-missing>
[-- Attachment #1: message body text --]
[-- Type: text/plain, Size: 459 bytes --]
David> Is processor.h the only cause of this recursive dependency? As
David> far as I remember, we don't even need to include offsets.h in
David> processor.h anymore. It used to be necessary for get_wchan(),
David> but that's now an out-of-line function.
Now there's also a dependency in thread_info.h that unfortunately
can't be worked around, and in ptrace.h
Anyway, here's hopefully the final patch, against the IA64-2.5 BK tree as of
this morning.
[-- Attachment #2: p2 --]
[-- Type: text/plain, Size: 28269 bytes --]
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-ia64-2.5/arch/ia64/Makefile linux-ia64-2.5-wip/arch/ia64/Makefile
--- linux-ia64-2.5/arch/ia64/Makefile Fri May 23 09:17:50 2003
+++ linux-ia64-2.5-wip/arch/ia64/Makefile Fri May 23 10:44:54 2003
@@ -66,7 +66,6 @@
drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/
boot := arch/ia64/boot
-tools := arch/ia64/tools
.PHONY: boot compressed check
@@ -80,17 +79,17 @@
archclean:
$(Q)$(MAKE) $(clean)=$(boot)
- $(Q)$(MAKE) $(clean)=$(tools)
CLEAN_FILES += include/asm-ia64/offsets.h vmlinux.gz bootloader
-prepare: include/asm-ia64/offsets.h
+prepare: include/asm-ia64/offsets.h
+
+include/asm-$(ARCH)/offsets.h: arch/$(ARCH)/kernel/asm-offsets.s
+ $(call filechk,gen-asm-offsets)
boot: lib/lib.a vmlinux
$(Q)$(MAKE) $(build)=$(boot) $@
-include/asm-ia64/offsets.h:
- $(Q)$(MAKE) $(build)=$(tools) $@
define archhelp
echo ' compressed - Build compressed kernel image'
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-ia64-2.5/arch/ia64/kernel/Makefile linux-ia64-2.5-wip/arch/ia64/kernel/Makefile
--- linux-ia64-2.5/arch/ia64/kernel/Makefile Fri May 23 09:17:50 2003
+++ linux-ia64-2.5-wip/arch/ia64/kernel/Makefile Fri May 23 09:43:14 2003
@@ -18,3 +18,11 @@
obj-$(CONFIG_IOSAPIC) += iosapic.o
obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_SMP) += smp.o smpboot.o
+
+arch/$(ARCH)/kernel/asm-offsets.s: include/asm-$(ARCH)/.offsets.h.stamp
+
+include/asm-$(ARCH)/.offsets.h.stamp:
+ [ -s include/asm-$(ARCH)/offsets.h ] || echo "#define IA64_TASK_SIZE 0" > include/asm-$(ARCH)/offsets.h
+ touch $@
+
+CLEAN_FILES += include/asm-ia64/.offsets.h.stamp
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-ia64-2.5/arch/ia64/kernel/asm-offsets.c linux-ia64-2.5-wip/arch/ia64/kernel/asm-offsets.c
--- linux-ia64-2.5/arch/ia64/kernel/asm-offsets.c Thu Jan 1 10:00:00 1970
+++ linux-ia64-2.5-wip/arch/ia64/kernel/asm-offsets.c Fri May 23 09:26:15 2003
@@ -0,0 +1,182 @@
+/*
+ * Generate definitions needed by assembly language modules.
+ * This code generates raw asm output which is post-processed
+ * to extract and format the required data.
+ */
+
+#include <linux/config.h>
+
+#include <linux/sched.h>
+
+#include <asm-ia64/processor.h>
+#include <asm-ia64/ptrace.h>
+#include <asm-ia64/siginfo.h>
+#include <asm-ia64/sigcontext.h>
+
+#include "../kernel/sigframe.h"
+
+#define DEFINE(sym, val) \
+ asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+
+#define BLANK() asm volatile("\n->" : : )
+
+void foo(void)
+{
+ DEFINE(IA64_TASK_SIZE, sizeof (struct task_struct));
+ DEFINE(IA64_THREAD_INFO_SIZE, sizeof (struct thread_info));
+ DEFINE(IA64_PT_REGS_SIZE, sizeof (struct pt_regs));
+ DEFINE(IA64_SWITCH_STACK_SIZE, sizeof (struct switch_stack));
+ DEFINE(IA64_SIGINFO_SIZE, sizeof (struct siginfo));
+ DEFINE(IA64_CPU_SIZE, sizeof (struct cpuinfo_ia64));
+ DEFINE(SIGFRAME_SIZE, sizeof (struct sigframe));
+ DEFINE(UNW_FRAME_INFO_SIZE, sizeof (struct unw_frame_info));
+
+ BLANK();
+
+ DEFINE(IA64_TASK_CLEAR_CHILD_TID_OFFSET, offsetof (struct task_struct, clear_child_tid));
+ DEFINE(IA64_TASK_GROUP_LEADER_OFFSET, offsetof (struct task_struct, group_leader));
+ DEFINE(IA64_TASK_PID_OFFSET, offsetof (struct task_struct, pid));
+ DEFINE(IA64_TASK_REAL_PARENT_OFFSET, offsetof (struct task_struct, real_parent));
+ DEFINE(IA64_TASK_TGID_OFFSET, offsetof (struct task_struct, tgid));
+ DEFINE(IA64_TASK_THREAD_KSP_OFFSET, offsetof (struct task_struct, thread.ksp));
+ DEFINE(IA64_TASK_THREAD_ON_USTACK_OFFSET, offsetof (struct task_struct, thread.on_ustack));
+
+ BLANK();
+
+ DEFINE(IA64_PT_REGS_CR_IPSR_OFFSET, offsetof (struct pt_regs, cr_ipsr));
+ DEFINE(IA64_PT_REGS_CR_IIP_OFFSET, offsetof (struct pt_regs, cr_iip));
+ DEFINE(IA64_PT_REGS_CR_IFS_OFFSET, offsetof (struct pt_regs, cr_ifs));
+ DEFINE(IA64_PT_REGS_AR_UNAT_OFFSET, offsetof (struct pt_regs, ar_unat));
+ DEFINE(IA64_PT_REGS_AR_PFS_OFFSET, offsetof (struct pt_regs, ar_pfs));
+ DEFINE(IA64_PT_REGS_AR_RSC_OFFSET, offsetof (struct pt_regs, ar_rsc));
+ DEFINE(IA64_PT_REGS_AR_RNAT_OFFSET, offsetof (struct pt_regs, ar_rnat));
+ DEFINE(IA64_PT_REGS_AR_BSPSTORE_OFFSET, offsetof (struct pt_regs, ar_bspstore));
+ DEFINE(IA64_PT_REGS_PR_OFFSET, offsetof (struct pt_regs, pr));
+ DEFINE(IA64_PT_REGS_B6_OFFSET, offsetof (struct pt_regs, b6));
+ DEFINE(IA64_PT_REGS_LOADRS_OFFSET, offsetof (struct pt_regs, loadrs));
+
+ DEFINE(IA64_PT_REGS_R1_OFFSET, offsetof (struct pt_regs, r1));
+ DEFINE(IA64_PT_REGS_R2_OFFSET, offsetof (struct pt_regs, r2));
+ DEFINE(IA64_PT_REGS_R3_OFFSET, offsetof (struct pt_regs, r3));
+ DEFINE(IA64_PT_REGS_R8_OFFSET, offsetof (struct pt_regs, r8));
+ DEFINE(IA64_PT_REGS_R9_OFFSET, offsetof (struct pt_regs, r9));
+ DEFINE(IA64_PT_REGS_R10_OFFSET, offsetof (struct pt_regs, r10));
+ DEFINE(IA64_PT_REGS_R11_OFFSET, offsetof (struct pt_regs, r11));
+ DEFINE(IA64_PT_REGS_R12_OFFSET, offsetof (struct pt_regs, r12));
+ DEFINE(IA64_PT_REGS_R13_OFFSET, offsetof (struct pt_regs, r13));
+ DEFINE(IA64_PT_REGS_R14_OFFSET, offsetof (struct pt_regs, r14));
+ DEFINE(IA64_PT_REGS_R15_OFFSET, offsetof (struct pt_regs, r15));
+ DEFINE(IA64_PT_REGS_R16_OFFSET, offsetof (struct pt_regs, r16));
+ DEFINE(IA64_PT_REGS_R17_OFFSET, offsetof (struct pt_regs, r17));
+ DEFINE(IA64_PT_REGS_R18_OFFSET, offsetof (struct pt_regs, r18));
+ DEFINE(IA64_PT_REGS_R19_OFFSET, offsetof (struct pt_regs, r19));
+ DEFINE(IA64_PT_REGS_R20_OFFSET, offsetof (struct pt_regs, r20));
+ DEFINE(IA64_PT_REGS_R21_OFFSET, offsetof (struct pt_regs, r21));
+ DEFINE(IA64_PT_REGS_R22_OFFSET, offsetof (struct pt_regs, r22));
+ DEFINE(IA64_PT_REGS_R23_OFFSET, offsetof (struct pt_regs, r23));
+ DEFINE(IA64_PT_REGS_R24_OFFSET, offsetof (struct pt_regs, r24));
+ DEFINE(IA64_PT_REGS_R25_OFFSET, offsetof (struct pt_regs, r25));
+ DEFINE(IA64_PT_REGS_R26_OFFSET, offsetof (struct pt_regs, r26));
+ DEFINE(IA64_PT_REGS_R27_OFFSET, offsetof (struct pt_regs, r27));
+ DEFINE(IA64_PT_REGS_R28_OFFSET, offsetof (struct pt_regs, r28));
+ DEFINE(IA64_PT_REGS_R29_OFFSET, offsetof (struct pt_regs, r29));
+ DEFINE(IA64_PT_REGS_R30_OFFSET, offsetof (struct pt_regs, r30));
+ DEFINE(IA64_PT_REGS_R31_OFFSET, offsetof (struct pt_regs, r31));
+ DEFINE(IA64_PT_REGS_AR_CCV_OFFSET, offsetof (struct pt_regs, ar_ccv));
+ DEFINE(IA64_PT_REGS_AR_FPSR_OFFSET, offsetof (struct pt_regs, ar_fpsr));
+ BLANK();
+ DEFINE(IA64_PT_REGS_B0_OFFSET, offsetof (struct pt_regs, b0));
+ DEFINE(IA64_PT_REGS_B7_OFFSET, offsetof (struct pt_regs, b7));
+ DEFINE(IA64_PT_REGS_F6_OFFSET, offsetof (struct pt_regs, f6));
+ DEFINE(IA64_PT_REGS_F7_OFFSET, offsetof (struct pt_regs, f7));
+ DEFINE(IA64_PT_REGS_F8_OFFSET, offsetof (struct pt_regs, f8));
+ DEFINE(IA64_PT_REGS_F9_OFFSET, offsetof (struct pt_regs, f9));
+
+ BLANK();
+
+ DEFINE(IA64_SWITCH_STACK_CALLER_UNAT_OFFSET, offsetof (struct switch_stack, caller_unat));
+ DEFINE(IA64_SWITCH_STACK_AR_FPSR_OFFSET, offsetof (struct switch_stack, ar_fpsr));
+ DEFINE(IA64_SWITCH_STACK_F2_OFFSET, offsetof (struct switch_stack, f2));
+ DEFINE(IA64_SWITCH_STACK_F3_OFFSET, offsetof (struct switch_stack, f3));
+ DEFINE(IA64_SWITCH_STACK_F4_OFFSET, offsetof (struct switch_stack, f4));
+ DEFINE(IA64_SWITCH_STACK_F5_OFFSET, offsetof (struct switch_stack, f5));
+ DEFINE(IA64_SWITCH_STACK_F10_OFFSET, offsetof (struct switch_stack, f10));
+ DEFINE(IA64_SWITCH_STACK_F11_OFFSET, offsetof (struct switch_stack, f11));
+ DEFINE(IA64_SWITCH_STACK_F12_OFFSET, offsetof (struct switch_stack, f12));
+ DEFINE(IA64_SWITCH_STACK_F13_OFFSET, offsetof (struct switch_stack, f13));
+ DEFINE(IA64_SWITCH_STACK_F14_OFFSET, offsetof (struct switch_stack, f14));
+ DEFINE(IA64_SWITCH_STACK_F15_OFFSET, offsetof (struct switch_stack, f15));
+ DEFINE(IA64_SWITCH_STACK_F16_OFFSET, offsetof (struct switch_stack, f16));
+ DEFINE(IA64_SWITCH_STACK_F17_OFFSET, offsetof (struct switch_stack, f17));
+ DEFINE(IA64_SWITCH_STACK_F18_OFFSET, offsetof (struct switch_stack, f18));
+ DEFINE(IA64_SWITCH_STACK_F19_OFFSET, offsetof (struct switch_stack, f19));
+ DEFINE(IA64_SWITCH_STACK_F20_OFFSET, offsetof (struct switch_stack, f20));
+ DEFINE(IA64_SWITCH_STACK_F21_OFFSET, offsetof (struct switch_stack, f21));
+ DEFINE(IA64_SWITCH_STACK_F22_OFFSET, offsetof (struct switch_stack, f22));
+ DEFINE(IA64_SWITCH_STACK_F23_OFFSET, offsetof (struct switch_stack, f23));
+ DEFINE(IA64_SWITCH_STACK_F24_OFFSET, offsetof (struct switch_stack, f24));
+ DEFINE(IA64_SWITCH_STACK_F25_OFFSET, offsetof (struct switch_stack, f25));
+ DEFINE(IA64_SWITCH_STACK_F26_OFFSET, offsetof (struct switch_stack, f26));
+ DEFINE(IA64_SWITCH_STACK_F27_OFFSET, offsetof (struct switch_stack, f27));
+ DEFINE(IA64_SWITCH_STACK_F28_OFFSET, offsetof (struct switch_stack, f28));
+ DEFINE(IA64_SWITCH_STACK_F29_OFFSET, offsetof (struct switch_stack, f29));
+ DEFINE(IA64_SWITCH_STACK_F30_OFFSET, offsetof (struct switch_stack, f30));
+ DEFINE(IA64_SWITCH_STACK_F31_OFFSET, offsetof (struct switch_stack, f31));
+ DEFINE(IA64_SWITCH_STACK_R4_OFFSET, offsetof (struct switch_stack, r4));
+ DEFINE(IA64_SWITCH_STACK_R5_OFFSET, offsetof (struct switch_stack, r5));
+ DEFINE(IA64_SWITCH_STACK_R6_OFFSET, offsetof (struct switch_stack, r6));
+ DEFINE(IA64_SWITCH_STACK_R7_OFFSET, offsetof (struct switch_stack, r7));
+ DEFINE(IA64_SWITCH_STACK_B0_OFFSET, offsetof (struct switch_stack, b0));
+ DEFINE(IA64_SWITCH_STACK_B1_OFFSET, offsetof (struct switch_stack, b1));
+ DEFINE(IA64_SWITCH_STACK_B2_OFFSET, offsetof (struct switch_stack, b2));
+ DEFINE(IA64_SWITCH_STACK_B3_OFFSET, offsetof (struct switch_stack, b3));
+ DEFINE(IA64_SWITCH_STACK_B4_OFFSET, offsetof (struct switch_stack, b4));
+ DEFINE(IA64_SWITCH_STACK_B5_OFFSET, offsetof (struct switch_stack, b5));
+ DEFINE(IA64_SWITCH_STACK_AR_PFS_OFFSET, offsetof (struct switch_stack, ar_pfs));
+ DEFINE(IA64_SWITCH_STACK_AR_LC_OFFSET, offsetof (struct switch_stack, ar_lc));
+ DEFINE(IA64_SWITCH_STACK_AR_UNAT_OFFSET, offsetof (struct switch_stack, ar_unat));
+ DEFINE(IA64_SWITCH_STACK_AR_RNAT_OFFSET, offsetof (struct switch_stack, ar_rnat));
+ DEFINE(IA64_SWITCH_STACK_AR_BSPSTORE_OFFSET, offsetof (struct switch_stack, ar_bspstore));
+ DEFINE(IA64_SWITCH_STACK_PR_OFFSET, offsetof (struct switch_stack, pr));
+ BLANK();
+ DEFINE(IA64_SIGCONTEXT_IP_OFFSET, offsetof (struct sigcontext, sc_ip));
+ DEFINE(IA64_SIGCONTEXT_AR_BSP_OFFSET, offsetof (struct sigcontext, sc_ar_bsp));
+ DEFINE(IA64_SIGCONTEXT_AR_FPSR_OFFSET, offsetof (struct sigcontext, sc_ar_fpsr));
+ DEFINE(IA64_SIGCONTEXT_AR_RNAT_OFFSET, offsetof (struct sigcontext, sc_ar_rnat));
+ DEFINE(IA64_SIGCONTEXT_AR_UNAT_OFFSET, offsetof (struct sigcontext, sc_ar_unat));
+ DEFINE(IA64_SIGCONTEXT_B0_OFFSET, offsetof (struct sigcontext, sc_br[0]));
+ DEFINE(IA64_SIGCONTEXT_CFM_OFFSET, offsetof (struct sigcontext, sc_cfm));
+ DEFINE(IA64_SIGCONTEXT_FLAGS_OFFSET, offsetof (struct sigcontext, sc_flags));
+ DEFINE(IA64_SIGCONTEXT_FR6_OFFSET, offsetof (struct sigcontext, sc_fr[6]));
+ DEFINE(IA64_SIGCONTEXT_PR_OFFSET, offsetof (struct sigcontext, sc_pr));
+ DEFINE(IA64_SIGCONTEXT_R12_OFFSET, offsetof (struct sigcontext, sc_gr[12]));
+ DEFINE(IA64_SIGCONTEXT_RBS_BASE_OFFSET, offsetof (struct sigcontext, sc_rbs_base));
+ DEFINE(IA64_SIGCONTEXT_LOADRS_OFFSET, offsetof (struct sigcontext, sc_loadrs));
+ BLANK();
+ DEFINE(IA64_SIGFRAME_ARG0_OFFSET, offsetof (struct sigframe, arg0));
+ DEFINE(IA64_SIGFRAME_ARG1_OFFSET, offsetof (struct sigframe, arg1));
+ DEFINE(IA64_SIGFRAME_ARG2_OFFSET, offsetof (struct sigframe, arg2));
+ DEFINE(IA64_SIGFRAME_HANDLER_OFFSET, offsetof (struct sigframe, handler));
+ DEFINE(IA64_SIGFRAME_SIGCONTEXT_OFFSET, offsetof (struct sigframe, sc));
+ /* for assembly files which can't include sched.h: */
+ BLANK();
+ DEFINE(IA64_CLONE_VFORK, CLONE_VFORK);
+ DEFINE(IA64_CLONE_VM, CLONE_VM);
+ BLANK();
+ /* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */
+ DEFINE(IA64_CPUINFO_ITM_DELTA_OFFSET, offsetof (struct cpuinfo_ia64, itm_delta));
+ DEFINE(IA64_CPUINFO_ITM_NEXT_OFFSET, offsetof (struct cpuinfo_ia64, itm_next));
+ DEFINE(IA64_CPUINFO_NSEC_PER_CYC_OFFSET, offsetof (struct cpuinfo_ia64, nsec_per_cyc));
+ DEFINE(IA64_TIMESPEC_TV_NSEC_OFFSET, offsetof (struct timespec, tv_nsec));
+
+ DEFINE(CLONE_IDLETASK_BIT, 12);
+#if CLONE_IDLETASK != (1 << 12)
+# error "CLONE_IDLETASK_BIT incorrect, please fix"
+#endif
+
+ DEFINE(CLONE_SETTLS_BIT, 19);
+#if CLONE_SETTLS != (1<<19)
+# error "CLONE_SETTLS_BIT incorrect, please fix"
+#endif
+
+}
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-ia64-2.5/arch/ia64/tools/Makefile linux-ia64-2.5-wip/arch/ia64/tools/Makefile
--- linux-ia64-2.5/arch/ia64/tools/Makefile Fri May 23 09:17:50 2003
+++ linux-ia64-2.5-wip/arch/ia64/tools/Makefile Thu Jan 1 10:00:00 1970
@@ -1,51 +0,0 @@
-CFLAGS = -g -O2 -Wall $(CPPFLAGS)
-
-TARGET = include/asm-ia64/offsets.h
-
-src = $(obj)
-
-clean-files := print_offsets.s print_offsets offsets.h
-
-$(TARGET): $(obj)/offsets.h
- @if ! cmp -s $(obj)/offsets.h ${TARGET}; then \
- echo -e "*** Updating ${TARGET}..."; \
- cp $(obj)/offsets.h ${TARGET}; \
- else \
- echo "*** ${TARGET} is up to date"; \
- fi
-
-#
-# If we're cross-compiling, we use the cross-compiler to translate
-# print_offsets.c into an assembly file and then awk to translate this
-# file into offsets.h. This avoids having to use a simulator to
-# generate this file. This is based on an idea suggested by Asit
-# Mallick. If we're running natively, we can of course just build
-# print_offsets and run it. --davidm
-#
-
-ifeq ($(CROSS_COMPILE),)
-
-$(obj)/offsets.h: $(obj)/print_offsets
- $(obj)/print_offsets > $(obj)/offsets.h
-
-comma := ,
-
-$(obj)/print_offsets: $(src)/print_offsets.c FORCE
- [ -r $(TARGET) ] || echo "#define IA64_TASK_SIZE 0" > $(TARGET)
- $(CC) $(CFLAGS) -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) \
- $(src)/print_offsets.c -o $@
-
-FORCE:
-
-else
-
-$(obj)/offsets.h: $(obj)/print_offsets.s
- $(AWK) -f $(src)/print_offsets.awk $^ > $@
-
-$(obj)/print_offsets.s: $(src)/print_offsets.c
- [ -r $(TARGET) ] || echo "#define IA64_TASK_SIZE 0" > $(TARGET)
- $(CC) $(CFLAGS) -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -S $^ -o $@
-
-endif
-
-.PHONY: all modules modules_install
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-ia64-2.5/arch/ia64/tools/print_offsets.awk linux-ia64-2.5-wip/arch/ia64/tools/print_offsets.awk
--- linux-ia64-2.5/arch/ia64/tools/print_offsets.awk Fri May 23 09:17:50 2003
+++ linux-ia64-2.5-wip/arch/ia64/tools/print_offsets.awk Thu Jan 1 10:00:00 1970
@@ -1,72 +0,0 @@
-BEGIN {
- print "#ifndef _ASM_IA64_OFFSETS_H"
- print "#define _ASM_IA64_OFFSETS_H"
- print "/*"
- print " * DO NOT MODIFY"
- print " *"
- print " * This file was generated by arch/ia64/tools/print_offsets.awk."
- print " *"
- print " */"
- print ""
- print "#define CLONE_IDLETASK_BIT 12"
- print "#define CLONE_SETTLS_BIT 19"
-}
-
-# look for .tab:
-# stringz "name"
-# data value
-# sequence
-
-/.*[.]size/ {
- inside_table = 0
-}
-
-/\/\/ end/ {
- inside_table = 0
-}
-
-/.*[.]rodata/ {
- inside_table = 0
-}
-
-{
- if (inside_table) {
- if ($1 == "//") getline;
- name=$2
- getline
- getline
- if ($1 == "//") getline;
- value=$2
- len = length(name)
- name = substr(name, 2, len - 2)
- len -= 2
- if (len == 0)
- print ""
- else {
- len += 8
- if (len >= 40) {
- space=" "
- } else {
- space=""
- while (len < 40) {
- len += 8
- space = space"\t"
- }
- }
- printf("#define %s%s%lu\t/* 0x%lx */\n", name, space, value, value)
- }
- }
-}
-
-/tab:/ {
- inside_table = 1
-}
-
-/tab\#:/ {
- inside_table = 1
-}
-
-END {
- print ""
- print "#endif /* _ASM_IA64_OFFSETS_H */"
-}
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet linux-ia64-2.5/arch/ia64/tools/print_offsets.c linux-ia64-2.5-wip/arch/ia64/tools/print_offsets.c
--- linux-ia64-2.5/arch/ia64/tools/print_offsets.c Fri May 23 09:17:50 2003
+++ linux-ia64-2.5-wip/arch/ia64/tools/print_offsets.c Thu Jan 1 10:00:00 1970
@@ -1,220 +0,0 @@
-/*
- * Utility to generate asm-ia64/offsets.h.
- *
- * Copyright (C) 1999-2003 Hewlett-Packard Co
- * David Mosberger-Tang <davidm@hpl.hp.com>
- *
- * Note that this file has dual use: when building the kernel
- * natively, the file is translated into a binary and executed. When
- * building the kernel in a cross-development environment, this file
- * gets translated into an assembly file which, in turn, is processed
- * by awk to generate offsets.h. So if you make any changes to this
- * file, be sure to verify that the awk procedure still works (see
- * print_offsets.awk).
- */
-#include <linux/config.h>
-
-#include <linux/sched.h>
-
-#include <asm-ia64/processor.h>
-#include <asm-ia64/ptrace.h>
-#include <asm-ia64/siginfo.h>
-#include <asm-ia64/sigcontext.h>
-
-#include "../kernel/sigframe.h"
-
-#ifdef offsetof
-# undef offsetof
-#endif
-
-/*
- * We _can't_ include the host's standard header file, as those are in
- * potential conflict with the what the Linux kernel declares for the
- * target system.
- */
-extern int printf (const char *, ...);
-
-#define offsetof(type,field) ((char *) &((type *) 0)->field - (char *) 0)
-
-struct
- {
- const char name[256];
- unsigned long value;
- }
-tab[] =
- {
- { "IA64_TASK_SIZE", sizeof (struct task_struct) },
- { "IA64_THREAD_INFO_SIZE", sizeof (struct thread_info) },
- { "IA64_PT_REGS_SIZE", sizeof (struct pt_regs) },
- { "IA64_SWITCH_STACK_SIZE", sizeof (struct switch_stack) },
- { "IA64_SIGINFO_SIZE", sizeof (struct siginfo) },
- { "IA64_CPU_SIZE", sizeof (struct cpuinfo_ia64) },
- { "SIGFRAME_SIZE", sizeof (struct sigframe) },
- { "UNW_FRAME_INFO_SIZE", sizeof (struct unw_frame_info) },
- { "", 0 }, /* spacer */
- { "IA64_TASK_CLEAR_CHILD_TID_OFFSET",offsetof (struct task_struct, clear_child_tid) },
- { "IA64_TASK_GROUP_LEADER_OFFSET", offsetof (struct task_struct, group_leader) },
- { "IA64_TASK_PID_OFFSET", offsetof (struct task_struct, pid) },
- { "IA64_TASK_REAL_PARENT_OFFSET", offsetof (struct task_struct, real_parent) },
- { "IA64_TASK_TGID_OFFSET", offsetof (struct task_struct, tgid) },
- { "IA64_TASK_THREAD_KSP_OFFSET", offsetof (struct task_struct, thread.ksp) },
- { "IA64_TASK_THREAD_ON_USTACK_OFFSET", offsetof (struct task_struct, thread.on_ustack) },
- { "IA64_PT_REGS_CR_IPSR_OFFSET", offsetof (struct pt_regs, cr_ipsr) },
- { "IA64_PT_REGS_CR_IIP_OFFSET", offsetof (struct pt_regs, cr_iip) },
- { "IA64_PT_REGS_CR_IFS_OFFSET", offsetof (struct pt_regs, cr_ifs) },
- { "IA64_PT_REGS_AR_UNAT_OFFSET", offsetof (struct pt_regs, ar_unat) },
- { "IA64_PT_REGS_AR_PFS_OFFSET", offsetof (struct pt_regs, ar_pfs) },
- { "IA64_PT_REGS_AR_RSC_OFFSET", offsetof (struct pt_regs, ar_rsc) },
- { "IA64_PT_REGS_AR_RNAT_OFFSET", offsetof (struct pt_regs, ar_rnat) },
- { "IA64_PT_REGS_AR_BSPSTORE_OFFSET",offsetof (struct pt_regs, ar_bspstore) },
- { "IA64_PT_REGS_PR_OFFSET", offsetof (struct pt_regs, pr) },
- { "IA64_PT_REGS_B6_OFFSET", offsetof (struct pt_regs, b6) },
- { "IA64_PT_REGS_LOADRS_OFFSET", offsetof (struct pt_regs, loadrs) },
- { "IA64_PT_REGS_R1_OFFSET", offsetof (struct pt_regs, r1) },
- { "IA64_PT_REGS_R2_OFFSET", offsetof (struct pt_regs, r2) },
- { "IA64_PT_REGS_R3_OFFSET", offsetof (struct pt_regs, r3) },
- { "IA64_PT_REGS_R12_OFFSET", offsetof (struct pt_regs, r12) },
- { "IA64_PT_REGS_R13_OFFSET", offsetof (struct pt_regs, r13) },
- { "IA64_PT_REGS_R14_OFFSET", offsetof (struct pt_regs, r14) },
- { "IA64_PT_REGS_R15_OFFSET", offsetof (struct pt_regs, r15) },
- { "IA64_PT_REGS_R8_OFFSET", offsetof (struct pt_regs, r8) },
- { "IA64_PT_REGS_R9_OFFSET", offsetof (struct pt_regs, r9) },
- { "IA64_PT_REGS_R10_OFFSET", offsetof (struct pt_regs, r10) },
- { "IA64_PT_REGS_R11_OFFSET", offsetof (struct pt_regs, r11) },
- { "IA64_PT_REGS_R16_OFFSET", offsetof (struct pt_regs, r16) },
- { "IA64_PT_REGS_R17_OFFSET", offsetof (struct pt_regs, r17) },
- { "IA64_PT_REGS_R18_OFFSET", offsetof (struct pt_regs, r18) },
- { "IA64_PT_REGS_R19_OFFSET", offsetof (struct pt_regs, r19) },
- { "IA64_PT_REGS_R20_OFFSET", offsetof (struct pt_regs, r20) },
- { "IA64_PT_REGS_R21_OFFSET", offsetof (struct pt_regs, r21) },
- { "IA64_PT_REGS_R22_OFFSET", offsetof (struct pt_regs, r22) },
- { "IA64_PT_REGS_R23_OFFSET", offsetof (struct pt_regs, r23) },
- { "IA64_PT_REGS_R24_OFFSET", offsetof (struct pt_regs, r24) },
- { "IA64_PT_REGS_R25_OFFSET", offsetof (struct pt_regs, r25) },
- { "IA64_PT_REGS_R26_OFFSET", offsetof (struct pt_regs, r26) },
- { "IA64_PT_REGS_R27_OFFSET", offsetof (struct pt_regs, r27) },
- { "IA64_PT_REGS_R28_OFFSET", offsetof (struct pt_regs, r28) },
- { "IA64_PT_REGS_R29_OFFSET", offsetof (struct pt_regs, r29) },
- { "IA64_PT_REGS_R30_OFFSET", offsetof (struct pt_regs, r30) },
- { "IA64_PT_REGS_R31_OFFSET", offsetof (struct pt_regs, r31) },
- { "IA64_PT_REGS_AR_CCV_OFFSET", offsetof (struct pt_regs, ar_ccv) },
- { "IA64_PT_REGS_AR_FPSR_OFFSET", offsetof (struct pt_regs, ar_fpsr) },
- { "IA64_PT_REGS_B0_OFFSET", offsetof (struct pt_regs, b0) },
- { "IA64_PT_REGS_B7_OFFSET", offsetof (struct pt_regs, b7) },
- { "IA64_PT_REGS_F6_OFFSET", offsetof (struct pt_regs, f6) },
- { "IA64_PT_REGS_F7_OFFSET", offsetof (struct pt_regs, f7) },
- { "IA64_PT_REGS_F8_OFFSET", offsetof (struct pt_regs, f8) },
- { "IA64_PT_REGS_F9_OFFSET", offsetof (struct pt_regs, f9) },
- { "IA64_SWITCH_STACK_CALLER_UNAT_OFFSET", offsetof (struct switch_stack, caller_unat) },
- { "IA64_SWITCH_STACK_AR_FPSR_OFFSET", offsetof (struct switch_stack, ar_fpsr) },
- { "IA64_SWITCH_STACK_F2_OFFSET", offsetof (struct switch_stack, f2) },
- { "IA64_SWITCH_STACK_F3_OFFSET", offsetof (struct switch_stack, f3) },
- { "IA64_SWITCH_STACK_F4_OFFSET", offsetof (struct switch_stack, f4) },
- { "IA64_SWITCH_STACK_F5_OFFSET", offsetof (struct switch_stack, f5) },
- { "IA64_SWITCH_STACK_F10_OFFSET", offsetof (struct switch_stack, f10) },
- { "IA64_SWITCH_STACK_F11_OFFSET", offsetof (struct switch_stack, f11) },
- { "IA64_SWITCH_STACK_F12_OFFSET", offsetof (struct switch_stack, f12) },
- { "IA64_SWITCH_STACK_F13_OFFSET", offsetof (struct switch_stack, f13) },
- { "IA64_SWITCH_STACK_F14_OFFSET", offsetof (struct switch_stack, f14) },
- { "IA64_SWITCH_STACK_F15_OFFSET", offsetof (struct switch_stack, f15) },
- { "IA64_SWITCH_STACK_F16_OFFSET", offsetof (struct switch_stack, f16) },
- { "IA64_SWITCH_STACK_F17_OFFSET", offsetof (struct switch_stack, f17) },
- { "IA64_SWITCH_STACK_F18_OFFSET", offsetof (struct switch_stack, f18) },
- { "IA64_SWITCH_STACK_F19_OFFSET", offsetof (struct switch_stack, f19) },
- { "IA64_SWITCH_STACK_F20_OFFSET", offsetof (struct switch_stack, f20) },
- { "IA64_SWITCH_STACK_F21_OFFSET", offsetof (struct switch_stack, f21) },
- { "IA64_SWITCH_STACK_F22_OFFSET", offsetof (struct switch_stack, f22) },
- { "IA64_SWITCH_STACK_F23_OFFSET", offsetof (struct switch_stack, f23) },
- { "IA64_SWITCH_STACK_F24_OFFSET", offsetof (struct switch_stack, f24) },
- { "IA64_SWITCH_STACK_F25_OFFSET", offsetof (struct switch_stack, f25) },
- { "IA64_SWITCH_STACK_F26_OFFSET", offsetof (struct switch_stack, f26) },
- { "IA64_SWITCH_STACK_F27_OFFSET", offsetof (struct switch_stack, f27) },
- { "IA64_SWITCH_STACK_F28_OFFSET", offsetof (struct switch_stack, f28) },
- { "IA64_SWITCH_STACK_F29_OFFSET", offsetof (struct switch_stack, f29) },
- { "IA64_SWITCH_STACK_F30_OFFSET", offsetof (struct switch_stack, f30) },
- { "IA64_SWITCH_STACK_F31_OFFSET", offsetof (struct switch_stack, f31) },
- { "IA64_SWITCH_STACK_R4_OFFSET", offsetof (struct switch_stack, r4) },
- { "IA64_SWITCH_STACK_R5_OFFSET", offsetof (struct switch_stack, r5) },
- { "IA64_SWITCH_STACK_R6_OFFSET", offsetof (struct switch_stack, r6) },
- { "IA64_SWITCH_STACK_R7_OFFSET", offsetof (struct switch_stack, r7) },
- { "IA64_SWITCH_STACK_B0_OFFSET", offsetof (struct switch_stack, b0) },
- { "IA64_SWITCH_STACK_B1_OFFSET", offsetof (struct switch_stack, b1) },
- { "IA64_SWITCH_STACK_B2_OFFSET", offsetof (struct switch_stack, b2) },
- { "IA64_SWITCH_STACK_B3_OFFSET", offsetof (struct switch_stack, b3) },
- { "IA64_SWITCH_STACK_B4_OFFSET", offsetof (struct switch_stack, b4) },
- { "IA64_SWITCH_STACK_B5_OFFSET", offsetof (struct switch_stack, b5) },
- { "IA64_SWITCH_STACK_AR_PFS_OFFSET", offsetof (struct switch_stack, ar_pfs) },
- { "IA64_SWITCH_STACK_AR_LC_OFFSET", offsetof (struct switch_stack, ar_lc) },
- { "IA64_SWITCH_STACK_AR_UNAT_OFFSET", offsetof (struct switch_stack, ar_unat) },
- { "IA64_SWITCH_STACK_AR_RNAT_OFFSET", offsetof (struct switch_stack, ar_rnat) },
- { "IA64_SWITCH_STACK_AR_BSPSTORE_OFFSET", offsetof (struct switch_stack, ar_bspstore) },
- { "IA64_SWITCH_STACK_PR_OFFSET", offsetof (struct switch_stack, pr) },
- { "IA64_SIGCONTEXT_IP_OFFSET", offsetof (struct sigcontext, sc_ip) },
- { "IA64_SIGCONTEXT_AR_BSP_OFFSET", offsetof (struct sigcontext, sc_ar_bsp) },
- { "IA64_SIGCONTEXT_AR_FPSR_OFFSET", offsetof (struct sigcontext, sc_ar_fpsr) },
- { "IA64_SIGCONTEXT_AR_RNAT_OFFSET", offsetof (struct sigcontext, sc_ar_rnat) },
- { "IA64_SIGCONTEXT_AR_UNAT_OFFSET", offsetof (struct sigcontext, sc_ar_unat) },
- { "IA64_SIGCONTEXT_B0_OFFSET", offsetof (struct sigcontext, sc_br[0]) },
- { "IA64_SIGCONTEXT_CFM_OFFSET", offsetof (struct sigcontext, sc_cfm) },
- { "IA64_SIGCONTEXT_FLAGS_OFFSET", offsetof (struct sigcontext, sc_flags) },
- { "IA64_SIGCONTEXT_FR6_OFFSET", offsetof (struct sigcontext, sc_fr[6]) },
- { "IA64_SIGCONTEXT_PR_OFFSET", offsetof (struct sigcontext, sc_pr) },
- { "IA64_SIGCONTEXT_R12_OFFSET", offsetof (struct sigcontext, sc_gr[12]) },
- { "IA64_SIGCONTEXT_RBS_BASE_OFFSET",offsetof (struct sigcontext, sc_rbs_base) },
- { "IA64_SIGCONTEXT_LOADRS_OFFSET", offsetof (struct sigcontext, sc_loadrs) },
- { "IA64_SIGFRAME_ARG0_OFFSET", offsetof (struct sigframe, arg0) },
- { "IA64_SIGFRAME_ARG1_OFFSET", offsetof (struct sigframe, arg1) },
- { "IA64_SIGFRAME_ARG2_OFFSET", offsetof (struct sigframe, arg2) },
- { "IA64_SIGFRAME_HANDLER_OFFSET", offsetof (struct sigframe, handler) },
- { "IA64_SIGFRAME_SIGCONTEXT_OFFSET", offsetof (struct sigframe, sc) },
- /* for assembly files which can't include sched.h: */
- { "IA64_CLONE_VFORK", CLONE_VFORK },
- { "IA64_CLONE_VM", CLONE_VM },
- /* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */
- { "IA64_CPUINFO_ITM_DELTA_OFFSET", offsetof (struct cpuinfo_ia64, itm_delta) },
- { "IA64_CPUINFO_ITM_NEXT_OFFSET", offsetof (struct cpuinfo_ia64, itm_next) },
- { "IA64_CPUINFO_NSEC_PER_CYC_OFFSET", offsetof (struct cpuinfo_ia64, nsec_per_cyc) },
- { "IA64_TIMESPEC_TV_NSEC_OFFSET", offsetof (struct timespec, tv_nsec) },
-
-};
-
-static const char *tabs = "\t\t\t\t\t\t\t\t\t\t";
-
-int
-main (int argc, char **argv)
-{
- const char *space;
- int i, num_tabs;
- size_t len;
-
- printf ("#ifndef _ASM_IA64_OFFSETS_H\n");
- printf ("#define _ASM_IA64_OFFSETS_H\n\n");
-
- printf ("/*\n * DO NOT MODIFY\n *\n * This file was generated by "
- "arch/ia64/tools/print_offsets.\n *\n */\n\n");
-
- for (i = 0; i < (int) (sizeof (tab) / sizeof (tab[0])); ++i)
- {
- if (tab[i].name[0] == '\0')
- printf ("\n");
- else
- {
- len = strlen (tab[i].name);
-
- num_tabs = (40 - len) / 8;
- if (num_tabs <= 0)
- space = " ";
- else
- space = strchr(tabs, '\0') - (40 - len) / 8;
-
- printf ("#define %s%s%lu\t/* 0x%lx */\n",
- tab[i].name, space, tab[i].value, tab[i].value);
- }
- }
-
- printf ("\n#define CLONE_IDLETASK_BIT %ld\n", ia64_fls (CLONE_IDLETASK));
- printf ("\n#define CLONE_SETTLS_BIT %ld\n", ia64_fls (CLONE_SETTLS));
-
- printf ("\n#endif /* _ASM_IA64_OFFSETS_H */\n");
- return 0;
-}
next prev parent reply other threads:[~2003-05-23 1:09 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-19 4:30 [Linux-ia64] offsets.h generation Peter Chubb
2003-05-19 17:13 ` Sam Ravnborg
2003-05-20 1:26 ` Peter Chubb
2003-05-20 4:40 ` Sam Ravnborg
2003-05-20 6:31 ` David Mosberger
2003-05-20 9:15 ` Peter Chubb
2003-05-23 1:09 ` Peter Chubb [this message]
2003-05-23 1:50 ` David Mosberger
2003-05-26 23:25 ` Peter Chubb
2003-05-27 0:03 ` Peter Chubb
2003-05-27 0:03 ` Peter Chubb
2003-05-31 0:34 ` David Mosberger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=marc-linux-ia64-105590723705992@msgid-missing \
--to=peter@chubb.wattle.id.au \
--cc=linux-ia64@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.