[MIPS] asm headers' updates

Make some asm headers adjusted to the latest Linux kernel.

Signed-off-by: Shinya Kuribayashi <skuribay@ruby.dti.ne.jp>
This commit is contained in:
Shinya Kuribayashi 2008-03-25 11:43:17 +09:00
parent e1390801a3
commit 282223a607
9 changed files with 418 additions and 345 deletions

View file

@ -1,18 +1,62 @@
/* $Id: byteorder.h,v 1.8 1998/11/02 09:29:32 ralf Exp $ /*
*
* This file is subject to the terms and conditions of the GNU General Public * 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 * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) by Ralf Baechle * Copyright (C) 1996, 99, 2003 by Ralf Baechle
*/ */
#ifndef _MIPS_BYTEORDER_H #ifndef _ASM_BYTEORDER_H
#define _MIPS_BYTEORDER_H #define _ASM_BYTEORDER_H
#include <asm/types.h> #include <asm/types.h>
#ifdef __GNUC__ #ifdef __GNUC__
#ifdef CONFIG_CPU_MIPSR2
static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 x)
{
__asm__(
" wsbh %0, %1 \n"
: "=r" (x)
: "r" (x));
return x;
}
#define __arch__swab16(x) ___arch__swab16(x)
static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
{
__asm__(
" wsbh %0, %1 \n"
" rotr %0, %0, 16 \n"
: "=r" (x)
: "r" (x));
return x;
}
#define __arch__swab32(x) ___arch__swab32(x)
#ifdef CONFIG_CPU_MIPS64_R2
static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 x)
{
__asm__(
" dsbh %0, %1 \n"
" dshd %0, %0 \n"
" drotr %0, %0, 32 \n"
: "=r" (x)
: "r" (x));
return x;
}
#define __arch__swab64(x) ___arch__swab64(x)
#endif /* CONFIG_CPU_MIPS64_R2 */
#endif /* CONFIG_CPU_MIPSR2 */
#if !defined(__STRICT_ANSI__) || defined(__KERNEL__) #if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
# define __BYTEORDER_HAS_U64__ # define __BYTEORDER_HAS_U64__
# define __SWAB_64_THRU_32__ # define __SWAB_64_THRU_32__
@ -20,12 +64,12 @@
#endif /* __GNUC__ */ #endif /* __GNUC__ */
#if defined (__MIPSEB__) #if defined(__MIPSEB__)
# include <linux/byteorder/big_endian.h> # include <linux/byteorder/big_endian.h>
#elif defined (__MIPSEL__) #elif defined(__MIPSEL__)
# include <linux/byteorder/little_endian.h> # include <linux/byteorder/little_endian.h>
#else #else
# error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???" # error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
#endif #endif
#endif /* _MIPS_BYTEORDER_H */ #endif /* _ASM_BYTEORDER_H */

View file

@ -1,10 +1,12 @@
/* /*
* cachectl.h -- defines for MIPS cache control system calls * 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, 1995, 1996 by Ralf Baechle * Copyright (C) 1994, 1995, 1996 by Ralf Baechle
*/ */
#ifndef __ASM_MIPS_CACHECTL #ifndef _ASM_CACHECTL
#define __ASM_MIPS_CACHECTL #define _ASM_CACHECTL
/* /*
* Options for cacheflush system call * Options for cacheflush system call
@ -21,4 +23,4 @@
#define CACHEABLE 0 /* make pages cacheable */ #define CACHEABLE 0 /* make pages cacheable */
#define UNCACHEABLE 1 /* make pages uncacheable */ #define UNCACHEABLE 1 /* make pages uncacheable */
#endif /* __ASM_MIPS_CACHECTL */ #endif /* _ASM_CACHECTL */

View file

