rename thread_info to stack
[safe/jmp/linux-2.6] / arch / mips / kernel / asm-offsets.c
index af69cdb..3b27309 100644 (file)
@@ -8,7 +8,6 @@
  * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
  * Copyright (C) 2000 MIPS Technologies, Inc.
  */
-#include <linux/config.h>
 #include <linux/compat.h>
 #include <linux/types.h>
 #include <linux/sched.h>
@@ -23,7 +22,7 @@
 #define offset(string, ptr, member) \
        __asm__("\n@@@" string "%0" : : "i" (_offset(ptr, member)))
 #define constant(string, member) \
-       __asm__("\n@@@" string "%x0" : : "ri" (member))
+       __asm__("\n@@@" string "%X0" : : "ri" (member))
 #define size(string, size) \
        __asm__("\n@@@" string "%0" : : "i" (sizeof(size)))
 #define linefeed text("")
@@ -65,10 +64,16 @@ void output_ptreg_defines(void)
        offset("#define PT_R31    ", struct pt_regs, regs[31]);
        offset("#define PT_LO     ", struct pt_regs, lo);
        offset("#define PT_HI     ", struct pt_regs, hi);
+#ifdef CONFIG_CPU_HAS_SMARTMIPS
+       offset("#define PT_ACX    ", struct pt_regs, acx);
+#endif
        offset("#define PT_EPC    ", struct pt_regs, cp0_epc);
        offset("#define PT_BVADDR ", struct pt_regs, cp0_badvaddr);
        offset("#define PT_STATUS ", struct pt_regs, cp0_status);
        offset("#define PT_CAUSE  ", struct pt_regs, cp0_cause);
+#ifdef CONFIG_MIPS_MT_SMTC
+       offset("#define PT_TCSTATUS  ", struct pt_regs, cp0_tcstatus);
+#endif /* CONFIG_MIPS_MT_SMTC */
        size("#define PT_SIZE   ", struct pt_regs);
        linefeed;
 }
