From: Geert Uytterhoeven M68k offsets.h: Move arch/m68k/kernel/m68k_defs.h to include/asm/offsets.h and use gen-asm-offsets framework (from Andreas Schwab and Ray Knight) --- /dev/null | 114 --------------------------------- 25-akpm/arch/m68k/Makefile | 10 ++ 25-akpm/arch/m68k/fpsp040/skeleton.S | 2 25-akpm/arch/m68k/ifpsp060/iskeleton.S | 2 25-akpm/arch/m68k/kernel/Makefile | 16 ---- 25-akpm/arch/m68k/kernel/asm-offsets.c | 109 +++++++++++++++++++++++++++++++ 25-akpm/arch/m68k/kernel/entry.S | 2 25-akpm/arch/m68k/kernel/head.S | 2 25-akpm/arch/m68k/math-emu/fp_emu.h | 2 9 files changed, 123 insertions(+), 136 deletions(-) diff -puN arch/m68k/fpsp040/skeleton.S~m68k-391 arch/m68k/fpsp040/skeleton.S --- 25/arch/m68k/fpsp040/skeleton.S~m68k-391 Fri Feb 20 15:08:21 2004 +++ 25-akpm/arch/m68k/fpsp040/skeleton.S Fri Feb 20 15:08:21 2004 @@ -40,7 +40,7 @@ #include #include -#include "../kernel/m68k_defs.h" +#include |SKELETON idnt 2,1 | Motorola 040 Floating Point Software Package diff -puN arch/m68k/ifpsp060/iskeleton.S~m68k-391 arch/m68k/ifpsp060/iskeleton.S --- 25/arch/m68k/ifpsp060/iskeleton.S~m68k-391 Fri Feb 20 15:08:21 2004 +++ 25-akpm/arch/m68k/ifpsp060/iskeleton.S Fri Feb 20 15:08:21 2004 @@ -36,7 +36,7 @@ #include #include -#include "../kernel/m68k_defs.h" +#include |################################ diff -puN /dev/null arch/m68k/kernel/asm-offsets.c --- /dev/null Thu Apr 11 07:25:15 2002 +++ 25-akpm/arch/m68k/kernel/asm-offsets.c Fri Feb 20 15:08:21 2004 @@ -0,0 +1,109 @@ +/* + * This program is used to generate definitions needed by + * assembly language modules. + * + * We use the technique used in the OSF Mach kernel code: + * generate asm statements containing #defines, + * compile this file to assembler, and then extract the + * #defines from the assembly-language output. + */ + +#include +#include +#include +#include +#include +#include +#include + +#define DEFINE(sym, val) \ + asm volatile("\n->" #sym " %0 " #val : : "i" (val)) + +int main(void) +{ + /* offsets into the task struct */ + DEFINE(TASK_STATE, offsetof(struct task_struct, state)); + DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags)); + DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace)); + DEFINE(TASK_WORK, offsetof(struct task_struct, thread.work)); + DEFINE(TASK_NEEDRESCHED, offsetof(struct task_struct, thread.work.need_resched)); + DEFINE(TASK_SYSCALL_TRACE, offsetof(struct task_struct, thread.work.syscall_trace)); + DEFINE(TASK_SIGPENDING, offsetof(struct task_struct, thread.work.sigpending)); + DEFINE(TASK_NOTIFY_RESUME, offsetof(struct task_struct, thread.work.notify_resume)); + DEFINE(TASK_THREAD, offsetof(struct task_struct, thread)); + DEFINE(TASK_MM, offsetof(struct task_struct, mm)); + DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm)); + + /* offsets into the thread struct */ + DEFINE(THREAD_KSP, offsetof(struct thread_struct, ksp)); + DEFINE(THREAD_USP, offsetof(struct thread_struct, usp)); + DEFINE(THREAD_SR, offsetof(struct thread_struct, sr)); + DEFINE(THREAD_FS, offsetof(struct thread_struct, fs)); + DEFINE(THREAD_CRP, offsetof(struct thread_struct, crp)); + DEFINE(THREAD_ESP0, offsetof(struct thread_struct, esp0)); + DEFINE(THREAD_FPREG, offsetof(struct thread_struct, fp)); + DEFINE(THREAD_FPCNTL, offsetof(struct thread_struct, fpcntl)); + DEFINE(THREAD_FPSTATE, offsetof(struct thread_struct, fpstate)); + + /* offsets into the pt_regs */ + DEFINE(PT_D0, offsetof(struct pt_regs, d0)); + DEFINE(PT_ORIG_D0, offsetof(struct pt_regs, orig_d0)); + DEFINE(PT_D1, offsetof(struct pt_regs, d1)); + DEFINE(PT_D2, offsetof(struct pt_regs, d2)); + DEFINE(PT_D3, offsetof(struct pt_regs, d3)); + DEFINE(PT_D4, offsetof(struct pt_regs, d4)); + DEFINE(PT_D5, offsetof(struct pt_regs, d5)); + DEFINE(PT_A0, offsetof(struct pt_regs, a0)); + DEFINE(PT_A1, offsetof(struct pt_regs, a1)); + DEFINE(PT_A2, offsetof(struct pt_regs, a2)); + DEFINE(PT_PC, offsetof(struct pt_regs, pc)); + DEFINE(PT_SR, offsetof(struct pt_regs, sr)); + /* bitfields are a bit difficult */ + DEFINE(PT_VECTOR, offsetof(struct pt_regs, pc) + 4); + + /* offsets into the irq_handler struct */ + DEFINE(IRQ_HANDLER, offsetof(struct irq_node, handler)); + DEFINE(IRQ_DEVID, offsetof(struct irq_node, dev_id)); + DEFINE(IRQ_NEXT, offsetof(struct irq_node, next)); + + /* offsets into the kernel_stat struct */ + DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs)); + + /* offsets into the irq_cpustat_t struct */ + DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending)); + + /* offsets into the bi_record struct */ + DEFINE(BIR_TAG, offsetof(struct bi_record, tag)); + DEFINE(BIR_SIZE, offsetof(struct bi_record, size)); + DEFINE(BIR_DATA, offsetof(struct bi_record, data)); + + /* offsets into font_desc (drivers/video/console/font.h) */ + DEFINE(FONT_DESC_IDX, offsetof(struct font_desc, idx)); + DEFINE(FONT_DESC_NAME, offsetof(struct font_desc, name)); + DEFINE(FONT_DESC_WIDTH, offsetof(struct font_desc, width)); + DEFINE(FONT_DESC_HEIGHT, offsetof(struct font_desc, height)); + DEFINE(FONT_DESC_DATA, offsetof(struct font_desc, data)); + DEFINE(FONT_DESC_PREF, offsetof(struct font_desc, pref)); + + /* signal defines */ + DEFINE(SIGSEGV, SIGSEGV); + DEFINE(SEGV_MAPERR, SEGV_MAPERR); + DEFINE(SIGTRAP, SIGTRAP); + DEFINE(TRAP_TRACE, TRAP_TRACE); + + /* offsets into the custom struct */ + DEFINE(CUSTOMBASE, &custom); + DEFINE(C_INTENAR, offsetof(struct CUSTOM, intenar)); + DEFINE(C_INTREQR, offsetof(struct CUSTOM, intreqr)); + DEFINE(C_INTENA, offsetof(struct CUSTOM, intena)); + DEFINE(C_INTREQ, offsetof(struct CUSTOM, intreq)); + DEFINE(C_SERDATR, offsetof(struct CUSTOM, serdatr)); + DEFINE(C_SERDAT, offsetof(struct CUSTOM, serdat)); + DEFINE(C_SERPER, offsetof(struct CUSTOM, serper)); + DEFINE(CIAABASE, &ciaa); + DEFINE(CIABBASE, &ciab); + DEFINE(C_PRA, offsetof(struct CIA, pra)); + DEFINE(ZTWOBASE, zTwoBase); + + return 0; +} diff -puN arch/m68k/kernel/entry.S~m68k-391 arch/m68k/kernel/entry.S --- 25/arch/m68k/kernel/entry.S~m68k-391 Fri Feb 20 15:08:21 2004 +++ 25-akpm/arch/m68k/kernel/entry.S Fri Feb 20 15:08:21 2004 @@ -42,7 +42,7 @@ #include #include -#include "m68k_defs.h" +#include .globl system_call, buserr, trap .globl resume, ret_from_exception diff -puN arch/m68k/kernel/head.S~m68k-391 arch/m68k/kernel/head.S --- 25/arch/m68k/kernel/head.S~m68k-391 Fri Feb 20 15:08:21 2004 +++ 25-akpm/arch/m68k/kernel/head.S Fri Feb 20 15:08:21 2004 @@ -262,7 +262,7 @@ #include #include #include -#include "m68k_defs.h" +#include #ifdef CONFIG_MAC diff -puN -L arch/m68k/kernel/m68k_defs.c arch/m68k/kernel/m68k_defs.c~m68k-391 /dev/null --- 25/arch/m68k/kernel/m68k_defs.c +++ /dev/null Thu Apr 11 07:25:15 2002 @@ -1,109 +0,0 @@ -/* - * This program is used to generate definitions needed by - * assembly language modules. - * - * We use the technique used in the OSF Mach kernel code: - * generate asm statements containing #defines, - * compile this file to assembler, and then extract the - * #defines from the assembly-language output. - */ - -#include -#include -#include -#include -#include -#include -#include - -#define DEFINE(sym, val) \ - asm volatile("\n#define " #sym " %c0" : : "i" (val)) - -int main(void) -{ - /* offsets into the task struct */ - DEFINE(TASK_STATE, offsetof(struct task_struct, state)); - DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags)); - DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace)); - DEFINE(TASK_WORK, offsetof(struct task_struct, thread.work)); - DEFINE(TASK_NEEDRESCHED, offsetof(struct task_struct, thread.work.need_resched)); - DEFINE(TASK_SYSCALL_TRACE, offsetof(struct task_struct, thread.work.syscall_trace)); - DEFINE(TASK_SIGPENDING, offsetof(struct task_struct, thread.work.sigpending)); - DEFINE(TASK_NOTIFY_RESUME, offsetof(struct task_struct, thread.work.notify_resume)); - DEFINE(TASK_THREAD, offsetof(struct task_struct, thread)); - DEFINE(TASK_MM, offsetof(struct task_struct, mm)); - DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm)); - - /* offsets into the thread struct */ - DEFINE(THREAD_KSP, offsetof(struct thread_struct, ksp)); - DEFINE(THREAD_USP, offsetof(struct thread_struct, usp)); - DEFINE(THREAD_SR, offsetof(struct thread_struct, sr)); - DEFINE(THREAD_FS, offsetof(struct thread_struct, fs)); - DEFINE(THREAD_CRP, offsetof(struct thread_struct, crp)); - DEFINE(THREAD_ESP0, offsetof(struct thread_struct, esp0)); - DEFINE(THREAD_FPREG, offsetof(struct thread_struct, fp)); - DEFINE(THREAD_FPCNTL, offsetof(struct thread_struct, fpcntl)); - DEFINE(THREAD_FPSTATE, offsetof(struct thread_struct, fpstate)); - - /* offsets into the pt_regs */ - DEFINE(PT_D0, offsetof(struct pt_regs, d0)); - DEFINE(PT_ORIG_D0, offsetof(struct pt_regs, orig_d0)); - DEFINE(PT_D1, offsetof(struct pt_regs, d1)); - DEFINE(PT_D2, offsetof(struct pt_regs, d2)); - DEFINE(PT_D3, offsetof(struct pt_regs, d3)); - DEFINE(PT_D4, offsetof(struct pt_regs, d4)); - DEFINE(PT_D5, offsetof(struct pt_regs, d5)); - DEFINE(PT_A0, offsetof(struct pt_regs, a0)); - DEFINE(PT_A1, offsetof(struct pt_regs, a1)); - DEFINE(PT_A2, offsetof(struct pt_regs, a2)); - DEFINE(PT_PC, offsetof(struct pt_regs, pc)); - DEFINE(PT_SR, offsetof(struct pt_regs, sr)); - /* bitfields are a bit difficult */ - DEFINE(PT_VECTOR, offsetof(struct pt_regs, pc) + 4); - - /* offsets into the irq_handler struct */ - DEFINE(IRQ_HANDLER, offsetof(struct irq_node, handler)); - DEFINE(IRQ_DEVID, offsetof(struct irq_node, dev_id)); - DEFINE(IRQ_NEXT, offsetof(struct irq_node, next)); - - /* offsets into the kernel_stat struct */ - DEFINE(STAT_IRQ, offsetof(struct kernel_stat, irqs)); - - /* offsets into the irq_cpustat_t struct */ - DEFINE(CPUSTAT_SOFTIRQ_PENDING, offsetof(irq_cpustat_t, __softirq_pending)); - - /* offsets into the bi_record struct */ - DEFINE(BIR_TAG, offsetof(struct bi_record, tag)); - DEFINE(BIR_SIZE, offsetof(struct bi_record, size)); - DEFINE(BIR_DATA, offsetof(struct bi_record, data)); - - /* offsets into font_desc (drivers/video/console/font.h) */ - DEFINE(FONT_DESC_IDX, offsetof(struct font_desc, idx)); - DEFINE(FONT_DESC_NAME, offsetof(struct font_desc, name)); - DEFINE(FONT_DESC_WIDTH, offsetof(struct font_desc, width)); - DEFINE(FONT_DESC_HEIGHT, offsetof(struct font_desc, height)); - DEFINE(FONT_DESC_DATA, offsetof(struct font_desc, data)); - DEFINE(FONT_DESC_PREF, offsetof(struct font_desc, pref)); - - /* signal defines */ - DEFINE(SIGSEGV, SIGSEGV); - DEFINE(SEGV_MAPERR, SEGV_MAPERR); - DEFINE(SIGTRAP, SIGTRAP); - DEFINE(TRAP_TRACE, TRAP_TRACE); - - /* offsets into the custom struct */ - DEFINE(CUSTOMBASE, &custom); - DEFINE(C_INTENAR, offsetof(struct CUSTOM, intenar)); - DEFINE(C_INTREQR, offsetof(struct CUSTOM, intreqr)); - DEFINE(C_INTENA, offsetof(struct CUSTOM, intena)); - DEFINE(C_INTREQ, offsetof(struct CUSTOM, intreq)); - DEFINE(C_SERDATR, offsetof(struct CUSTOM, serdatr)); - DEFINE(C_SERDAT, offsetof(struct CUSTOM, serdat)); - DEFINE(C_SERPER, offsetof(struct CUSTOM, serper)); - DEFINE(CIAABASE, &ciaa); - DEFINE(CIABBASE, &ciab); - DEFINE(C_PRA, offsetof(struct CIA, pra)); - DEFINE(ZTWOBASE, zTwoBase); - - return 0; -} diff -puN -L arch/m68k/kernel/m68k_defs.head arch/m68k/kernel/m68k_defs.head~m68k-391 /dev/null --- 25/arch/m68k/kernel/m68k_defs.head +++ /dev/null Thu Apr 11 07:25:15 2002 @@ -1,5 +0,0 @@ -/* - * WARNING! This file is automatically generated - DO NOT EDIT! - */ - -#define TS_MAGICKEY 0x5a5a5a5a diff -puN arch/m68k/kernel/Makefile~m68k-391 arch/m68k/kernel/Makefile --- 25/arch/m68k/kernel/Makefile~m68k-391 Fri Feb 20 15:08:21 2004 +++ 25-akpm/arch/m68k/kernel/Makefile Fri Feb 20 15:08:21 2004 @@ -16,20 +16,3 @@ obj-$(CONFIG_PCI) += bios32.o obj-$(CONFIG_MODULES) += module.o EXTRA_AFLAGS := -traditional - -$(obj)/head.o: $(obj)/head.S $(obj)/m68k_defs.h - -$(obj)/entry.o: $(obj)/entry.S $(obj)/m68k_defs.h - -$(obj)/sun3-head.o: $(obj)/sun3-head.S $(obj)/m68k_defs.h - -$(obj)/m68k_defs.h: $(src)/m68k_defs.c $(src)/m68k_defs.head - rm -f $(obj)/m68k_defs.d - SUNPRO_DEPENDENCIES="$(obj)/m68k_defs.d $(obj)/m68k_defs.h" \ - $(CC) $(filter-out -MD,$(CFLAGS)) -S $(src)/m68k_defs.c -o \ - $(obj)/m68k_defs.s - cp $(src)/m68k_defs.head $(obj)/m68k_defs.h - grep '^#define' $(obj)/m68k_defs.s >> $(obj)/m68k_defs.h - rm $(obj)/m68k_defs.s --include $(obj)/m68k_defs.d - diff -puN arch/m68k/Makefile~m68k-391 arch/m68k/Makefile --- 25/arch/m68k/Makefile~m68k-391 Fri Feb 20 15:08:21 2004 +++ 25-akpm/arch/m68k/Makefile Fri Feb 20 15:08:21 2004 @@ -111,6 +111,14 @@ else bzip2 -1c vmlinux >vmlinux.bz2 endif +prepare: include/asm-$(ARCH)/offsets.h +CLEAN_FILES += include/asm-$(ARCH)/offsets.h + +arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ + include/config/MARKER + +include/asm-$(ARCH)/offsets.h: arch/$(ARCH)/kernel/asm-offsets.s + $(call filechk,gen-asm-offsets) + archclean: rm -f vmlinux.gz vmlinux.bz2 - rm -f arch/m68k/kernel/m68k_defs.h arch/m68k/kernel/m68k_defs.d diff -puN arch/m68k/math-emu/fp_emu.h~m68k-391 arch/m68k/math-emu/fp_emu.h --- 25/arch/m68k/math-emu/fp_emu.h~m68k-391 Fri Feb 20 15:08:21 2004 +++ 25-akpm/arch/m68k/math-emu/fp_emu.h Fri Feb 20 15:08:21 2004 @@ -39,7 +39,7 @@ #define _FP_EMU_H #ifdef __ASSEMBLY__ -#include "../kernel/m68k_defs.h" +#include #endif #include _