@ -5,43 +5,81 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* (C) Copyright 1996, 1997 by Ralf Baechle * (C) Copyright 1996, 97, 99, 2002, 03 Ralf Baechle
* (C) Copyright 1999 Silicon Graphics, Inc.
*/ */
#ifndef __ASM_MIPS_CACHEOPS_H #ifndef __ASM_CACHEOPS_H
#define __ASM_MIPS_CACHEOPS_H #define __ASM_CACHEOPS_H
/* /*
* Cache Operations * Cache Operations available on all MIPS processors with R4000-style caches
*/ */
#define Index_Invalidate_I 0x00 #define Index_Invalidate_I 0x00
#define Index_Writeback_Inv_D 0x01 #define Index_Writeback_Inv_D 0x01
#define Index_Invalidate_SI 0x02
#define Index_Writeback_Inv_SD 0x03
#define Index_Load_Tag_I 0x04 #define Index_Load_Tag_I 0x04
#define Index_Load_Tag_D 0x05 #define Index_Load_Tag_D 0x05
#define Index_Load_Tag_SI 0x06
#define Index_Load_Tag_SD 0x07
#define Index_Store_Tag_I 0x08 #define Index_Store_Tag_I 0x08
#define Index_Store_Tag_D 0x09 #define Index_Store_Tag_D 0x09
#define Index_Store_Tag_SI 0x0A #if defined(CONFIG_CPU_LOONGSON2)
#define Index_Store_Tag_SD 0x0B #define Hit_Invalidate_I 0x00
#define Create_Dirty_Excl_D 0x0d #else
#define Create_Dirty_Excl_SD 0x0f
#define Hit_Invalidate_I 0x10 #define Hit_Invalidate_I 0x10
#endif
#define Hit_Invalidate_D 0x11 #define Hit_Invalidate_D 0x11
#define Hit_Invalidate_SI 0x12
#define Hit_Invalidate_SD 0x13
#define Fill 0x14
#define Hit_Writeback_Inv_D 0x15 #define Hit_Writeback_Inv_D 0x15
/* 0x16 is unused */
#define Hit_Writeback_Inv_SD 0x17 /*
* R4000-specific cacheops
*/
#define Create_Dirty_Excl_D 0x0d
#define Fill 0x14
#define Hit_Writeback_I 0x18 #define Hit_Writeback_I 0x18
#define Hit_Writeback_D 0x19 #define Hit_Writeback_D 0x19
/* 0x1a is unused */
/*
* R4000SC and R4400SC-specific cacheops
*/
#define Index_Invalidate_SI 0x02
#define Index_Writeback_Inv_SD 0x03
#define Index_Load_Tag_SI 0x06
#define Index_Load_Tag_SD 0x07
#define Index_Store_Tag_SI 0x0A
#define Index_Store_Tag_SD 0x0B
#define Create_Dirty_Excl_SD 0x0f
#define Hit_Invalidate_SI 0x12
#define Hit_Invalidate_SD 0x13
#define Hit_Writeback_Inv_SD 0x17
#define Hit_Writeback_SD 0x1b #define Hit_Writeback_SD 0x1b
/* 0x1c is unused */
/* 0x1e is unused */
#define Hit_Set_Virtual_SI 0x1e #define Hit_Set_Virtual_SI 0x1e
#define Hit_Set_Virtual_SD 0x1f #define Hit_Set_Virtual_SD 0x1f
#endif /* __ASM_MIPS_CACHEOPS_H */ /*
* R5000-specific cacheops
*/
#define R5K_Page_Invalidate_S 0x17
/*
* RM7000-specific cacheops
*/
#define Page_Invalidate_T 0x16
/*
* R10000-specific cacheops
*
* Cacheops 0x02, 0x06, 0x0a, 0x0c-0x0e, 0x16, 0x1a and 0x1e are unused.
* Most of the _S cacheops are identical to the R4000SC _SD cacheops.
*/
#define Index_Writeback_Inv_S 0x03
#define Index_Load_Tag_S 0x07
#define Index_Store_Tag_S 0x0B
#define Hit_Invalidate_S 0x13
#define Cache_Barrier 0x14
#define Hit_Writeback_Inv_S 0x17
#define Index_Load_Data_I 0x18
#define Index_Load_Data_D 0x19
#define Index_Load_Data_S 0x1b
#define Index_Store_Data_I 0x1c
#define Index_Store_Data_D 0x1d
#define Index_Store_Data_S 0x1f
#endif /* __ASM_CACHEOPS_H */

View file

@ -1,16 +1,15 @@
/* /*
* Various ISA level dependant constants. * Various ISA level dependent constants.
* Most of the following constants reflect the different layout * Most of the following constants reflect the different layout
* of Coprocessor 0 registers. * of Coprocessor 0 registers.
* *
* Copyright (c) 1998 Harald Koerfgen * Copyright (c) 1998 Harald Koerfgen
*/ */
#include <linux/config.h>
#ifndef __ASM_ISADEP_H #ifndef __ASM_ISADEP_H
#define __ASM_ISADEP_H #define __ASM_ISADEP_H
#if defined(CONFIG_CPU_R3000) #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX)
/* /*
* R2000 or R3000 * R2000 or R3000
*/ */