@@ -77,7 +82,7 @@ void output_task_defines(void)
 {
        text("/* MIPS task_struct offsets. */");
        offset("#define TASK_STATE         ", struct task_struct, state);
-       offset("#define TASK_THREAD_INFO   ", struct task_struct, thread_info);
+       offset("#define TASK_THREAD_INFO   ", struct task_struct, stack);
        offset("#define TASK_FLAGS         ", struct task_struct, flags);
        offset("#define TASK_MM            ", struct task_struct, mm);
        offset("#define TASK_PID           ", struct task_struct, pid);
@@ -91,12 +96,12 @@ void output_thread_info_defines(void)
        offset("#define TI_TASK            ", struct thread_info, task);
        offset("#define TI_EXEC_DOMAIN     ", struct thread_info, exec_domain);
        offset("#define TI_FLAGS           ", struct thread_info, flags);
+       offset("#define TI_TP_VALUE        ", struct thread_info, tp_value);
        offset("#define TI_CPU             ", struct thread_info, cpu);
        offset("#define TI_PRE_COUNT       ", struct thread_info, preempt_count);
        offset("#define TI_ADDR_LIMIT      ", struct thread_info, addr_limit);
        offset("#define TI_RESTART_BLOCK   ", struct thread_info, restart_block);
-       offset("#define TI_TP_VALUE        ", struct thread_info, tp_value);
-       constant("#define _THREAD_SIZE_ORDER ", THREAD_SIZE_ORDER);
+       offset("#define TI_REGS            ", struct thread_info, regs);
        constant("#define _THREAD_SIZE       ", THREAD_SIZE);
        constant("#define _THREAD_MASK       ", THREAD_MASK);
        linefeed;
@@ -138,72 +143,72 @@ void output_thread_defines(void)
 void output_thread_fpu_defines(void)
 {
        offset("#define THREAD_FPR0    ",
-              struct task_struct, thread.fpu.hard.fpr[0]);
+              struct task_struct, thread.fpu.fpr[0]);
        offset("#define THREAD_FPR1    ",
-              struct task_struct, thread.fpu.hard.fpr[1]);
+              struct task_struct, thread.fpu.fpr[1]);
        offset("#define THREAD_FPR2    ",
-              struct task_struct, thread.fpu.hard.fpr[2]);
+              struct task_struct, thread.fpu.fpr[2]);
        offset("#define THREAD_FPR3    ",
-              struct task_struct, thread.fpu.hard.fpr[3]);
+              struct task_struct, thread.fpu.fpr[3]);
        offset("#define THREAD_FPR4    ",
-              struct task_struct, thread.fpu.hard.fpr[4]);
+              struct task_struct, thread.fpu.fpr[4]);
        offset("#define THREAD_FPR5    ",
-              struct task_struct, thread.fpu.hard.fpr[5]);
+              struct task_struct, thread.fpu.fpr[5]);
        offset("#define THREAD_FPR6    ",
-              struct task_struct, thread.fpu.hard.fpr[6]);
+              struct task_struct, thread.fpu.fpr[6]);
        offset("#define THREAD_FPR7    ",
-              struct task_struct, thread.fpu.hard.fpr[7]);
+              struct task_struct, thread.fpu.fpr[7]);
        offset("#define THREAD_FPR8    ",
-              struct task_struct, thread.fpu.hard.fpr[8]);
+              struct task_struct, thread.fpu.fpr[8]);
        offset("#define THREAD_FPR9    ",
-              struct task_struct, thread.fpu.hard.fpr[9]);
+              struct task_struct, thread.fpu.fpr[9]);
        offset("#define THREAD_FPR10   ",
-              struct task_struct, thread.fpu.hard.fpr[10]);
+              struct task_struct, thread.fpu.fpr[10]);
        offset("#define THREAD_FPR11   ",
-              struct task_struct, thread.fpu.hard.fpr[11]);
+              struct task_struct, thread.fpu.fpr[11]);
        offset("#define THREAD_FPR12   ",
-              struct task_struct, thread.fpu.hard.fpr[12]);
+              struct task_struct, thread.fpu.fpr[12]);
        offset("#define THREAD_FPR13   ",
-              struct task_struct, thread.fpu.hard.fpr[13]);
+              struct task_struct, thread.fpu.fpr[13]);
        offset("#define THREAD_FPR14   ",
-              struct task_struct, thread.fpu.hard.fpr[14]);
+              struct task_struct, thread.fpu.fpr[14]);
        offset("#define THREAD_FPR15   ",
-              struct task_struct, thread.fpu.hard.fpr[15]);
+              struct task_struct, thread.fpu.fpr[15]);
        offset("#define THREAD_FPR16   ",
-              struct task_struct, thread.fpu.hard.fpr[16]);
+              struct task_struct, thread.fpu.fpr[16]);
        offset("#define THREAD_FPR17   ",
-              struct task_struct, thread.fpu.hard.fpr[17]);
+              struct task_struct, thread.fpu.fpr[17]);
        offset("#define THREAD_FPR18   ",
-              struct task_struct, thread.fpu.hard.fpr[18]);
+              struct task_struct, thread.fpu.fpr[18]);
        offset("#define THREAD_FPR19   ",
-              struct task_struct, thread.fpu.hard.fpr[19]);
+              struct task_struct, thread.fpu.fpr[19]);
        offset("#define THREAD_FPR20   ",
-              struct task_struct, thread.fpu.hard.fpr[20]);
+              struct task_struct, thread.fpu.fpr[20]);
        offset("#define THREAD_FPR21   ",
-              struct task_struct, thread.fpu.hard.fpr[21]);
+              struct task_struct, thread.fpu.fpr[21]);
        offset("#define THREAD_FPR22   ",
-              struct task_struct, thread.fpu.hard.fpr[22]);
+              struct task_struct, thread.fpu.fpr[22]);
        offset("#define THREAD_FPR23   ",
-              struct task_struct, thread.fpu.hard.fpr[23]);
+              struct task_struct, thread.fpu.fpr[23]);
        offset("#define THREAD_FPR24   ",
-              struct task_struct, thread.fpu.hard.fpr[24]);
+              struct task_struct, thread.fpu.fpr[24]);
        offset("#define THREAD_FPR25   ",
-              struct task_struct, thread.fpu.hard.fpr[25]);
+              struct task_struct, thread.fpu.fpr[25]);
        offset("#define THREAD_FPR26   ",
-              struct task_struct, thread.fpu.hard.fpr[26]);
+              struct task_struct, thread.fpu.fpr[26]);
        offset("#define THREAD_FPR27   ",
-              struct task_struct, thread.fpu.hard.fpr[27]);
+              struct task_struct, thread.fpu.fpr[27]);
        offset("#define THREAD_FPR28   ",
-              struct task_struct, thread.fpu.hard.fpr[28]);
+              struct task_struct, thread.fpu.fpr[28]);
        offset("#define THREAD_FPR29   ",
-              struct task_struct, thread.fpu.hard.fpr[29]);
+              struct task_struct, thread.fpu.fpr[29]);
        offset("#define THREAD_FPR30   ",
-              struct task_struct, thread.fpu.hard.fpr[30]);
+              struct task_struct, thread.fpu.fpr[30]);
        offset("#define THREAD_FPR31   ",
-              struct task_struct, thread.fpu.hard.fpr[31]);
+              struct task_struct, thread.fpu.fpr[31]);
 
        offset("#define THREAD_FCR31   ",
-              struct task_struct, thread.fpu.hard.fcr31);
+              struct task_struct, thread.fpu.fcr31);
        linefeed;
 }
 
