1/* 2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23#ifndef RLD 24#include <string.h> 25#import <mach-o/m88k/swap.h> 26#import <architecture/nrw/reg_help.h> 27 28void 29swap_m88k_thread_state_grf_t( 30m88k_thread_state_grf_t *cpu, 31enum NXByteOrder target_byte_sex) 32{ 33 cpu->r1 = OSSwapInt32(cpu->r1); 34 cpu->r2 = OSSwapInt32(cpu->r2); 35 cpu->r3 = OSSwapInt32(cpu->r3); 36 cpu->r4 = OSSwapInt32(cpu->r4); 37 cpu->r5 = OSSwapInt32(cpu->r5); 38 cpu->r6 = OSSwapInt32(cpu->r6); 39 cpu->r7 = OSSwapInt32(cpu->r7); 40 cpu->r8 = OSSwapInt32(cpu->r8); 41 cpu->r9 = OSSwapInt32(cpu->r9); 42 cpu->r10 = OSSwapInt32(cpu->r10); 43 cpu->r11 = OSSwapInt32(cpu->r11); 44 cpu->r12 = OSSwapInt32(cpu->r12); 45 cpu->r13 = OSSwapInt32(cpu->r13); 46 cpu->r14 = OSSwapInt32(cpu->r14); 47 cpu->r15 = OSSwapInt32(cpu->r15); 48 cpu->r16 = OSSwapInt32(cpu->r16); 49 cpu->r17 = OSSwapInt32(cpu->r17); 50 cpu->r18 = OSSwapInt32(cpu->r18); 51 cpu->r19 = OSSwapInt32(cpu->r19); 52 cpu->r20 = OSSwapInt32(cpu->r20); 53 cpu->r21 = OSSwapInt32(cpu->r21); 54 cpu->r22 = OSSwapInt32(cpu->r22); 55 cpu->r23 = OSSwapInt32(cpu->r23); 56 cpu->r24 = OSSwapInt32(cpu->r24); 57 cpu->r25 = OSSwapInt32(cpu->r25); 58 cpu->r26 = OSSwapInt32(cpu->r26); 59 cpu->r27 = OSSwapInt32(cpu->r27); 60 cpu->r28 = OSSwapInt32(cpu->r28); 61 cpu->r29 = OSSwapInt32(cpu->r29); 62 cpu->r30 = OSSwapInt32(cpu->r30); 63 cpu->r31 = OSSwapInt32(cpu->r31); 64 cpu->xip = OSSwapInt32(cpu->xip); 65 cpu->xip_in_bd = OSSwapInt32(cpu->xip_in_bd); 66 cpu->nip = OSSwapInt32(cpu->nip); 67} 68 69void 70swap_m88k_thread_state_xrf_t( 71m88k_thread_state_xrf_t *fpu, 72enum NXByteOrder target_byte_sex) 73{ 74 enum NXByteOrder host_byte_sex; 75 76 struct swapped_m88k_fpsr { 77 union { 78 struct { 79 unsigned afinx:BIT_WIDTH(0); 80 unsigned afovf:BIT_WIDTH(1); 81 unsigned afunf:BIT_WIDTH(2); 82 unsigned afdvz:BIT_WIDTH(3); 83 unsigned afinv:BIT_WIDTH(4); 84 unsigned :BITS_WIDTH(15,5); 85 unsigned xmod:BIT_WIDTH(16); 86 unsigned :BITS_WIDTH(31,17); 87 } fields; 88 uint32_t word; 89 } u; 90 } ssr; 91 struct swapped_m88k_fpcr { 92 union { 93 struct { 94 unsigned efinx:BIT_WIDTH(0); 95 unsigned efovf:BIT_WIDTH(1); 96 unsigned efunf:BIT_WIDTH(2); 97 unsigned efdvz:BIT_WIDTH(3); 98 unsigned efinv:BIT_WIDTH(4); 99 unsigned :BITS_WIDTH(13,5); 100 m88k_fpcr_rm_t rm:BITS_WIDTH(15,14); 101 unsigned :BITS_WIDTH(31,16); 102 } fields; 103 uint32_t word; 104 } u; 105 } scr; 106 107 host_byte_sex = NXHostByteOrder(); 108 109 fpu->x1.x[0] = OSSwapInt32(fpu->x1.x[0]); 110 fpu->x1.x[1] = OSSwapInt32(fpu->x1.x[1]); 111 fpu->x1.x[2] = OSSwapInt32(fpu->x1.x[2]); 112 fpu->x1.x[3] = OSSwapInt32(fpu->x1.x[3]); 113 fpu->x2.x[0] = OSSwapInt32(fpu->x2.x[0]); 114 fpu->x2.x[1] = OSSwapInt32(fpu->x2.x[1]); 115 fpu->x2.x[2] = OSSwapInt32(fpu->x2.x[2]); 116 fpu->x2.x[3] = OSSwapInt32(fpu->x2.x[3]); 117 fpu->x3.x[0] = OSSwapInt32(fpu->x3.x[0]); 118 fpu->x3.x[1] = OSSwapInt32(fpu->x3.x[1]); 119 fpu->x3.x[2] = OSSwapInt32(fpu->x3.x[2]); 120 fpu->x3.x[3] = OSSwapInt32(fpu->x3.x[3]); 121 fpu->x4.x[0] = OSSwapInt32(fpu->x4.x[0]); 122 fpu->x4.x[1] = OSSwapInt32(fpu->x4.x[1]); 123 fpu->x4.x[2] = OSSwapInt32(fpu->x4.x[2]); 124 fpu->x4.x[3] = OSSwapInt32(fpu->x4.x[3]); 125 fpu->x5.x[0] = OSSwapInt32(fpu->x5.x[0]); 126 fpu->x5.x[1] = OSSwapInt32(fpu->x5.x[1]); 127 fpu->x5.x[2] = OSSwapInt32(fpu->x5.x[2]); 128 fpu->x5.x[3] = OSSwapInt32(fpu->x5.x[3]); 129 fpu->x6.x[0] = OSSwapInt32(fpu->x6.x[0]); 130 fpu->x6.x[1] = OSSwapInt32(fpu->x6.x[1]); 131 fpu->x6.x[2] = OSSwapInt32(fpu->x6.x[2]); 132 fpu->x6.x[3] = OSSwapInt32(fpu->x6.x[3]); 133 fpu->x7.x[0] = OSSwapInt32(fpu->x7.x[0]); 134 fpu->x7.x[1] = OSSwapInt32(fpu->x7.x[1]); 135 fpu->x7.x[2] = OSSwapInt32(fpu->x7.x[2]); 136 fpu->x7.x[3] = OSSwapInt32(fpu->x7.x[3]); 137 fpu->x8.x[0] = OSSwapInt32(fpu->x8.x[0]); 138 fpu->x8.x[1] = OSSwapInt32(fpu->x8.x[1]); 139 fpu->x8.x[2] = OSSwapInt32(fpu->x8.x[2]); 140 fpu->x8.x[3] = OSSwapInt32(fpu->x8.x[3]); 141 fpu->x9.x[0] = OSSwapInt32(fpu->x9.x[0]); 142 fpu->x9.x[1] = OSSwapInt32(fpu->x9.x[1]); 143 fpu->x9.x[2] = OSSwapInt32(fpu->x9.x[2]); 144 fpu->x9.x[3] = OSSwapInt32(fpu->x9.x[3]); 145 fpu->x10.x[0] = OSSwapInt32(fpu->x10.x[0]); 146 fpu->x10.x[1] = OSSwapInt32(fpu->x10.x[1]); 147 fpu->x10.x[2] = OSSwapInt32(fpu->x10.x[2]); 148 fpu->x10.x[3] = OSSwapInt32(fpu->x10.x[3]); 149 fpu->x11.x[0] = OSSwapInt32(fpu->x11.x[0]); 150 fpu->x11.x[1] = OSSwapInt32(fpu->x11.x[1]); 151 fpu->x11.x[2] = OSSwapInt32(fpu->x11.x[2]); 152 fpu->x11.x[3] = OSSwapInt32(fpu->x11.x[3]); 153 fpu->x12.x[0] = OSSwapInt32(fpu->x12.x[0]); 154 fpu->x12.x[1] = OSSwapInt32(fpu->x12.x[1]); 155 fpu->x12.x[2] = OSSwapInt32(fpu->x12.x[2]); 156 fpu->x12.x[3] = OSSwapInt32(fpu->x12.x[3]); 157 fpu->x13.x[0] = OSSwapInt32(fpu->x13.x[0]); 158 fpu->x13.x[1] = OSSwapInt32(fpu->x13.x[1]); 159 fpu->x13.x[2] = OSSwapInt32(fpu->x13.x[2]); 160 fpu->x13.x[3] = OSSwapInt32(fpu->x13.x[3]); 161 fpu->x14.x[0] = OSSwapInt32(fpu->x14.x[0]); 162 fpu->x14.x[1] = OSSwapInt32(fpu->x14.x[1]); 163 fpu->x14.x[2] = OSSwapInt32(fpu->x14.x[2]); 164 fpu->x14.x[3] = OSSwapInt32(fpu->x14.x[3]); 165 fpu->x15.x[0] = OSSwapInt32(fpu->x15.x[0]); 166 fpu->x15.x[1] = OSSwapInt32(fpu->x15.x[1]); 167 fpu->x15.x[2] = OSSwapInt32(fpu->x15.x[2]); 168 fpu->x15.x[3] = OSSwapInt32(fpu->x15.x[3]); 169 fpu->x16.x[0] = OSSwapInt32(fpu->x16.x[0]); 170 fpu->x16.x[1] = OSSwapInt32(fpu->x16.x[1]); 171 fpu->x16.x[2] = OSSwapInt32(fpu->x16.x[2]); 172 fpu->x16.x[3] = OSSwapInt32(fpu->x16.x[3]); 173 fpu->x17.x[0] = OSSwapInt32(fpu->x17.x[0]); 174 fpu->x17.x[1] = OSSwapInt32(fpu->x17.x[1]); 175 fpu->x17.x[2] = OSSwapInt32(fpu->x17.x[2]); 176 fpu->x17.x[3] = OSSwapInt32(fpu->x17.x[3]); 177 fpu->x18.x[0] = OSSwapInt32(fpu->x18.x[0]); 178 fpu->x18.x[1] = OSSwapInt32(fpu->x18.x[1]); 179 fpu->x18.x[2] = OSSwapInt32(fpu->x18.x[2]); 180 fpu->x18.x[3] = OSSwapInt32(fpu->x18.x[3]); 181 fpu->x19.x[0] = OSSwapInt32(fpu->x19.x[0]); 182 fpu->x19.x[1] = OSSwapInt32(fpu->x19.x[1]); 183 fpu->x19.x[2] = OSSwapInt32(fpu->x19.x[2]); 184 fpu->x19.x[3] = OSSwapInt32(fpu->x19.x[3]); 185 fpu->x20.x[0] = OSSwapInt32(fpu->x20.x[0]); 186 fpu->x20.x[1] = OSSwapInt32(fpu->x20.x[1]); 187 fpu->x20.x[2] = OSSwapInt32(fpu->x20.x[2]); 188 fpu->x20.x[3] = OSSwapInt32(fpu->x20.x[3]); 189 fpu->x21.x[0] = OSSwapInt32(fpu->x21.x[0]); 190 fpu->x21.x[1] = OSSwapInt32(fpu->x21.x[1]); 191 fpu->x21.x[2] = OSSwapInt32(fpu->x21.x[2]); 192 fpu->x21.x[3] = OSSwapInt32(fpu->x21.x[3]); 193 fpu->x22.x[0] = OSSwapInt32(fpu->x22.x[0]); 194 fpu->x22.x[1] = OSSwapInt32(fpu->x22.x[1]); 195 fpu->x22.x[2] = OSSwapInt32(fpu->x22.x[2]); 196 fpu->x22.x[3] = OSSwapInt32(fpu->x22.x[3]); 197 fpu->x23.x[0] = OSSwapInt32(fpu->x23.x[0]); 198 fpu->x23.x[1] = OSSwapInt32(fpu->x23.x[1]); 199 fpu->x23.x[2] = OSSwapInt32(fpu->x23.x[2]); 200 fpu->x23.x[3] = OSSwapInt32(fpu->x23.x[3]); 201 fpu->x24.x[0] = OSSwapInt32(fpu->x24.x[0]); 202 fpu->x24.x[1] = OSSwapInt32(fpu->x24.x[1]); 203 fpu->x24.x[2] = OSSwapInt32(fpu->x24.x[2]); 204 fpu->x24.x[3] = OSSwapInt32(fpu->x24.x[3]); 205 fpu->x25.x[0] = OSSwapInt32(fpu->x25.x[0]); 206 fpu->x25.x[1] = OSSwapInt32(fpu->x25.x[1]); 207 fpu->x25.x[2] = OSSwapInt32(fpu->x25.x[2]); 208 fpu->x25.x[3] = OSSwapInt32(fpu->x25.x[3]); 209 fpu->x26.x[0] = OSSwapInt32(fpu->x26.x[0]); 210 fpu->x26.x[1] = OSSwapInt32(fpu->x26.x[1]); 211 fpu->x26.x[2] = OSSwapInt32(fpu->x26.x[2]); 212 fpu->x26.x[3] = OSSwapInt32(fpu->x26.x[3]); 213 fpu->x27.x[0] = OSSwapInt32(fpu->x27.x[0]); 214 fpu->x27.x[1] = OSSwapInt32(fpu->x27.x[1]); 215 fpu->x27.x[2] = OSSwapInt32(fpu->x27.x[2]); 216 fpu->x27.x[3] = OSSwapInt32(fpu->x27.x[3]); 217 fpu->x28.x[0] = OSSwapInt32(fpu->x28.x[0]); 218 fpu->x28.x[1] = OSSwapInt32(fpu->x28.x[1]); 219 fpu->x28.x[2] = OSSwapInt32(fpu->x28.x[2]); 220 fpu->x28.x[3] = OSSwapInt32(fpu->x28.x[3]); 221 fpu->x29.x[0] = OSSwapInt32(fpu->x29.x[0]); 222 fpu->x29.x[1] = OSSwapInt32(fpu->x29.x[1]); 223 fpu->x29.x[2] = OSSwapInt32(fpu->x29.x[2]); 224 fpu->x29.x[3] = OSSwapInt32(fpu->x29.x[3]); 225 fpu->x30.x[0] = OSSwapInt32(fpu->x30.x[0]); 226 fpu->x30.x[1] = OSSwapInt32(fpu->x30.x[1]); 227 fpu->x30.x[2] = OSSwapInt32(fpu->x30.x[2]); 228 fpu->x30.x[3] = OSSwapInt32(fpu->x30.x[3]); 229 fpu->x31.x[0] = OSSwapInt32(fpu->x31.x[0]); 230 fpu->x31.x[1] = OSSwapInt32(fpu->x31.x[1]); 231 fpu->x31.x[2] = OSSwapInt32(fpu->x31.x[2]); 232 fpu->x31.x[3] = OSSwapInt32(fpu->x31.x[3]); 233 234 if(target_byte_sex == host_byte_sex){ 235 memcpy(&ssr, &(fpu->fpsr), sizeof(struct swapped_m88k_fpsr)); 236 ssr.u.word = OSSwapInt32(ssr.u.word); 237 fpu->fpsr.afinx = ssr.u.fields.afinx; 238 fpu->fpsr.afovf = ssr.u.fields.afovf; 239 fpu->fpsr.afunf = ssr.u.fields.afunf; 240 fpu->fpsr.afdvz = ssr.u.fields.afdvz; 241 fpu->fpsr.afinv = ssr.u.fields.afinv; 242 fpu->fpsr.xmod = ssr.u.fields.xmod; 243 244 memcpy(&scr, &(fpu->fpcr), sizeof(struct swapped_m88k_fpcr)); 245 scr.u.word = OSSwapInt32(scr.u.word); 246 fpu->fpcr.efinx = scr.u.fields.efinx; 247 fpu->fpcr.efovf = scr.u.fields.efovf; 248 fpu->fpcr.efunf = scr.u.fields.efunf; 249 fpu->fpcr.efdvz = scr.u.fields.efdvz; 250 fpu->fpcr.efinv = scr.u.fields.efinv; 251 fpu->fpcr.rm = scr.u.fields.rm; 252 } 253 else{ 254 ssr.u.fields.afinx = fpu->fpsr.afinx; 255 ssr.u.fields.afovf = fpu->fpsr.afovf; 256 ssr.u.fields.afunf = fpu->fpsr.afunf; 257 ssr.u.fields.afdvz = fpu->fpsr.afdvz; 258 ssr.u.fields.afinv = fpu->fpsr.afinv; 259 ssr.u.fields.xmod = fpu->fpsr.xmod; 260 ssr.u.word = OSSwapInt32(ssr.u.word); 261 memcpy(&(fpu->fpsr), &ssr, sizeof(struct swapped_m88k_fpsr)); 262 263 scr.u.fields.efinx = fpu->fpcr.efinx; 264 scr.u.fields.efovf = fpu->fpcr.efovf; 265 scr.u.fields.efunf = fpu->fpcr.efunf; 266 scr.u.fields.efdvz = fpu->fpcr.efdvz; 267 scr.u.fields.efinv = fpu->fpcr.efinv; 268 scr.u.fields.rm = fpu->fpcr.rm; 269 scr.u.word = OSSwapInt32(scr.u.word); 270 memcpy(&(fpu->fpcr), &scr, sizeof(struct swapped_m88k_fpcr)); 271 } 272} 273 274void 275swap_m88k_thread_state_user_t( 276m88k_thread_state_user_t *user, 277enum NXByteOrder target_byte_sex) 278{ 279 user->user = OSSwapInt32(user->user); 280} 281 282void 283swap_m88110_thread_state_impl_t( 284m88110_thread_state_impl_t *spu, 285enum NXByteOrder target_byte_sex) 286{ 287 uint32_t i; 288 enum NXByteOrder host_byte_sex; 289 290 struct swapped_m88110_bp_ctrl { 291 union { 292 struct { 293 unsigned v:BIT_WIDTH(0); 294 m88110_match_t addr_match:BITS_WIDTH(12,1); 295 unsigned :BITS_WIDTH(26,13); 296 unsigned rwm:BIT_WIDTH(27); 297 unsigned rw:BIT_WIDTH(28); 298 unsigned :BITS_WIDTH(31,29); 299 } fields; 300 uint32_t word; 301 } u; 302 } sbpc; 303 304 struct swap_m88110_psr { 305 union { 306 struct { 307 unsigned :BITS_WIDTH(1,0); 308 unsigned mxm_dis:BIT_WIDTH(2); 309 unsigned sfu1dis:BIT_WIDTH(3); 310 unsigned :BITS_WIDTH(22,4); 311 unsigned trace:BIT_WIDTH(23); 312 unsigned :BIT_WIDTH(24); 313 unsigned sm:BIT_WIDTH(25); 314 unsigned sgn_imd:BIT_WIDTH(26); 315 unsigned :BIT_WIDTH(27); 316 unsigned c:BIT_WIDTH(28); 317 unsigned se:BIT_WIDTH(29); 318 unsigned le:BIT_WIDTH(30); 319 unsigned supr:BIT_WIDTH(31); 320 } fields; 321 uint32_t word; 322 } u; 323 } spsr; 324 325 struct swapped_m88110_fp_trap_status { 326 union { 327 struct { 328 unsigned efinx:BIT_WIDTH(0); 329 unsigned efovf:BIT_WIDTH(1); 330 unsigned efunf:BIT_WIDTH(2); 331 unsigned efdvz:BIT_WIDTH(3); 332 unsigned efinv:BIT_WIDTH(4); 333 unsigned priv:BIT_WIDTH(5); 334 unsigned unimp:BIT_WIDTH(6); 335 unsigned int:BIT_WIDTH(7); 336 unsigned sfu1_disabled:BIT_WIDTH(8); 337 unsigned :BITS_WIDTH(13,9); 338 m88110_iresult_size_t iresult_size:BITS_WIDTH(15,14); 339 unsigned :BITS_WIDTH(31,16); 340 } fields; 341 uint32_t word; 342 } u; 343 } sfps; 344 345 host_byte_sex = NXHostByteOrder(); 346 347 if(target_byte_sex == host_byte_sex){ 348 for(i = 0; i < M88110_N_DATA_BP; i++){ 349 spu->data_bp[i].addr = OSSwapInt32(spu->data_bp[i].addr); 350 memcpy(&sbpc, &(spu->data_bp[i].ctrl), 351 sizeof(struct swapped_m88110_bp_ctrl)); 352 sbpc.u.word = OSSwapInt32(sbpc.u.word); 353 spu->data_bp[i].ctrl.v = sbpc.u.fields.v; 354 spu->data_bp[i].ctrl.addr_match = sbpc.u.fields.addr_match; 355 spu->data_bp[i].ctrl.rwm = sbpc.u.fields.rwm; 356 spu->data_bp[i].ctrl.rw = sbpc.u.fields.rw; 357 } 358 359 memcpy(&spsr, &(spu->psr), sizeof(struct swap_m88110_psr)); 360 spsr.u.word = OSSwapInt32(spsr.u.word); 361 spu->psr.mxm_dis = spsr.u.fields.mxm_dis; 362 spu->psr.sfu1dis = spsr.u.fields.sfu1dis; 363 spu->psr.trace = spsr.u.fields.trace; 364 spu->psr.sm = spsr.u.fields.sm; 365 spu->psr.sgn_imd = spsr.u.fields.sgn_imd; 366 spu->psr.c = spsr.u.fields.c; 367 spu->psr.se = spsr.u.fields.se; 368 spu->psr.le = spsr.u.fields.le; 369 spu->psr.supr = spsr.u.fields.supr; 370 371 memcpy(&sfps, &(spu->fp_trap_status), 372 sizeof(struct swapped_m88110_fp_trap_status)); 373 sfps.u.word = OSSwapInt32(sfps.u.word); 374 spu->fp_trap_status.efinx = sfps.u.fields.efinx; 375 spu->fp_trap_status.efovf = sfps.u.fields.efovf; 376 spu->fp_trap_status.efunf = sfps.u.fields.efunf; 377 spu->fp_trap_status.efdvz = sfps.u.fields.efdvz; 378 spu->fp_trap_status.efinv = sfps.u.fields.efinv; 379 spu->fp_trap_status.priv = sfps.u.fields.priv; 380 spu->fp_trap_status.unimp = sfps.u.fields.unimp; 381 spu->fp_trap_status.sfu1_disabled = sfps.u.fields.sfu1_disabled; 382 spu->fp_trap_status.iresult_size = sfps.u.fields.iresult_size; 383 } 384 else{ 385 for(i = 0; i < M88110_N_DATA_BP; i++){ 386 spu->data_bp[i].addr = OSSwapInt32(spu->data_bp[i].addr); 387 sbpc.u.fields.v = spu->data_bp[i].ctrl.v; 388 sbpc.u.fields.addr_match = spu->data_bp[i].ctrl.addr_match; 389 sbpc.u.fields.rwm = spu->data_bp[i].ctrl.rwm; 390 sbpc.u.fields.rw = spu->data_bp[i].ctrl.rw; 391 sbpc.u.word = OSSwapInt32(sbpc.u.word); 392 memcpy(&(spu->data_bp[i].ctrl), &sbpc, 393 sizeof(struct swapped_m88110_bp_ctrl)); 394 } 395 396 spsr.u.fields.mxm_dis = spu->psr.mxm_dis; 397 spsr.u.fields.sfu1dis = spu->psr.sfu1dis; 398 spsr.u.fields.trace = spu->psr.trace; 399 spsr.u.fields.sm = spu->psr.sm; 400 spsr.u.fields.sgn_imd = spu->psr.sgn_imd; 401 spsr.u.fields.c = spu->psr.c; 402 spsr.u.fields.se = spu->psr.se; 403 spsr.u.fields.le = spu->psr.le; 404 spsr.u.fields.supr = spu->psr.supr; 405 spsr.u.word = OSSwapInt32(spsr.u.word); 406 memcpy(&(spu->psr), &spsr, sizeof(struct swap_m88110_psr)); 407 408 sfps.u.fields.efinx = spu->fp_trap_status.efinx; 409 sfps.u.fields.efovf = spu->fp_trap_status.efovf; 410 sfps.u.fields.efunf = spu->fp_trap_status.efunf; 411 sfps.u.fields.efdvz = spu->fp_trap_status.efdvz; 412 sfps.u.fields.efinv = spu->fp_trap_status.efinv; 413 sfps.u.fields.priv = spu->fp_trap_status.priv; 414 sfps.u.fields.unimp = spu->fp_trap_status.unimp; 415 sfps.u.fields.sfu1_disabled = spu->fp_trap_status.sfu1_disabled; 416 sfps.u.fields.iresult_size = spu->fp_trap_status.iresult_size; 417 sfps.u.word = OSSwapInt32(sfps.u.word); 418 memcpy(&(spu->fp_trap_status), &sfps, 419 sizeof(struct swapped_m88110_fp_trap_status)); 420 } 421 spu->intermediate_result.x[0] = 422 OSSwapInt32(spu->intermediate_result.x[0]); 423 spu->intermediate_result.x[1] = 424 OSSwapInt32(spu->intermediate_result.x[1]); 425 spu->intermediate_result.x[2] = 426 OSSwapInt32(spu->intermediate_result.x[2]); 427 spu->intermediate_result.x[3] = 428 OSSwapInt32(spu->intermediate_result.x[3]); 429} 430#endif /* !defined(RLD) */ 431