View file

@ -4,9 +4,9 @@
* for more details. * for more details.
* *
* Copyright (C) 1994 Waldorf GMBH * Copyright (C) 1994 Waldorf GMBH
* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001 Ralf Baechle * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003 Ralf Baechle
* Copyright (C) 1996 Paul M. Antoine * Copyright (C) 1996 Paul M. Antoine
* Copyright (C) 1999 Silicon Graphics, Inc. * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
*/ */
#ifndef _ASM_PROCESSOR_H #ifndef _ASM_PROCESSOR_H
#define _ASM_PROCESSOR_H #define _ASM_PROCESSOR_H
@ -15,92 +15,26 @@
#include <asm/isadep.h> #include <asm/isadep.h>
/*
* Default implementation of macro that returns current
* instruction pointer ("program counter").
*/
#define current_text_addr() ({ __label__ _l; _l: &&_l;})
#if !defined (_LANGUAGE_ASSEMBLY)
#if 0
#include <linux/threads.h>
#endif
#include <asm/cachectl.h> #include <asm/cachectl.h>
#include <asm/mipsregs.h> #include <asm/mipsregs.h>
#include <asm/reg.h> #include <asm/reg.h>
#include <asm/system.h> #include <asm/system.h>
struct mips_cpuinfo { /*
unsigned long udelay_val; * Return current * instruction pointer ("program counter").
unsigned long *pgd_quick; */
unsigned long *pte_quick; #define current_text_addr() ({ __label__ _l; _l: &&_l;})
unsigned long pgtable_cache_sz;
};
/* /*
* System setup and hardware flags.. * System setup and hardware flags..
* XXX: Should go into mips_cpuinfo.
*/ */
extern void (*cpu_wait)(void); /* only available on R4[26]00 and R3081 */ extern void (*cpu_wait)(void);
extern void r3081_wait(void);
extern void r4k_wait(void);
extern char cyclecounter_available; /* only available from R4000 upwards. */
extern struct mips_cpuinfo boot_cpu_data;
extern unsigned int vced_count, vcei_count; extern unsigned int vced_count, vcei_count;
#ifdef CONFIG_SMP
extern struct mips_cpuinfo cpu_data[];
#define current_cpu_data cpu_data[smp_processor_id()]
#else
#define cpu_data &boot_cpu_data
#define current_cpu_data boot_cpu_data
#endif
/*
* Bus types (default is ISA, but people can check others with these..)
* MCA_bus hardcoded to 0 for now.
*
* This needs to be extended since MIPS systems are being delivered with
* numerous different types of bus systems.
*/
extern int EISA_bus;
#define MCA_bus 0
#define MCA_bus__is_a_macro /* for versions in ksyms.c */
/*
* MIPS has no problems with write protection
*/
#define wp_works_ok 1
#define wp_works_ok__is_a_macro /* for versions in ksyms.c */
/* Lazy FPU handling on uni-processor */
extern struct task_struct *last_task_used_math;
/*
* User space process size: 2GB. This is hardcoded into a few places,
* so don't change it unless you know what you are doing. TASK_SIZE
* for a 64 bit kernel expandable to 8192EB, of which the current MIPS
* implementations will "only" be able to use 1TB ...
*/
#define TASK_SIZE (0x7fff8000UL)
/* This decides where the kernel will search for a free chunk of vm
* space during mmap's.
*/
#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
/*
* Size of io_bitmap in longwords: 32 is ports 0-0x3ff.
*/
#define IO_BITMAP_SIZE 32
#define NUM_FPU_REGS 32 #define NUM_FPU_REGS 32
struct mips_fpu_hard_struct { typedef __u64 fpureg_t;
double fp_regs[NUM_FPU_REGS];
unsigned int control;
};
/* /*
* It would be nice to add some more fields for emulator statistics, but there * It would be nice to add some more fields for emulator statistics, but there
@ -108,25 +42,29 @@ struct mips_fpu_hard_struct {
* be recalculated by hand. So the additional information will be private to * be recalculated by hand. So the additional information will be private to
* the FPU emulator for now. See asm-mips/fpu_emulator.h. * the FPU emulator for now. See asm-mips/fpu_emulator.h.
*/ */
typedef u64 fpureg_t;
struct mips_fpu_soft_struct { struct mips_fpu_struct {
fpureg_t regs[NUM_FPU_REGS]; fpureg_t fpr[NUM_FPU_REGS];
unsigned int sr; unsigned int fcr31;
}; };
union mips_fpu_union { #define NUM_DSP_REGS 6
struct mips_fpu_hard_struct hard;
struct mips_fpu_soft_struct soft;
};
#define INIT_FPU { \ typedef __u32 dspreg_t;
{{0,},} \
} struct mips_dsp_state {
dspreg_t dspr[NUM_DSP_REGS];
unsigned int dspcontrol;
};
typedef struct { typedef struct {
unsigned long seg; unsigned long seg;
} mm_segment_t; } mm_segment_t;
#define ARCH_MIN_TASKALIGN 8
struct mips_abi;
/* /*
* If you change thread_struct remember to change the #defines below too! * If you change thread_struct remember to change the #defines below too!
*/ */
@ -140,131 +78,36 @@ struct thread_struct {
unsigned long cp0_status; unsigned long cp0_status;
/* Saved fpu/fpu emulator stuff. */ /* Saved fpu/fpu emulator stuff. */
union mips_fpu_union fpu; struct mips_fpu_struct fpu;
#ifdef CONFIG_MIPS_MT_FPAFF
/* Emulated instruction count */
unsigned long emulated_fp;
/* Saved per-thread scheduler affinity mask */
cpumask_t user_cpus_allowed;
#endif /* CONFIG_MIPS_MT_FPAFF */
/* Saved state of the DSP ASE, if available. */
struct mips_dsp_state dsp;
/* Other stuff associated with the thread. */ /* Other stuff associated with the thread. */
unsigned long cp0_badvaddr; /* Last user fault */ unsigned long cp0_badvaddr; /* Last user fault */
unsigned long cp0_baduaddr; /* Last kernel fault accessing USEG */ unsigned long cp0_baduaddr; /* Last kernel fault accessing USEG */
unsigned long error_code; unsigned long error_code;
unsigned long trap_no; unsigned long trap_no;
#define MF_FIXADE 1 /* Fix address errors in software */
#define MF_LOGADE 2 /* Log address errors to syslog */
unsigned long mflags;
mm_segment_t current_ds;
unsigned long irix_trampoline; /* Wheee... */ unsigned long irix_trampoline; /* Wheee... */
unsigned long irix_oldctx; unsigned long irix_oldctx;
struct mips_abi *abi;
/*
* These are really only needed if the full FPU emulator is configured.
* Would be made conditional on MIPS_FPU_EMULATOR if it weren't for the
* fact that having offset.h rebuilt differently for different config
* options would be asking for trouble.
*
* Saved EPC during delay-slot emulation (see math-emu/cp1emu.c)
*/
unsigned long dsemul_epc;
/*
* Pointer to instruction used to induce address error
*/
unsigned long dsemul_aerpc;
}; };
#endif /* !defined (_LANGUAGE_ASSEMBLY) */ struct task_struct;
#define INIT_THREAD { \
/* \
* saved main processor registers \
*/ \
0, 0, 0, 0, 0, 0, 0, 0, \
0, 0, 0, \
/* \
* saved cp0 stuff \
*/ \
0, \
/* \
* saved fpu/fpu emulator stuff \
*/ \
INIT_FPU, \
/* \
* Other stuff associated with the process \
*/ \
0, 0, 0, 0, \
/* \
* For now the default is to fix address errors \
*/ \
MF_FIXADE, { 0 }, 0, 0, \
/* \
* dsemul_epc and dsemul_aerpc should never be used uninitialized, \
* but... \
*/ \
0 ,0 \
}
#ifdef __KERNEL__
#define KERNEL_STACK_SIZE 8192
#if !defined (_LANGUAGE_ASSEMBLY)
/* Free all resources held by a thread. */ /* Free all resources held by a thread. */
#define release_thread(thread) do { } while(0) #define release_thread(thread) do { } while(0)
extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); /* Prepare to copy thread state - unlazy all lazy status */
#define prepare_to_copy(tsk) do { } while (0)
/* Copy and release all segment info associated with a VM */ #define cpu_relax() barrier()
#define copy_segments(p, mm) do { } while(0)
#define release_segments(mm) do { } while(0)
/*
* Return saved PC of a blocked thread.
*/
extern inline unsigned long thread_saved_pc(struct thread_struct *t)
{
extern void ret_from_fork(void);
/* New born processes are a special case */
if (t->reg31 == (unsigned long) ret_from_fork)
return t->reg31;
return ((unsigned long *)t->reg29)[10];
}
/*
* Do necessary setup to start up a newly executed thread.
*/
#define start_thread(regs, new_pc, new_sp) do { \
/* New thread looses kernel privileges. */ \
regs->cp0_status = (regs->cp0_status & ~(ST0_CU0|ST0_KSU)) | KU_USER;\
regs->cp0_epc = new_pc; \
regs->regs[29] = new_sp; \
current->thread.current_ds = USER_DS; \
} while (0)
unsigned long get_wchan(struct task_struct *p);
#define __PT_REG(reg) ((long)&((struct pt_regs *)0)->reg - sizeof(struct pt_regs))
#define __KSTK_TOS(tsk) ((unsigned long)(tsk) + KERNEL_STACK_SIZE - 32)
#define KSTK_EIP(tsk) (*(unsigned long *)(__KSTK_TOS(tsk) + __PT_REG(cp0_epc)))
#define KSTK_ESP(tsk) (*(unsigned long *)(__KSTK_TOS(tsk) + __PT_REG(regs[29])))
/* Allocation and freeing of basic task resources. */
/*
* NOTE! The task struct and the stack go together
*/
#define THREAD_SIZE (2*PAGE_SIZE)
#define alloc_task_struct() \
((struct task_struct *) __get_free_pages(GFP_KERNEL,1))
#define free_task_struct(p) free_pages((unsigned long)(p),1)
#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count)
#define init_task (init_task_union.task)
#define init_stack (init_task_union.stack)
#define cpu_relax() do { } while (0)
#endif /* !defined (_LANGUAGE_ASSEMBLY) */
#endif /* __KERNEL__ */
/* /*
* Return_address is a replacement for __builtin_return_address(count) * Return_address is a replacement for __builtin_return_address(count)
@ -280,4 +123,20 @@ unsigned long get_wchan(struct task_struct *p);
*/ */
#define return_address() ({__asm__ __volatile__("":::"$31");__builtin_return_address(0);}) #define return_address() ({__asm__ __volatile__("":::"$31");__builtin_return_address(0);})
#ifdef CONFIG_CPU_HAS_PREFETCH
#define ARCH_HAS_PREFETCH
static inline void prefetch(const void *addr)
{
__asm__ __volatile__(
" .set mips4 \n"
" pref %0, (%1) \n"
" .set mips0 \n"
:
: "i" (Pref_Load), "r" (addr));
}
#endif
#endif /* _ASM_PROCESSOR_H */ #endif /* _ASM_PROCESSOR_H */

