|
@@ -149,6 +149,7 @@ struct thread_struct {
|
|
unsigned int val; /* Floating point status */
|
|
unsigned int val; /* Floating point status */
|
|
} fpscr;
|
|
} fpscr;
|
|
int fpexc_mode; /* floating-point exception mode */
|
|
int fpexc_mode; /* floating-point exception mode */
|
|
|
|
+ unsigned int align_ctl; /* alignment handling control */
|
|
#ifdef CONFIG_PPC64
|
|
#ifdef CONFIG_PPC64
|
|
unsigned long start_tb; /* Start purr when proc switched in */
|
|
unsigned long start_tb; /* Start purr when proc switched in */
|
|
unsigned long accum_tb; /* Total accumilated purr for process */
|
|
unsigned long accum_tb; /* Total accumilated purr for process */
|
|
@@ -217,6 +218,12 @@ extern int set_fpexc_mode(struct task_struct *tsk, unsigned int val);
|
|
extern int get_endian(struct task_struct *tsk, unsigned long adr);
|
|
extern int get_endian(struct task_struct *tsk, unsigned long adr);
|
|
extern int set_endian(struct task_struct *tsk, unsigned int val);
|
|
extern int set_endian(struct task_struct *tsk, unsigned int val);
|
|
|
|
|
|
|
|
+#define GET_UNALIGN_CTL(tsk, adr) get_unalign_ctl((tsk), (adr))
|
|
|
|
+#define SET_UNALIGN_CTL(tsk, val) set_unalign_ctl((tsk), (val))
|
|
|
|
+
|
|
|
|
+extern int get_unalign_ctl(struct task_struct *tsk, unsigned long adr);
|
|
|
|
+extern int set_unalign_ctl(struct task_struct *tsk, unsigned int val);
|
|
|
|
+
|
|
static inline unsigned int __unpack_fe01(unsigned long msr_bits)
|
|
static inline unsigned int __unpack_fe01(unsigned long msr_bits)
|
|
{
|
|
{
|
|
return ((msr_bits & MSR_FE0) >> 10) | ((msr_bits & MSR_FE1) >> 8);
|
|
return ((msr_bits & MSR_FE0) >> 10) | ((msr_bits & MSR_FE1) >> 8);
|