@@ -231,31 +236,47 @@ void output_mm_defines(void)
        constant("#define _PMD_SHIFT     ", PMD_SHIFT);
        constant("#define _PGDIR_SHIFT   ", PGDIR_SHIFT);
        linefeed;
-       constant("#define _PGD_ORDER     ", PGD_ORDER);
-       constant("#define _PMD_ORDER     ", PMD_ORDER);
-       constant("#define _PTE_ORDER     ", PTE_ORDER);
-       linefeed;
        constant("#define _PTRS_PER_PGD  ", PTRS_PER_PGD);
        constant("#define _PTRS_PER_PMD  ", PTRS_PER_PMD);
        constant("#define _PTRS_PER_PTE  ", PTRS_PER_PTE);
        linefeed;
 }
 
+#ifdef CONFIG_32BIT
 void output_sc_defines(void)
 {
        text("/* Linux sigcontext offsets. */");
        offset("#define SC_REGS       ", struct sigcontext, sc_regs);
        offset("#define SC_FPREGS     ", struct sigcontext, sc_fpregs);
+       offset("#define SC_ACX        ", struct sigcontext, sc_acx);
        offset("#define SC_MDHI       ", struct sigcontext, sc_mdhi);
        offset("#define SC_MDLO       ", struct sigcontext, sc_mdlo);
        offset("#define SC_PC         ", struct sigcontext, sc_pc);
-       offset("#define SC_STATUS     ", struct sigcontext, sc_status);
        offset("#define SC_FPC_CSR    ", struct sigcontext, sc_fpc_csr);
        offset("#define SC_FPC_EIR    ", struct sigcontext, sc_fpc_eir);
-       offset("#define SC_CAUSE      ", struct sigcontext, sc_cause);
-       offset("#define SC_BADVADDR   ", struct sigcontext, sc_badvaddr);
+       offset("#define SC_HI1        ", struct sigcontext, sc_hi1);
+       offset("#define SC_LO1        ", struct sigcontext, sc_lo1);
+       offset("#define SC_HI2        ", struct sigcontext, sc_hi2);
+       offset("#define SC_LO2        ", struct sigcontext, sc_lo2);
+       offset("#define SC_HI3        ", struct sigcontext, sc_hi3);
+       offset("#define SC_LO3        ", struct sigcontext, sc_lo3);
+       linefeed;
+}
+#endif
+
+#ifdef CONFIG_64BIT
+void output_sc_defines(void)
+{
+       text("/* Linux sigcontext offsets. */");
+       offset("#define SC_REGS       ", struct sigcontext, sc_regs);
+       offset("#define SC_FPREGS     ", struct sigcontext, sc_fpregs);
+       offset("#define SC_MDHI       ", struct sigcontext, sc_mdhi);
+       offset("#define SC_MDLO       ", struct sigcontext, sc_mdlo);
+       offset("#define SC_PC         ", struct sigcontext, sc_pc);
+       offset("#define SC_FPC_CSR    ", struct sigcontext, sc_fpc_csr);
        linefeed;
 }
+#endif
 
 #ifdef CONFIG_MIPS32_COMPAT
 void output_sc32_defines(void)