View file

@ -3,17 +3,12 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 by Ralf Baechle * Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle
* * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
* Machine dependent structs and defines to help the user use
* the ptrace system call.
*/ */
#ifndef _ASM_PTRACE_H #ifndef _ASM_PTRACE_H
#define _ASM_PTRACE_H #define _ASM_PTRACE_H
#include <asm/isadep.h>
#include <linux/types.h>
/* 0 - 31 are integer registers, 32 - 63 are fp registers. */ /* 0 - 31 are integer registers, 32 - 63 are fp registers. */
#define FPR_BASE 32 #define FPR_BASE 32
#define PC 64 #define PC 64
@ -23,63 +18,69 @@
#define MMLO 68 #define MMLO 68
#define FPC_CSR 69 #define FPC_CSR 69
#define FPC_EIR 70 #define FPC_EIR 70
#define DSP_BASE 71 /* 3 more hi / lo register pairs */
#define DSP_CONTROL 77
#define ACX 78
#ifndef _LANGUAGE_ASSEMBLY
/* /*
* This struct defines the way the registers are stored on the stack during a * This struct defines the way the registers are stored on the stack during a
* system call/exception. As usual the registers k0/k1 aren't being saved. * system call/exception. As usual the registers k0/k1 aren't being saved.
*/ */
struct pt_regs { struct pt_regs {
#ifdef CONFIG_32BIT
/* Pad bytes for argument save space on the stack. */ /* Pad bytes for argument save space on the stack. */
unsigned long pad0[6]; unsigned long pad0[6];
#endif
/* Saved main processor registers. */ /* Saved main processor registers. */
unsigned long regs[32]; unsigned long regs[32];
/* Other saved registers. */ /* Saved special registers. */
unsigned long lo;
unsigned long hi;
/*
* saved cp0 registers
*/
unsigned long cp0_epc;
unsigned long cp0_badvaddr;
unsigned long cp0_status; unsigned long cp0_status;
unsigned long hi;
unsigned long lo;
#ifdef CONFIG_CPU_HAS_SMARTMIPS
unsigned long acx;
#endif
unsigned long cp0_badvaddr;
unsigned long cp0_cause; unsigned long cp0_cause;
}; unsigned long cp0_epc;
#ifdef CONFIG_MIPS_MT_SMTC
#endif /* !(_LANGUAGE_ASSEMBLY) */ unsigned long cp0_tcstatus;
#endif /* CONFIG_MIPS_MT_SMTC */
} __attribute__ ((aligned (8)));
/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
/* #define PTRACE_GETREGS 12 */ #define PTRACE_GETREGS 12
/* #define PTRACE_SETREGS 13 */ #define PTRACE_SETREGS 13
/* #define PTRACE_GETFPREGS 14 */ #define PTRACE_GETFPREGS 14
/* #define PTRACE_SETFPREGS 15 */ #define PTRACE_SETFPREGS 15
/* #define PTRACE_GETFPXREGS 18 */ /* #define PTRACE_GETFPXREGS 18 */
/* #define PTRACE_SETFPXREGS 19 */ /* #define PTRACE_SETFPXREGS 19 */
#define PTRACE_SETOPTIONS 21 #define PTRACE_OLDSETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */ #define PTRACE_GET_THREAD_AREA 25
#define PTRACE_O_TRACESYSGOOD 0x00000001 #define PTRACE_SET_THREAD_AREA 26
#if 0 /* def _LANGUAGE_ASSEMBLY */ /* Calls to trace a 64bit program from a 32bit program. */
#include <asm/offset.h> #define PTRACE_PEEKTEXT_3264 0xc0
#endif #define PTRACE_PEEKDATA_3264 0xc1
#define PTRACE_POKETEXT_3264 0xc2
#define PTRACE_POKEDATA_3264 0xc3
#define PTRACE_GET_THREAD_AREA_3264 0xc4
#ifdef __KERNEL__ #ifdef __KERNEL__
#ifndef _LANGUAGE_ASSEMBLY #include <asm/isadep.h>
/* /*
* Does the process account for user or for system time? * Does the process account for user or for system time?
*/ */
#define user_mode(regs) (((regs)->cp0_status & KU_MASK) == KU_USER) #define user_mode(regs) (((regs)->cp0_status & KU_MASK) == KU_USER)
#define instruction_pointer(regs) ((regs)->cp0_epc) #define instruction_pointer(regs) ((regs)->cp0_epc)
#define profile_pc(regs) instruction_pointer(regs)
extern void show_regs(struct pt_regs *);
#endif /* !(_LANGUAGE_ASSEMBLY) */
#endif #endif

