Does anyone know why the PT_* definitions in include/asm-m68k/ptrace.h:
| #define PT_D1 0
| #define PT_D2 1
| #define PT_D3 2
| #define PT_D4 3
| #define PT_D5 4
| #define PT_D6 5
| #define PT_D7 6
| #define PT_A0 7
| #define PT_A1 8
| #define PT_A2 9
| #define PT_A3 10
| #define PT_A4 11
| #define PT_A5 12
| #define PT_A6 13
| #define PT_D0 14
| #define PT_USP 15
| #define PT_ORIG_D0 16
| #define PT_SR 17
| #define PT_PC 18
don't match with the PT_* definitions in include/asm-m68k/asm-offsets.h:
| #define PT_D0 32 /* offsetof(struct pt_regs, d0) */
| #define PT_ORIG_D0 36 /* offsetof(struct pt_regs, orig_d0) */
| #define PT_D1 0 /* offsetof(struct pt_regs, d1) */
| #define PT_D2 4 /* offsetof(struct pt_regs, d2) */
| #define PT_D3 8 /* offsetof(struct pt_regs, d3) */
| #define PT_D4 12 /* offsetof(struct pt_regs, d4) */
| #define PT_D5 16 /* offsetof(struct pt_regs, d5) */
| #define PT_A0 20 /* offsetof(struct pt_regs, a0) */
| #define PT_A1 24 /* offsetof(struct pt_regs, a1) */
| #define PT_A2 28 /* offsetof(struct pt_regs, a2) */
| #define PT_PC 46 /* offsetof(struct pt_regs, pc) */
| #define PT_SR 44 /* offsetof(struct pt_regs, sr) */
| #define PT_VECTOR 50 /* offsetof(struct pt_regs, pc) + 4 */
as generated from struct pt_regs in include/asm-m68k/ptrace.h:
| struct pt_regs {
| long d1;
| long d2;
| long d3;
| long d4;
| long d5;
| long a0;
| long a1;
| long a2;
| long d0;
| long orig_d0;
| long stkadj;
| unsigned short sr;
| unsigned long pc;
| unsigned format : 4; /* frame format specifier */
| unsigned vector : 12; /* vector offset */
| };
I was trying to define task_thread_info() using TASK_INFO instead of using
struct task_struct directly (cfr. ia64), but these conflicts seem to prevent me
from doing this.
Hmm, upon closer look, there are more conflicts between
<asm/asm-offsets.h> and other header files, and
arch/m68k/kernel/ptrace.c does need some of the PT_* definitions from
<asm/ptrace.h>, so I can't just kill them. I guess I'll have to rename the
conflicting ones in asm-offsets.
First patch (still fails to build the whole tree) below.
All comments are welcome...
diff --git a/arch/m68k/kernel/asm-offsets.c b/arch/m68k/kernel/asm-offsets.c
index 246a882..83fc9f3 100644
--- a/arch/m68k/kernel/asm-offsets.c
+++ b/arch/m68k/kernel/asm-offsets.c
@@ -8,6 +8,8 @@
* #defines from the assembly-language output.
*/
+#define ASM_OFFSETS_C 1
+
#include <linux/stddef.h>
#include <linux/sched.h>
#include <linux/kernel_stat.h>
diff --git a/include/asm-m68k/ptrace.h b/include/asm-m68k/ptrace.h
index 57e763d..bf8a313 100644
--- a/include/asm-m68k/ptrace.h
+++ b/include/asm-m68k/ptrace.h
@@ -1,26 +1,6 @@
#ifndef _M68K_PTRACE_H
#define _M68K_PTRACE_H
-#define PT_D1 0
-#define PT_D2 1
-#define PT_D3 2
-#define PT_D4 3
-#define PT_D5 4
-#define PT_D6 5
-#define PT_D7 6
-#define PT_A0 7
-#define PT_A1 8
-#define PT_A2 9
-#define PT_A3 10
-#define PT_A4 11
-#define PT_A5 12
-#define PT_A6 13
-#define PT_D0 14
-#define PT_USP 15
-#define PT_ORIG_D0 16
-#define PT_SR 17
-#define PT_PC 18
-
#ifndef __ASSEMBLY__
/* this struct defines the way the registers are stored on the
diff --git a/include/asm-m68k/thread_info.h b/include/asm-m68k/thread_info.h
index c4d622a..682e317 100644
--- a/include/asm-m68k/thread_info.h
+++ b/include/asm-m68k/thread_info.h
@@ -3,6 +3,9 @@
#include <asm/types.h>
#include <asm/page.h>
+#ifndef ASM_OFFSETS_C
+#include <asm/asm-offsets.h>
+#endif
struct thread_info {
struct task_struct *task; /* main task structure */
@@ -36,7 +39,12 @@ struct thread_info {
#define init_thread_info (init_task.thread.info)
#define init_stack (init_thread_union.stack)
-#define task_thread_info(tsk) (&(tsk)->thread.info)
+#ifndef ASM_OFFSETS_C
+#define task_thread_info(tsk) ((struct thread_info *)((char
*)(tsk)+TASK_INFO))
+#else
+#define task_thread_info(tsk) ((struct thread_info *)NULL)
+#endif
+
#define task_stack_page(tsk) ((void *)(tsk)->thread_info)
#define current_thread_info() task_thread_info(current)
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html