diff options
Diffstat (limited to 'arch/sh/include/asm/processor_64.h')
-rw-r--r-- | arch/sh/include/asm/processor_64.h | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/arch/sh/include/asm/processor_64.h b/arch/sh/include/asm/processor_64.h index 5727d31b0ccf..621bc4618c6b 100644 --- a/arch/sh/include/asm/processor_64.h +++ b/arch/sh/include/asm/processor_64.h | |||
@@ -87,26 +87,31 @@ struct sh_fpu_hard_struct { | |||
87 | /* long status; * software status information */ | 87 | /* long status; * software status information */ |
88 | }; | 88 | }; |
89 | 89 | ||
90 | #if 0 | ||
91 | /* Dummy fpu emulator */ | 90 | /* Dummy fpu emulator */ |
92 | struct sh_fpu_soft_struct { | 91 | struct sh_fpu_soft_struct { |
93 | unsigned long long fp_regs[32]; | 92 | unsigned long fp_regs[64]; |
94 | unsigned int fpscr; | 93 | unsigned int fpscr; |
95 | unsigned char lookahead; | 94 | unsigned char lookahead; |
96 | unsigned long entry_pc; | 95 | unsigned long entry_pc; |
97 | }; | 96 | }; |
98 | #endif | ||
99 | 97 | ||
100 | union sh_fpu_union { | 98 | union thread_xstate { |
101 | struct sh_fpu_hard_struct hard; | 99 | struct sh_fpu_hard_struct hardfpu; |
102 | /* 'hard' itself only produces 32 bit alignment, yet we need | 100 | struct sh_fpu_soft_struct softfpu; |
103 | to access it using 64 bit load/store as well. */ | 101 | /* |
102 | * The structure definitions only produce 32 bit alignment, yet we need | ||
103 | * to access them using 64 bit load/store as well. | ||
104 | */ | ||
104 | unsigned long long alignment_dummy; | 105 | unsigned long long alignment_dummy; |
105 | }; | 106 | }; |
106 | 107 | ||
107 | struct thread_struct { | 108 | struct thread_struct { |
108 | unsigned long sp; | 109 | unsigned long sp; |
109 | unsigned long pc; | 110 | unsigned long pc; |
111 | |||
112 | /* Various thread flags, see SH_THREAD_xxx */ | ||
113 | unsigned long flags; | ||
114 | |||
110 | /* This stores the address of the pt_regs built during a context | 115 | /* This stores the address of the pt_regs built during a context |
111 | switch, or of the register save area built for a kernel mode | 116 | switch, or of the register save area built for a kernel mode |
112 | exception. It is used for backtracing the stack of a sleeping task | 117 | exception. It is used for backtracing the stack of a sleeping task |
@@ -122,7 +127,7 @@ struct thread_struct { | |||
122 | /* Hardware debugging registers may come here */ | 127 | /* Hardware debugging registers may come here */ |
123 | 128 | ||
124 | /* floating point info */ | 129 | /* floating point info */ |
125 | union sh_fpu_union fpu; | 130 | union thread_xstate *xstate; |
126 | }; | 131 | }; |
127 | 132 | ||
128 | #define INIT_MMAP \ | 133 | #define INIT_MMAP \ |
@@ -137,7 +142,7 @@ struct thread_struct { | |||
137 | .trap_no = 0, \ | 142 | .trap_no = 0, \ |
138 | .error_code = 0, \ | 143 | .error_code = 0, \ |
139 | .address = 0, \ | 144 | .address = 0, \ |
140 | .fpu = { { { 0, } }, } \ | 145 | .flags = 0, \ |
141 | } | 146 | } |
142 | 147 | ||
143 | /* | 148 | /* |