View file

@ -7,48 +7,50 @@
* for more details. * for more details.
* *
* Copyright (C) 1995, 1999 by Ralf Baechle * Copyright (C) 1995, 1999 by Ralf Baechle
* Copyright (C) 1995, 1999 Silicon Graphics
*/ */
#ifndef __ASM_MIPS_REG_H #ifndef __ASM_MIPS_REG_H
#define __ASM_MIPS_REG_H #define __ASM_MIPS_REG_H
/* #if defined(CONFIG_32BIT) || defined(WANT_COMPAT_REG_H)
* This defines/structures correspond to the register layout on stack -
* if the order here is changed, it needs to be updated in #define EF_R0 6
* include/asm-mips/stackframe.h #define EF_R1 7
*/ #define EF_R2 8
#define EF_REG0 6 #define EF_R3 9
#define EF_REG1 7 #define EF_R4 10
#define EF_REG2 8 #define EF_R5 11
#define EF_REG3 9 #define EF_R6 12
#define EF_REG4 10 #define EF_R7 13
#define EF_REG5 11 #define EF_R8 14
#define EF_REG6 12 #define EF_R9 15
#define EF_REG7 13 #define EF_R10 16
#define EF_REG8 14 #define EF_R11 17
#define EF_REG9 15 #define EF_R12 18
#define EF_REG10 16 #define EF_R13 19
#define EF_REG11 17 #define EF_R14 20
#define EF_REG12 18 #define EF_R15 21
#define EF_REG13 19 #define EF_R16 22
#define EF_REG14 20 #define EF_R17 23
#define EF_REG15 21 #define EF_R18 24
#define EF_REG16 22 #define EF_R19 25
#define EF_REG17 23 #define EF_R20 26
#define EF_REG18 24 #define EF_R21 27
#define EF_REG19 25 #define EF_R22 28
#define EF_REG20 26 #define EF_R23 29
#define EF_REG21 27 #define EF_R24 30
#define EF_REG22 28 #define EF_R25 31
#define EF_REG23 29
#define EF_REG24 30
#define EF_REG25 31
/* /*
* k0/k1 unsaved * k0/k1 unsaved
*/ */
#define EF_REG28 34 #define EF_R26 32
#define EF_REG29 35 #define EF_R27 33
#define EF_REG30 36
#define EF_REG31 37 #define EF_R28 34
#define EF_R29 35
#define EF_R30 36
#define EF_R31 37
/* /*
* Saved special registers * Saved special registers
@ -59,8 +61,66 @@
#define EF_CP0_EPC 40 #define EF_CP0_EPC 40
#define EF_CP0_BADVADDR 41 #define EF_CP0_BADVADDR 41
#define EF_CP0_STATUS 42 #define EF_CP0_STATUS 42
#define EF_CP0_CAUSE 44 #define EF_CP0_CAUSE 43
#define EF_UNUSED0 44
#define EF_SIZE 180 /* size in bytes */ #define EF_SIZE 180
#endif
#ifdef CONFIG_64BIT
#define EF_R0 0
#define EF_R1 1
#define EF_R2 2
#define EF_R3 3
#define EF_R4 4
#define EF_R5 5
#define EF_R6 6
#define EF_R7 7
#define EF_R8 8
#define EF_R9 9
#define EF_R10 10
#define EF_R11 11
#define EF_R12 12
#define EF_R13 13
#define EF_R14 14
#define EF_R15 15
#define EF_R16 16
#define EF_R17 17
#define EF_R18 18
#define EF_R19 19
#define EF_R20 20
#define EF_R21 21
#define EF_R22 22
#define EF_R23 23
#define EF_R24 24
#define EF_R25 25
/*
* k0/k1 unsaved
*/
#define EF_R26 26
#define EF_R27 27
#define EF_R28 28
#define EF_R29 29
#define EF_R30 30
#define EF_R31 31
/*
* Saved special registers
*/
#define EF_LO 32
#define EF_HI 33
#define EF_CP0_EPC 34
#define EF_CP0_BADVADDR 35
#define EF_CP0_STATUS 36
#define EF_CP0_CAUSE 37
#define EF_SIZE 304 /* size in bytes */
#endif /* CONFIG_64BIT */
#endif /* __ASM_MIPS_REG_H */ #endif /* __ASM_MIPS_REG_H */

