diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2005-05-31 07:49:19 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 14:31:17 -0400 |
commit | e50c0a8fa60da9ac0e0a70caa8a3a803815c1f2f (patch) | |
tree | 1928e8b0a4b7fb615e5a9f65dc934ba2e74cb9cd /include/asm-mips/processor.h | |
parent | 10f650db1bcc193ea07d4f8c2f07315da38ea0c4 (diff) |
Support the MIPS32 / MIPS64 DSP ASE.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'include/asm-mips/processor.h')
-rw-r--r-- | include/asm-mips/processor.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/asm-mips/processor.h b/include/asm-mips/processor.h index d6466aa09fb7..f1980c6c3bcc 100644 --- a/include/asm-mips/processor.h +++ b/include/asm-mips/processor.h | |||
@@ -96,12 +96,26 @@ union mips_fpu_union { | |||
96 | {{0,},} \ | 96 | {{0,},} \ |
97 | } | 97 | } |
98 | 98 | ||
99 | #define NUM_DSP_REGS 6 | ||
100 | |||
101 | typedef __u32 dspreg_t; | ||
102 | |||
103 | struct mips_dsp_state { | ||
104 | dspreg_t dspr[NUM_DSP_REGS]; | ||
105 | unsigned int dspcontrol; | ||
106 | unsigned short used_dsp; | ||
107 | }; | ||
108 | |||
109 | #define INIT_DSP {{0,},} | ||
110 | |||
99 | typedef struct { | 111 | typedef struct { |
100 | unsigned long seg; | 112 | unsigned long seg; |
101 | } mm_segment_t; | 113 | } mm_segment_t; |
102 | 114 | ||
103 | #define ARCH_MIN_TASKALIGN 8 | 115 | #define ARCH_MIN_TASKALIGN 8 |
104 | 116 | ||
117 | struct mips_abi; | ||
118 | |||
105 | /* | 119 | /* |
106 | * If you change thread_struct remember to change the #defines below too! | 120 | * If you change thread_struct remember to change the #defines below too! |
107 | */ | 121 | */ |
@@ -117,6 +131,9 @@ struct thread_struct { | |||
117 | /* Saved fpu/fpu emulator stuff. */ | 131 | /* Saved fpu/fpu emulator stuff. */ |
118 | union mips_fpu_union fpu; | 132 | union mips_fpu_union fpu; |
119 | 133 | ||
134 | /* Saved state of the DSP ASE, if available. */ | ||
135 | struct mips_dsp_state dsp; | ||
136 | |||
120 | /* Other stuff associated with the thread. */ | 137 | /* Other stuff associated with the thread. */ |
121 | unsigned long cp0_badvaddr; /* Last user fault */ | 138 | unsigned long cp0_badvaddr; /* Last user fault */ |
122 | unsigned long cp0_baduaddr; /* Last kernel fault accessing USEG */ | 139 | unsigned long cp0_baduaddr; /* Last kernel fault accessing USEG */ |
@@ -129,6 +146,7 @@ struct thread_struct { | |||
129 | unsigned long mflags; | 146 | unsigned long mflags; |
130 | unsigned long irix_trampoline; /* Wheee... */ | 147 | unsigned long irix_trampoline; /* Wheee... */ |
131 | unsigned long irix_oldctx; | 148 | unsigned long irix_oldctx; |
149 | struct mips_abi *abi; | ||
132 | }; | 150 | }; |
133 | 151 | ||
134 | #define MF_ABI_MASK (MF_32BIT_REGS | MF_32BIT_ADDR) | 152 | #define MF_ABI_MASK (MF_32BIT_REGS | MF_32BIT_ADDR) |
@@ -151,6 +169,10 @@ struct thread_struct { | |||
151 | */ \ | 169 | */ \ |
152 | INIT_FPU, \ | 170 | INIT_FPU, \ |
153 | /* \ | 171 | /* \ |
172 | * saved dsp/dsp emulator stuff \ | ||
173 | */ \ | ||
174 | INIT_DSP, \ | ||
175 | /* \ | ||
154 | * Other stuff associated with the process \ | 176 | * Other stuff associated with the process \ |
155 | */ \ | 177 | */ \ |
156 | 0, 0, 0, 0, \ | 178 | 0, 0, 0, 0, \ |