View file

@ -1,52 +1,100 @@
/* /*
* include/asm-mips/regdefs.h
*
* This file is subject to the terms and conditions of the GNU General Public * 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 * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 1994, 1995 by Ralf Baechle * Copyright (C) 1985 MIPS Computer Systems, Inc.
* Copyright (C) 1994, 95, 99, 2003 by Ralf Baechle
* Copyright (C) 1990 - 1992, 1999 Silicon Graphics, Inc.
*/ */
#ifndef _ASM_REGDEF_H
#define _ASM_REGDEF_H
#ifndef __ASM_MIPS_REGDEF_H #include <asm/sgidefs.h>
#define __ASM_MIPS_REGDEF_H
#if _MIPS_SIM == _MIPS_SIM_ABI32
/* /*
* Symbolic register names for 32 bit ABI * Symbolic register names for 32 bit ABI
*/ */
#define zero $0 /* wired zero */ #define zero $0 /* wired zero */
#define AT $1 /* assembler temp - uppercase because of ".set at" */ #define AT $1 /* assembler temp - uppercase because of ".set at" */
#define v0 $2 /* return value */ #define v0 $2 /* return value */
#define v1 $3 #define v1 $3
#define a0 $4 /* argument registers */ #define a0 $4 /* argument registers */
#define a1 $5 #define a1 $5
#define a2 $6 #define a2 $6
#define a3 $7 #define a3 $7
#define t0 $8 /* caller saved */ #define t0 $8 /* caller saved */
#define t1 $9 #define t1 $9
#define t2 $10 #define t2 $10
#define t3 $11 #define t3 $11
#define t4 $12 #define t4 $12
#define t5 $13 #define t5 $13
#define t6 $14 #define t6 $14
#define t7 $15 #define t7 $15
#define s0 $16 /* callee saved */ #define s0 $16 /* callee saved */
#define s1 $17 #define s1 $17
#define s2 $18 #define s2 $18
#define s3 $19 #define s3 $19
#define s4 $20 #define s4 $20
#define s5 $21 #define s5 $21
#define s6 $22 #define s6 $22
#define s7 $23 #define s7 $23
#define t8 $24 /* caller saved */ #define t8 $24 /* caller saved */
#define t9 $25 #define t9 $25
#define jp $25 /* PIC jump register */ #define jp $25 /* PIC jump register */
#define k0 $26 /* kernel scratch */ #define k0 $26 /* kernel scratch */
#define k1 $27 #define k1 $27
#define gp $28 /* global pointer */ #define gp $28 /* global pointer */
#define sp $29 /* stack pointer */ #define sp $29 /* stack pointer */
#define fp $30 /* frame pointer */ #define fp $30 /* frame pointer */
#define s8 $30 /* same like fp! */ #define s8 $30 /* same like fp! */
#define ra $31 /* return address */ #define ra $31 /* return address */
#endif /* __ASM_MIPS_REGDEF_H */ #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
#if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
#define zero $0 /* wired zero */
#define AT $at /* assembler temp - uppercase because of ".set at" */
#define v0 $2 /* return value - caller saved */
#define v1 $3
#define a0 $4 /* argument registers */
#define a1 $5
#define a2 $6
#define a3 $7
#define a4 $8 /* arg reg 64 bit; caller saved in 32 bit */
#define ta0 $8
#define a5 $9
#define ta1 $9
#define a6 $10
#define ta2 $10
#define a7 $11
#define ta3 $11
#define t0 $12 /* caller saved */
#define t1 $13
#define t2 $14
#define t3 $15
#define s0 $16 /* callee saved */
#define s1 $17
#define s2 $18
#define s3 $19
#define s4 $20
#define s5 $21
#define s6 $22
#define s7 $23
#define t8 $24 /* caller saved */
#define t9 $25 /* callee address for PIC/temp */
#define jp $25 /* PIC jump register */
#define k0 $26 /* kernel temporary */
#define k1 $27
#define gp $28 /* global pointer - caller saved for PIC */
#define sp $29 /* stack pointer */
#define fp $30 /* frame pointer */
#define s8 $30 /* callee saved */
#define ra $31 /* return address */
#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 */
#endif /* _ASM_REGDEF_H */

View file

@ -1,5 +1,4 @@
/* $Id: types.h,v 1.3 1999/08/18 23:37:50 ralf Exp $ /*
*
* This file is subject to the terms and conditions of the GNU General Public * 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 * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
@ -10,6 +9,8 @@
#ifndef _ASM_TYPES_H #ifndef _ASM_TYPES_H
#define _ASM_TYPES_H #define _ASM_TYPES_H
#ifndef __ASSEMBLY__
typedef unsigned short umode_t; typedef unsigned short umode_t;
/* /*
@ -40,11 +41,17 @@ __extension__ typedef unsigned long long __u64;
#endif #endif
#endif /* __ASSEMBLY__ */
/* /*
* These aren't exported outside the kernel to avoid name space clashes * These aren't exported outside the kernel to avoid name space clashes
*/ */
#ifdef __KERNEL__ #ifdef __KERNEL__
#define BITS_PER_LONG _MIPS_SZLONG
#ifndef __ASSEMBLY__
typedef __signed char s8; typedef __signed char s8;
typedef unsigned char u8; typedef unsigned char u8;
@ -68,9 +75,24 @@ typedef unsigned long long u64;
#endif #endif
#define BITS_PER_LONG _MIPS_SZLONG #if (defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR)) \
|| defined(CONFIG_64BIT)
typedef u64 dma_addr_t;
#else
typedef u32 dma_addr_t;
#endif
typedef u64 dma64_addr_t;
typedef unsigned long dma_addr_t; /*
* Don't use phys_t. You've been warned.
*/
#ifdef CONFIG_64BIT_PHYS_ADDR
typedef unsigned long long phys_t;
#else
typedef unsigned long phys_t;
#endif
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */