Annotation of GNUtools/cctools/libstuff/bytesex.c, revision 1.1.1.1

1.1       root        1: /* byte_sex.c */
                      2: #include <mach-o/fat.h>
                      3: #include <mach-o/loader.h>
                      4: #import <mach/m68k/thread_status.h>
                      5: #import <mach/m98k/thread_status.h>
                      6: #import <mach/m88k/thread_status.h>
                      7: #import <mach/i860/thread_status.h>
                      8: #import <mach/i386/thread_status.h>
                      9: #import <mach/hppa/thread_status.h>
                     10: #import <mach/sparc/thread_status.h>
                     11: #include <mach-o/nlist.h>
                     12: #include <mach-o/reloc.h>
                     13: #include <bsd/ranlib.h>
                     14: #include "stuff/bool.h"
                     15: #include "stuff/bytesex.h"
                     16: 
                     17: double
                     18: SWAP_DOUBLE(
                     19: double d)
                     20: {
                     21:        union {
                     22:            char c[8];
                     23:            double d;
                     24:        } in, out;
                     25:        in.d = d;
                     26:        out.c[0] = in.c[7];
                     27:        out.c[1] = in.c[6];
                     28:        out.c[2] = in.c[5];
                     29:        out.c[3] = in.c[4];
                     30:        out.c[4] = in.c[3];
                     31:        out.c[5] = in.c[2];
                     32:        out.c[6] = in.c[1];
                     33:        out.c[7] = in.c[0];
                     34:        return(out.d);
                     35: }
                     36: 
                     37: float
                     38: SWAP_FLOAT(
                     39: float f)
                     40: {
                     41:        union {
                     42:            char c[7];
                     43:            float f;
                     44:        } in, out;
                     45:        in.f = f;
                     46:        out.c[0] = in.c[3];
                     47:        out.c[1] = in.c[2];
                     48:        out.c[2] = in.c[1];
                     49:        out.c[3] = in.c[0];
                     50:        return(out.f);
                     51: }
                     52: 
                     53: /*
                     54:  * get_host_byte_sex() returns the enum constant for the byte sex of the host
                     55:  * it is running on.
                     56:  */
                     57: enum byte_sex
                     58: get_host_byte_sex(
                     59: void)
                     60: {
                     61:     unsigned long s;
                     62: 
                     63:        s = (BIG_ENDIAN_BYTE_SEX << 24) | LITTLE_ENDIAN_BYTE_SEX;
                     64:        return((enum byte_sex)*((char *)&s));
                     65: }
                     66: 
                     67: void
                     68: swap_fat_header(
                     69: struct fat_header *fat_header,
                     70: enum byte_sex target_byte_sex)
                     71: {
                     72:        fat_header->magic     = SWAP_LONG(fat_header->magic);
                     73:        fat_header->nfat_arch = SWAP_LONG(fat_header->nfat_arch);
                     74: }
                     75: 
                     76: void
                     77: swap_fat_arch(
                     78: struct fat_arch *fat_archs,
                     79: unsigned long nfat_arch,
                     80: enum byte_sex target_byte_sex)
                     81: {
                     82:     unsigned long i;
                     83: 
                     84:        for(i = 0; i < nfat_arch; i++){
                     85:            fat_archs[i].cputype    = SWAP_LONG(fat_archs[i].cputype);
                     86:            fat_archs[i].cpusubtype = SWAP_LONG(fat_archs[i].cpusubtype);
                     87:            fat_archs[i].offset     = SWAP_LONG(fat_archs[i].offset);
                     88:            fat_archs[i].size       = SWAP_LONG(fat_archs[i].size);
                     89:            fat_archs[i].align      = SWAP_LONG(fat_archs[i].align);
                     90:        }
                     91: }
                     92: 
                     93: void
                     94: swap_mach_header(
                     95: struct mach_header *mh,
                     96: enum byte_sex target_byte_sex)
                     97: {
                     98:        mh->magic = SWAP_LONG(mh->magic);
                     99:        mh->cputype = SWAP_LONG(mh->cputype);
                    100:        mh->cpusubtype = SWAP_LONG(mh->cpusubtype);
                    101:        mh->filetype = SWAP_LONG(mh->filetype);
                    102:        mh->ncmds = SWAP_LONG(mh->ncmds);
                    103:        mh->sizeofcmds = SWAP_LONG(mh->sizeofcmds);
                    104:        mh->flags = SWAP_LONG(mh->flags);
                    105: }
                    106: 
                    107: void
                    108: swap_load_command(
                    109: struct load_command *lc,
                    110: enum byte_sex target_byte_sex)
                    111: {
                    112:        lc->cmd = SWAP_LONG(lc->cmd);
                    113:        lc->cmdsize = SWAP_LONG(lc->cmdsize);
                    114: }
                    115: 
                    116: void
                    117: swap_segment_command(
                    118: struct segment_command *sg,
                    119: enum byte_sex target_byte_sex)
                    120: {
                    121:        /* segname[16] */
                    122:        sg->cmd = SWAP_LONG(sg->cmd);
                    123:        sg->cmdsize = SWAP_LONG(sg->cmdsize);
                    124:        sg->vmaddr = SWAP_LONG(sg->vmaddr);
                    125:        sg->vmsize = SWAP_LONG(sg->vmsize);
                    126:        sg->fileoff = SWAP_LONG(sg->fileoff);
                    127:        sg->filesize = SWAP_LONG(sg->filesize);
                    128:        sg->maxprot = SWAP_LONG(sg->maxprot);
                    129:        sg->initprot = SWAP_LONG(sg->initprot);
                    130:        sg->nsects = SWAP_LONG(sg->nsects);
                    131:        sg->flags = SWAP_LONG(sg->flags);
                    132: }
                    133: 
                    134: void
                    135: swap_section(
                    136: struct section *s,
                    137: unsigned long nsects,
                    138: enum byte_sex target_byte_sex)
                    139: {
                    140:     unsigned long i;
                    141: 
                    142:        for(i = 0; i < nsects; i++){
                    143:            /* sectname[16] */
                    144:            /* segname[16] */
                    145:            s[i].addr = SWAP_LONG(s[i].addr);
                    146:            s[i].size = SWAP_LONG(s[i].size);
                    147:            s[i].offset = SWAP_LONG(s[i].offset);
                    148:            s[i].align = SWAP_LONG(s[i].align);
                    149:            s[i].reloff = SWAP_LONG(s[i].reloff);
                    150:            s[i].nreloc = SWAP_LONG(s[i].nreloc);
                    151:            s[i].flags = SWAP_LONG(s[i].flags);
                    152:            s[i].reserved1 = SWAP_LONG(s[i].reserved1);
                    153:            s[i].reserved2 = SWAP_LONG(s[i].reserved2);
                    154:        }
                    155: }
                    156: 
                    157: void
                    158: swap_symtab_command(
                    159: struct symtab_command *st,
                    160: enum byte_sex target_byte_sex)
                    161: {
                    162:        st->cmd = SWAP_LONG(st->cmd);
                    163:        st->cmdsize = SWAP_LONG(st->cmdsize);
                    164:        st->symoff = SWAP_LONG(st->symoff);
                    165:        st->nsyms = SWAP_LONG(st->nsyms);
                    166:        st->stroff = SWAP_LONG(st->stroff);
                    167:        st->strsize = SWAP_LONG(st->strsize);
                    168: }
                    169: 
                    170: void
                    171: swap_dysymtab_command(
                    172: struct dysymtab_command *dyst,
                    173: enum byte_sex target_byte_sex)
                    174: {
                    175:        dyst->cmd = SWAP_LONG(dyst->cmd);
                    176:        dyst->cmdsize = SWAP_LONG(dyst->cmdsize);
                    177:        dyst->ilocalsym = SWAP_LONG(dyst->ilocalsym);
                    178:        dyst->nlocalsym = SWAP_LONG(dyst->nlocalsym);
                    179:        dyst->iextdefsym = SWAP_LONG(dyst->iextdefsym);
                    180:        dyst->nextdefsym = SWAP_LONG(dyst->nextdefsym);
                    181:        dyst->iundefsym = SWAP_LONG(dyst->iundefsym);
                    182:        dyst->nundefsym = SWAP_LONG(dyst->nundefsym);
                    183:        dyst->tocoff = SWAP_LONG(dyst->tocoff);
                    184:        dyst->ntoc = SWAP_LONG(dyst->ntoc);
                    185:        dyst->modtaboff = SWAP_LONG(dyst->modtaboff);
                    186:        dyst->nmodtab = SWAP_LONG(dyst->nmodtab);
                    187:        dyst->extrefsymoff = SWAP_LONG(dyst->extrefsymoff);
                    188:        dyst->nextrefsyms = SWAP_LONG(dyst->nextrefsyms);
                    189:        dyst->indirectsymoff = SWAP_LONG(dyst->indirectsymoff);
                    190:        dyst->nindirectsyms = SWAP_LONG(dyst->nindirectsyms);
                    191:        dyst->extreloff = SWAP_LONG(dyst->extreloff);
                    192:        dyst->nextrel = SWAP_LONG(dyst->nextrel);
                    193:        dyst->locreloff = SWAP_LONG(dyst->locreloff);
                    194:        dyst->nlocrel = SWAP_LONG(dyst->nlocrel);
                    195: }
                    196: 
                    197: void
                    198: swap_symseg_command(
                    199: struct symseg_command *ss,
                    200: enum byte_sex target_byte_sex)
                    201: {
                    202:        ss->cmd = SWAP_LONG(ss->cmd);
                    203:        ss->cmdsize = SWAP_LONG(ss->cmdsize);
                    204:        ss->offset = SWAP_LONG(ss->offset);
                    205:        ss->size = SWAP_LONG(ss->size);
                    206: }
                    207: 
                    208: void
                    209: swap_fvmlib_command(
                    210: struct fvmlib_command *fl,
                    211: enum byte_sex target_byte_sex)
                    212: {
                    213:        fl->cmd = SWAP_LONG(fl->cmd);
                    214:        fl->cmdsize = SWAP_LONG(fl->cmdsize);
                    215:        fl->fvmlib.name.offset = SWAP_LONG(fl->fvmlib.name.offset);
                    216:        fl->fvmlib.minor_version = SWAP_LONG(fl->fvmlib.minor_version);
                    217:        fl->fvmlib.header_addr = SWAP_LONG(fl->fvmlib.header_addr);
                    218: }
                    219: 
                    220: void
                    221: swap_dylib_command(
                    222: struct dylib_command *dl,
                    223: enum byte_sex target_byte_sex)
                    224: {
                    225:        dl->cmd = SWAP_LONG(dl->cmd);
                    226:        dl->cmdsize = SWAP_LONG(dl->cmdsize);
                    227:        dl->dylib.name.offset = SWAP_LONG(dl->dylib.name.offset);
                    228:        dl->dylib.timestamp = SWAP_LONG(dl->dylib.timestamp);
                    229:        dl->dylib.current_version = SWAP_LONG(dl->dylib.current_version);
                    230:        dl->dylib.compatibility_version =
                    231:                                SWAP_LONG(dl->dylib.compatibility_version);
                    232: }
                    233: 
                    234: void
                    235: swap_dylinker_command(
                    236: struct dylinker_command *dyld,
                    237: enum byte_sex target_byte_sex)
                    238: {
                    239:        dyld->cmd = SWAP_LONG(dyld->cmd);
                    240:        dyld->cmdsize = SWAP_LONG(dyld->cmdsize);
                    241:        dyld->name.offset = SWAP_LONG(dyld->name.offset);
                    242: }
                    243: 
                    244: void
                    245: swap_fvmfile_command(
                    246: struct fvmfile_command *ff,
                    247: enum byte_sex target_byte_sex)
                    248: {
                    249:        ff->cmd = SWAP_LONG(ff->cmd);
                    250:        ff->cmdsize = SWAP_LONG(ff->cmdsize);
                    251:        ff->name.offset = SWAP_LONG(ff->name.offset);
                    252:        ff->header_addr = SWAP_LONG(ff->header_addr);
                    253: }
                    254: 
                    255: 
                    256: void
                    257: swap_thread_command(
                    258: struct thread_command *ut,
                    259: enum byte_sex target_byte_sex)
                    260: {
                    261:        ut->cmd = SWAP_LONG(ut->cmd);
                    262:        ut->cmdsize = SWAP_LONG(ut->cmdsize);
                    263: }
                    264: 
                    265: void
                    266: swap_m68k_thread_state_regs(
                    267: struct m68k_thread_state_regs *cpu,
                    268: enum byte_sex target_byte_sex)
                    269: {
                    270:     unsigned long i;
                    271: 
                    272:        for(i = 0; i < 8; i++)
                    273:            cpu->dreg[i] = SWAP_LONG(cpu->dreg[i]);
                    274:        for(i = 0; i < 8; i++)
                    275:            cpu->areg[i] = SWAP_LONG(cpu->areg[i]);
                    276:        cpu->pad0 = SWAP_SHORT(cpu->pad0);
                    277:        cpu->sr = SWAP_SHORT(cpu->sr);
                    278:        cpu->pc = SWAP_LONG(cpu->pc);
                    279: }
                    280: 
                    281: void
                    282: swap_m68k_thread_state_68882(
                    283: struct m68k_thread_state_68882 *fpu,
                    284: enum byte_sex target_byte_sex)
                    285: {
                    286:     unsigned long i, tmp;
                    287: 
                    288:        for(i = 0; i < 8; i++){
                    289:                           tmp = SWAP_LONG(fpu->regs[i].fp[0]);
                    290:            fpu->regs[i].fp[1] = SWAP_LONG(fpu->regs[i].fp[1]);
                    291:            fpu->regs[i].fp[0] = SWAP_LONG(fpu->regs[i].fp[2]);
                    292:            fpu->regs[i].fp[2] = tmp;
                    293:        }
                    294:        fpu->cr = SWAP_LONG(fpu->cr);
                    295:        fpu->sr = SWAP_LONG(fpu->sr);
                    296:        fpu->iar = SWAP_LONG(fpu->iar);
                    297:        fpu->state = SWAP_LONG(fpu->state);
                    298: }
                    299: 
                    300: void
                    301: swap_m68k_thread_state_user_reg(
                    302: struct m68k_thread_state_user_reg *user_reg,
                    303: enum byte_sex target_byte_sex)
                    304: {
                    305:        user_reg->user_reg = SWAP_LONG(user_reg->user_reg);
                    306: }
                    307: 
                    308: void
                    309: swap_m98k_thread_state_grf_t(
                    310: m98k_thread_state_grf_t *cpu,
                    311: enum byte_sex target_byte_sex)
                    312: {
                    313:     enum byte_sex host_byte_sex;
                    314: 
                    315:     struct swapped_m98k_cr {
                    316:        union {
                    317:            struct {
                    318:                unsigned rsvd:BITS_WIDTH(23,0);
                    319:                unsigned ox:BIT_WIDTH(24);
                    320:                unsigned vx:BIT_WIDTH(25);
                    321:                unsigned fex:BIT_WIDTH(26);
                    322:                unsigned fx:BIT_WIDTH(27);
                    323:                unsigned so:BIT_WIDTH(28);
                    324:                unsigned eq:BIT_WIDTH(29);
                    325:                unsigned gt:BIT_WIDTH(30);
                    326:                unsigned lt:BIT_WIDTH(31);
                    327:            } fields;
                    328:            unsigned long word;
                    329:        } u;
                    330:     } scr;
                    331:     struct swapped_m98k_xer {
                    332:        union {
                    333:            struct {
                    334:                unsigned byte_count:BITS_WIDTH(6,0);    
                    335:                unsigned rsvd2:BIT_WIDTH(7);
                    336:                unsigned byte:BITS_WIDTH(15,8);
                    337:                unsigned rsvd1:BITS_WIDTH(28,16);
                    338:                unsigned ca:BIT_WIDTH(29);
                    339:                unsigned ov:BIT_WIDTH(30);
                    340:                unsigned so:BIT_WIDTH(31);
                    341:            } fields;
                    342:            unsigned long word;
                    343:        } u;
                    344:     } sxer;
                    345:     struct swapped_m98k_msr {
                    346:        union {
                    347:            struct {
                    348:                unsigned psfr:BIT_WIDTH(0);
                    349:                unsigned rsvd2:BITS_WIDTH(3,1);
                    350:                unsigned dr:BIT_WIDTH(4);
                    351:                unsigned ir:BIT_WIDTH(5);
                    352:                unsigned ip:BIT_WIDTH(6);
                    353:                unsigned rsvd1:BIT_WIDTH(7);
                    354:                unsigned fe1:BIT_WIDTH(8);
                    355:                unsigned be:BIT_WIDTH(9);
                    356:                unsigned se:BIT_WIDTH(10);
                    357:                unsigned fe0:BIT_WIDTH(11);
                    358:                unsigned me:BIT_WIDTH(12);
                    359:                unsigned fp:BIT_WIDTH(13);
                    360:                unsigned pr:BIT_WIDTH(14);
                    361:                unsigned ee:BIT_WIDTH(15);
                    362:                unsigned rsvd3:BITS_WIDTH(31,16);
                    363:            } fields;
                    364:            unsigned long word;
                    365:        } u;
                    366:     } smsr;
                    367: 
                    368:        host_byte_sex = get_host_byte_sex();
                    369: 
                    370:        cpu->r0 = SWAP_LONG(cpu->r0);
                    371:        cpu->r1 = SWAP_LONG(cpu->r1);
                    372:        cpu->r2 = SWAP_LONG(cpu->r2);
                    373:        cpu->r3 = SWAP_LONG(cpu->r3);
                    374:        cpu->r4 = SWAP_LONG(cpu->r4);
                    375:        cpu->r5 = SWAP_LONG(cpu->r5);
                    376:        cpu->r6 = SWAP_LONG(cpu->r6);
                    377:        cpu->r7 = SWAP_LONG(cpu->r7);
                    378:        cpu->r8 = SWAP_LONG(cpu->r8);
                    379:        cpu->r9 = SWAP_LONG(cpu->r9);
                    380:        cpu->r10 = SWAP_LONG(cpu->r10);
                    381:        cpu->r11 = SWAP_LONG(cpu->r11);
                    382:        cpu->r12 = SWAP_LONG(cpu->r12);
                    383:        cpu->r13 = SWAP_LONG(cpu->r13);
                    384:        cpu->r14 = SWAP_LONG(cpu->r14);
                    385:        cpu->r15 = SWAP_LONG(cpu->r15);
                    386:        cpu->r16 = SWAP_LONG(cpu->r16);
                    387:        cpu->r17 = SWAP_LONG(cpu->r17);
                    388:        cpu->r18 = SWAP_LONG(cpu->r18);
                    389:        cpu->r19 = SWAP_LONG(cpu->r19);
                    390:        cpu->r20 = SWAP_LONG(cpu->r20);
                    391:        cpu->r21 = SWAP_LONG(cpu->r21);
                    392:        cpu->r22 = SWAP_LONG(cpu->r22);
                    393:        cpu->r23 = SWAP_LONG(cpu->r23);
                    394:        cpu->r24 = SWAP_LONG(cpu->r24);
                    395:        cpu->r25 = SWAP_LONG(cpu->r25);
                    396:        cpu->r26 = SWAP_LONG(cpu->r26);
                    397:        cpu->r27 = SWAP_LONG(cpu->r27);
                    398:        cpu->r28 = SWAP_LONG(cpu->r28);
                    399:        cpu->r29 = SWAP_LONG(cpu->r29);
                    400:        cpu->r30 = SWAP_LONG(cpu->r30);
                    401:        cpu->r31 = SWAP_LONG(cpu->r31);
                    402:        cpu->lr  = SWAP_LONG(cpu->lr);
                    403:        cpu->ctr = SWAP_LONG(cpu->ctr);
                    404:        cpu->cia = SWAP_LONG(cpu->cia);
                    405: 
                    406:        if(target_byte_sex == host_byte_sex){
                    407:            memcpy(&scr, &(cpu->cr), sizeof(struct swapped_m98k_cr));
                    408:            scr.u.word = SWAP_LONG(scr.u.word);
                    409:            cpu->cr.lt = scr.u.fields.lt;
                    410:            cpu->cr.gt = scr.u.fields.gt;
                    411:            cpu->cr.eq = scr.u.fields.eq;
                    412:            cpu->cr.so = scr.u.fields.so;
                    413:            cpu->cr.fx = scr.u.fields.fx;
                    414:            cpu->cr.fex = scr.u.fields.fex;
                    415:            cpu->cr.vx = scr.u.fields.vx;
                    416:            cpu->cr.ox = scr.u.fields.ox;
                    417:            cpu->cr.rsvd = scr.u.fields.rsvd;
                    418: 
                    419:            memcpy(&sxer, &(cpu->xer), sizeof(struct swapped_m98k_xer));
                    420:            sxer.u.word = SWAP_LONG(sxer.u.word);
                    421:            cpu->xer.byte_count = sxer.u.fields.byte_count;
                    422:            cpu->xer.rsvd2 = sxer.u.fields.rsvd2;
                    423:            cpu->xer.byte = sxer.u.fields.byte;
                    424:            cpu->xer.rsvd1 = sxer.u.fields.rsvd1;
                    425:            cpu->xer.ca = sxer.u.fields.ca;
                    426:            cpu->xer.ov = sxer.u.fields.ov;
                    427:            cpu->xer.so = sxer.u.fields.so;
                    428: 
                    429:            memcpy(&smsr, &(cpu->msr), sizeof(struct swapped_m98k_msr));
                    430:            smsr.u.word = SWAP_LONG(smsr.u.word);
                    431:            cpu->msr.psfr = smsr.u.fields.psfr;
                    432:            cpu->msr.rsvd2 = smsr.u.fields.rsvd2;
                    433:            cpu->msr.dr = smsr.u.fields.dr;
                    434:            cpu->msr.ir = smsr.u.fields.ir;
                    435:            cpu->msr.ip = smsr.u.fields.ip;
                    436:            cpu->msr.rsvd1 = smsr.u.fields.rsvd1;
                    437:            cpu->msr.fe1 = smsr.u.fields.fe1;
                    438:            cpu->msr.be = smsr.u.fields.be;
                    439:            cpu->msr.se = smsr.u.fields.se;
                    440:            cpu->msr.fe0 = smsr.u.fields.fe0;
                    441:            cpu->msr.me = smsr.u.fields.me;
                    442:            cpu->msr.fp = smsr.u.fields.fp;
                    443:            cpu->msr.pr = smsr.u.fields.pr;
                    444:            cpu->msr.ee = smsr.u.fields.ee;
                    445:            cpu->msr.rsvd3 = smsr.u.fields.rsvd3;
                    446:        }
                    447:        else{
                    448:            scr.u.fields.lt = cpu->cr.lt;
                    449:            scr.u.fields.gt = cpu->cr.gt;
                    450:            scr.u.fields.eq = cpu->cr.eq;
                    451:            scr.u.fields.so = cpu->cr.so;
                    452:            scr.u.fields.fx = cpu->cr.fx;
                    453:            scr.u.fields.fex = cpu->cr.fex;
                    454:            scr.u.fields.vx = cpu->cr.vx;
                    455:            scr.u.fields.ox = cpu->cr.ox;
                    456:            scr.u.fields.rsvd = cpu->cr.rsvd;
                    457:            scr.u.word = SWAP_LONG(scr.u.word);
                    458:            memcpy(&(cpu->cr), &scr, sizeof(struct swapped_m98k_cr));
                    459: 
                    460:            sxer.u.fields.byte_count = cpu->xer.byte_count;
                    461:            sxer.u.fields.rsvd2 = cpu->xer.rsvd2;
                    462:            sxer.u.fields.byte = cpu->xer.byte;
                    463:            sxer.u.fields.rsvd1 = cpu->xer.rsvd1;
                    464:            sxer.u.fields.ca = cpu->xer.ca;
                    465:            sxer.u.fields.ov = cpu->xer.ov;
                    466:            sxer.u.fields.so = cpu->xer.so;
                    467:            sxer.u.word = SWAP_LONG(sxer.u.word);
                    468:            memcpy(&(cpu->xer), &sxer, sizeof(struct swapped_m98k_xer));
                    469: 
                    470:            smsr.u.fields.psfr = cpu->msr.psfr;
                    471:            smsr.u.fields.rsvd2 = cpu->msr.rsvd2;
                    472:            smsr.u.fields.dr = cpu->msr.dr;
                    473:            smsr.u.fields.ir = cpu->msr.ir;
                    474:            smsr.u.fields.ip = cpu->msr.ip;
                    475:            smsr.u.fields.rsvd1 = cpu->msr.rsvd1;
                    476:            smsr.u.fields.fe1 = cpu->msr.fe1;
                    477:            smsr.u.fields.be = cpu->msr.be;
                    478:            smsr.u.fields.se = cpu->msr.se;
                    479:            smsr.u.fields.fe0 = cpu->msr.fe0;
                    480:            smsr.u.fields.me = cpu->msr.me;
                    481:            smsr.u.fields.fp = cpu->msr.fp;
                    482:            smsr.u.fields.pr = cpu->msr.pr;
                    483:            smsr.u.fields.ee = cpu->msr.ee;
                    484:            smsr.u.fields.rsvd3 = cpu->msr.rsvd3;
                    485:            smsr.u.word = SWAP_LONG(smsr.u.word);
                    486:            memcpy(&(cpu->msr), &smsr, sizeof(struct swapped_m98k_msr));
                    487:        }
                    488: }
                    489: 
                    490: void
                    491: swap_m88k_thread_state_grf_t(
                    492: m88k_thread_state_grf_t *cpu,
                    493: enum byte_sex target_byte_sex)
                    494: {
                    495:        cpu->r1 = SWAP_LONG(cpu->r1);
                    496:        cpu->r2 = SWAP_LONG(cpu->r2);
                    497:        cpu->r3 = SWAP_LONG(cpu->r3);
                    498:        cpu->r4 = SWAP_LONG(cpu->r4);
                    499:        cpu->r5 = SWAP_LONG(cpu->r5);
                    500:        cpu->r6 = SWAP_LONG(cpu->r6);
                    501:        cpu->r7 = SWAP_LONG(cpu->r7);
                    502:        cpu->r8 = SWAP_LONG(cpu->r8);
                    503:        cpu->r9 = SWAP_LONG(cpu->r9);
                    504:        cpu->r10 = SWAP_LONG(cpu->r10);
                    505:        cpu->r11 = SWAP_LONG(cpu->r11);
                    506:        cpu->r12 = SWAP_LONG(cpu->r12);
                    507:        cpu->r13 = SWAP_LONG(cpu->r13);
                    508:        cpu->r14 = SWAP_LONG(cpu->r14);
                    509:        cpu->r15 = SWAP_LONG(cpu->r15);
                    510:        cpu->r16 = SWAP_LONG(cpu->r16);
                    511:        cpu->r17 = SWAP_LONG(cpu->r17);
                    512:        cpu->r18 = SWAP_LONG(cpu->r18);
                    513:        cpu->r19 = SWAP_LONG(cpu->r19);
                    514:        cpu->r20 = SWAP_LONG(cpu->r20);
                    515:        cpu->r21 = SWAP_LONG(cpu->r21);
                    516:        cpu->r22 = SWAP_LONG(cpu->r22);
                    517:        cpu->r23 = SWAP_LONG(cpu->r23);
                    518:        cpu->r24 = SWAP_LONG(cpu->r24);
                    519:        cpu->r25 = SWAP_LONG(cpu->r25);
                    520:        cpu->r26 = SWAP_LONG(cpu->r26);
                    521:        cpu->r27 = SWAP_LONG(cpu->r27);
                    522:        cpu->r28 = SWAP_LONG(cpu->r28);
                    523:        cpu->r29 = SWAP_LONG(cpu->r29);
                    524:        cpu->r30 = SWAP_LONG(cpu->r30);
                    525:        cpu->r31 = SWAP_LONG(cpu->r31);
                    526:        cpu->xip = SWAP_LONG(cpu->xip);
                    527:        cpu->xip_in_bd = SWAP_LONG(cpu->xip_in_bd);
                    528:        cpu->nip = SWAP_LONG(cpu->nip);
                    529: }
                    530: 
                    531: void
                    532: swap_m88k_thread_state_xrf_t(
                    533: m88k_thread_state_xrf_t *fpu,
                    534: enum byte_sex target_byte_sex)
                    535: {
                    536:     enum byte_sex host_byte_sex;
                    537: 
                    538:     struct swapped_m88k_fpsr {
                    539:        union {
                    540:            struct {
                    541:                unsigned        afinx:BIT_WIDTH(0);
                    542:                unsigned        afovf:BIT_WIDTH(1);
                    543:                unsigned        afunf:BIT_WIDTH(2);
                    544:                unsigned        afdvz:BIT_WIDTH(3);
                    545:                unsigned        afinv:BIT_WIDTH(4);
                    546:                unsigned        :BITS_WIDTH(15,5);
                    547:                unsigned        xmod:BIT_WIDTH(16);
                    548:                unsigned        :BITS_WIDTH(31,17);
                    549:            } fields;
                    550:            unsigned long word;
                    551:        } u;
                    552:     } ssr;
                    553:     struct swapped_m88k_fpcr {
                    554:        union {
                    555:            struct {
                    556:                unsigned        efinx:BIT_WIDTH(0);
                    557:                unsigned        efovf:BIT_WIDTH(1);
                    558:                unsigned        efunf:BIT_WIDTH(2);
                    559:                unsigned        efdvz:BIT_WIDTH(3);
                    560:                unsigned        efinv:BIT_WIDTH(4);
                    561:                unsigned        :BITS_WIDTH(13,5);
                    562:                m88k_fpcr_rm_t  rm:BITS_WIDTH(15,14);
                    563:                unsigned        :BITS_WIDTH(31,16);
                    564:            } fields;
                    565:            unsigned long word;
                    566:        } u;
                    567:     } scr;
                    568: 
                    569:        host_byte_sex = get_host_byte_sex();
                    570: 
                    571:        fpu->x1.x[0] = SWAP_LONG(fpu->x1.x[0]);
                    572:        fpu->x1.x[1] = SWAP_LONG(fpu->x1.x[1]);
                    573:        fpu->x1.x[2] = SWAP_LONG(fpu->x1.x[2]);
                    574:        fpu->x1.x[3] = SWAP_LONG(fpu->x1.x[3]);
                    575:        fpu->x2.x[0] = SWAP_LONG(fpu->x2.x[0]);
                    576:        fpu->x2.x[1] = SWAP_LONG(fpu->x2.x[1]);
                    577:        fpu->x2.x[2] = SWAP_LONG(fpu->x2.x[2]);
                    578:        fpu->x2.x[3] = SWAP_LONG(fpu->x2.x[3]);
                    579:        fpu->x3.x[0] = SWAP_LONG(fpu->x3.x[0]);
                    580:        fpu->x3.x[1] = SWAP_LONG(fpu->x3.x[1]);
                    581:        fpu->x3.x[2] = SWAP_LONG(fpu->x3.x[2]);
                    582:        fpu->x3.x[3] = SWAP_LONG(fpu->x3.x[3]);
                    583:        fpu->x4.x[0] = SWAP_LONG(fpu->x4.x[0]);
                    584:        fpu->x4.x[1] = SWAP_LONG(fpu->x4.x[1]);
                    585:        fpu->x4.x[2] = SWAP_LONG(fpu->x4.x[2]);
                    586:        fpu->x4.x[3] = SWAP_LONG(fpu->x4.x[3]);
                    587:        fpu->x5.x[0] = SWAP_LONG(fpu->x5.x[0]);
                    588:        fpu->x5.x[1] = SWAP_LONG(fpu->x5.x[1]);
                    589:        fpu->x5.x[2] = SWAP_LONG(fpu->x5.x[2]);
                    590:        fpu->x5.x[3] = SWAP_LONG(fpu->x5.x[3]);
                    591:        fpu->x6.x[0] = SWAP_LONG(fpu->x6.x[0]);
                    592:        fpu->x6.x[1] = SWAP_LONG(fpu->x6.x[1]);
                    593:        fpu->x6.x[2] = SWAP_LONG(fpu->x6.x[2]);
                    594:        fpu->x6.x[3] = SWAP_LONG(fpu->x6.x[3]);
                    595:        fpu->x7.x[0] = SWAP_LONG(fpu->x7.x[0]);
                    596:        fpu->x7.x[1] = SWAP_LONG(fpu->x7.x[1]);
                    597:        fpu->x7.x[2] = SWAP_LONG(fpu->x7.x[2]);
                    598:        fpu->x7.x[3] = SWAP_LONG(fpu->x7.x[3]);
                    599:        fpu->x8.x[0] = SWAP_LONG(fpu->x8.x[0]);
                    600:        fpu->x8.x[1] = SWAP_LONG(fpu->x8.x[1]);
                    601:        fpu->x8.x[2] = SWAP_LONG(fpu->x8.x[2]);
                    602:        fpu->x8.x[3] = SWAP_LONG(fpu->x8.x[3]);
                    603:        fpu->x9.x[0] = SWAP_LONG(fpu->x9.x[0]);
                    604:        fpu->x9.x[1] = SWAP_LONG(fpu->x9.x[1]);
                    605:        fpu->x9.x[2] = SWAP_LONG(fpu->x9.x[2]);
                    606:        fpu->x9.x[3] = SWAP_LONG(fpu->x9.x[3]);
                    607:        fpu->x10.x[0] = SWAP_LONG(fpu->x10.x[0]);
                    608:        fpu->x10.x[1] = SWAP_LONG(fpu->x10.x[1]);
                    609:        fpu->x10.x[2] = SWAP_LONG(fpu->x10.x[2]);
                    610:        fpu->x10.x[3] = SWAP_LONG(fpu->x10.x[3]);
                    611:        fpu->x11.x[0] = SWAP_LONG(fpu->x11.x[0]);
                    612:        fpu->x11.x[1] = SWAP_LONG(fpu->x11.x[1]);
                    613:        fpu->x11.x[2] = SWAP_LONG(fpu->x11.x[2]);
                    614:        fpu->x11.x[3] = SWAP_LONG(fpu->x11.x[3]);
                    615:        fpu->x12.x[0] = SWAP_LONG(fpu->x12.x[0]);
                    616:        fpu->x12.x[1] = SWAP_LONG(fpu->x12.x[1]);
                    617:        fpu->x12.x[2] = SWAP_LONG(fpu->x12.x[2]);
                    618:        fpu->x12.x[3] = SWAP_LONG(fpu->x12.x[3]);
                    619:        fpu->x13.x[0] = SWAP_LONG(fpu->x13.x[0]);
                    620:        fpu->x13.x[1] = SWAP_LONG(fpu->x13.x[1]);
                    621:        fpu->x13.x[2] = SWAP_LONG(fpu->x13.x[2]);
                    622:        fpu->x13.x[3] = SWAP_LONG(fpu->x13.x[3]);
                    623:        fpu->x14.x[0] = SWAP_LONG(fpu->x14.x[0]);
                    624:        fpu->x14.x[1] = SWAP_LONG(fpu->x14.x[1]);
                    625:        fpu->x14.x[2] = SWAP_LONG(fpu->x14.x[2]);
                    626:        fpu->x14.x[3] = SWAP_LONG(fpu->x14.x[3]);
                    627:        fpu->x15.x[0] = SWAP_LONG(fpu->x15.x[0]);
                    628:        fpu->x15.x[1] = SWAP_LONG(fpu->x15.x[1]);
                    629:        fpu->x15.x[2] = SWAP_LONG(fpu->x15.x[2]);
                    630:        fpu->x15.x[3] = SWAP_LONG(fpu->x15.x[3]);
                    631:        fpu->x16.x[0] = SWAP_LONG(fpu->x16.x[0]);
                    632:        fpu->x16.x[1] = SWAP_LONG(fpu->x16.x[1]);
                    633:        fpu->x16.x[2] = SWAP_LONG(fpu->x16.x[2]);
                    634:        fpu->x16.x[3] = SWAP_LONG(fpu->x16.x[3]);
                    635:        fpu->x17.x[0] = SWAP_LONG(fpu->x17.x[0]);
                    636:        fpu->x17.x[1] = SWAP_LONG(fpu->x17.x[1]);
                    637:        fpu->x17.x[2] = SWAP_LONG(fpu->x17.x[2]);
                    638:        fpu->x17.x[3] = SWAP_LONG(fpu->x17.x[3]);
                    639:        fpu->x18.x[0] = SWAP_LONG(fpu->x18.x[0]);
                    640:        fpu->x18.x[1] = SWAP_LONG(fpu->x18.x[1]);
                    641:        fpu->x18.x[2] = SWAP_LONG(fpu->x18.x[2]);
                    642:        fpu->x18.x[3] = SWAP_LONG(fpu->x18.x[3]);
                    643:        fpu->x19.x[0] = SWAP_LONG(fpu->x19.x[0]);
                    644:        fpu->x19.x[1] = SWAP_LONG(fpu->x19.x[1]);
                    645:        fpu->x19.x[2] = SWAP_LONG(fpu->x19.x[2]);
                    646:        fpu->x19.x[3] = SWAP_LONG(fpu->x19.x[3]);
                    647:        fpu->x20.x[0] = SWAP_LONG(fpu->x20.x[0]);
                    648:        fpu->x20.x[1] = SWAP_LONG(fpu->x20.x[1]);
                    649:        fpu->x20.x[2] = SWAP_LONG(fpu->x20.x[2]);
                    650:        fpu->x20.x[3] = SWAP_LONG(fpu->x20.x[3]);
                    651:        fpu->x21.x[0] = SWAP_LONG(fpu->x21.x[0]);
                    652:        fpu->x21.x[1] = SWAP_LONG(fpu->x21.x[1]);
                    653:        fpu->x21.x[2] = SWAP_LONG(fpu->x21.x[2]);
                    654:        fpu->x21.x[3] = SWAP_LONG(fpu->x21.x[3]);
                    655:        fpu->x22.x[0] = SWAP_LONG(fpu->x22.x[0]);
                    656:        fpu->x22.x[1] = SWAP_LONG(fpu->x22.x[1]);
                    657:        fpu->x22.x[2] = SWAP_LONG(fpu->x22.x[2]);
                    658:        fpu->x22.x[3] = SWAP_LONG(fpu->x22.x[3]);
                    659:        fpu->x23.x[0] = SWAP_LONG(fpu->x23.x[0]);
                    660:        fpu->x23.x[1] = SWAP_LONG(fpu->x23.x[1]);
                    661:        fpu->x23.x[2] = SWAP_LONG(fpu->x23.x[2]);
                    662:        fpu->x23.x[3] = SWAP_LONG(fpu->x23.x[3]);
                    663:        fpu->x24.x[0] = SWAP_LONG(fpu->x24.x[0]);
                    664:        fpu->x24.x[1] = SWAP_LONG(fpu->x24.x[1]);
                    665:        fpu->x24.x[2] = SWAP_LONG(fpu->x24.x[2]);
                    666:        fpu->x24.x[3] = SWAP_LONG(fpu->x24.x[3]);
                    667:        fpu->x25.x[0] = SWAP_LONG(fpu->x25.x[0]);
                    668:        fpu->x25.x[1] = SWAP_LONG(fpu->x25.x[1]);
                    669:        fpu->x25.x[2] = SWAP_LONG(fpu->x25.x[2]);
                    670:        fpu->x25.x[3] = SWAP_LONG(fpu->x25.x[3]);
                    671:        fpu->x26.x[0] = SWAP_LONG(fpu->x26.x[0]);
                    672:        fpu->x26.x[1] = SWAP_LONG(fpu->x26.x[1]);
                    673:        fpu->x26.x[2] = SWAP_LONG(fpu->x26.x[2]);
                    674:        fpu->x26.x[3] = SWAP_LONG(fpu->x26.x[3]);
                    675:        fpu->x27.x[0] = SWAP_LONG(fpu->x27.x[0]);
                    676:        fpu->x27.x[1] = SWAP_LONG(fpu->x27.x[1]);
                    677:        fpu->x27.x[2] = SWAP_LONG(fpu->x27.x[2]);
                    678:        fpu->x27.x[3] = SWAP_LONG(fpu->x27.x[3]);
                    679:        fpu->x28.x[0] = SWAP_LONG(fpu->x28.x[0]);
                    680:        fpu->x28.x[1] = SWAP_LONG(fpu->x28.x[1]);
                    681:        fpu->x28.x[2] = SWAP_LONG(fpu->x28.x[2]);
                    682:        fpu->x28.x[3] = SWAP_LONG(fpu->x28.x[3]);
                    683:        fpu->x29.x[0] = SWAP_LONG(fpu->x29.x[0]);
                    684:        fpu->x29.x[1] = SWAP_LONG(fpu->x29.x[1]);
                    685:        fpu->x29.x[2] = SWAP_LONG(fpu->x29.x[2]);
                    686:        fpu->x29.x[3] = SWAP_LONG(fpu->x29.x[3]);
                    687:        fpu->x30.x[0] = SWAP_LONG(fpu->x30.x[0]);
                    688:        fpu->x30.x[1] = SWAP_LONG(fpu->x30.x[1]);
                    689:        fpu->x30.x[2] = SWAP_LONG(fpu->x30.x[2]);
                    690:        fpu->x30.x[3] = SWAP_LONG(fpu->x30.x[3]);
                    691:        fpu->x31.x[0] = SWAP_LONG(fpu->x31.x[0]);
                    692:        fpu->x31.x[1] = SWAP_LONG(fpu->x31.x[1]);
                    693:        fpu->x31.x[2] = SWAP_LONG(fpu->x31.x[2]);
                    694:        fpu->x31.x[3] = SWAP_LONG(fpu->x31.x[3]);
                    695: 
                    696:        if(target_byte_sex == host_byte_sex){
                    697:            memcpy(&ssr, &(fpu->fpsr), sizeof(struct swapped_m88k_fpsr));
                    698:            ssr.u.word = SWAP_LONG(ssr.u.word);
                    699:            fpu->fpsr.afinx = ssr.u.fields.afinx;
                    700:            fpu->fpsr.afovf = ssr.u.fields.afovf;
                    701:            fpu->fpsr.afunf = ssr.u.fields.afunf;
                    702:            fpu->fpsr.afdvz = ssr.u.fields.afdvz;
                    703:            fpu->fpsr.afinv = ssr.u.fields.afinv;
                    704:            fpu->fpsr.xmod = ssr.u.fields.xmod;
                    705: 
                    706:            memcpy(&scr, &(fpu->fpcr), sizeof(struct swapped_m88k_fpcr));
                    707:            scr.u.word = SWAP_LONG(scr.u.word);
                    708:            fpu->fpcr.efinx = scr.u.fields.efinx;
                    709:            fpu->fpcr.efovf = scr.u.fields.efovf;
                    710:            fpu->fpcr.efunf = scr.u.fields.efunf;
                    711:            fpu->fpcr.efdvz = scr.u.fields.efdvz;
                    712:            fpu->fpcr.efinv = scr.u.fields.efinv;
                    713:            fpu->fpcr.rm = scr.u.fields.rm;
                    714:        }
                    715:        else{
                    716:            ssr.u.fields.afinx = fpu->fpsr.afinx;
                    717:            ssr.u.fields.afovf = fpu->fpsr.afovf;
                    718:            ssr.u.fields.afunf = fpu->fpsr.afunf;
                    719:            ssr.u.fields.afdvz = fpu->fpsr.afdvz;
                    720:            ssr.u.fields.afinv = fpu->fpsr.afinv;
                    721:            ssr.u.fields.xmod = fpu->fpsr.xmod;
                    722:            ssr.u.word = SWAP_LONG(ssr.u.word);
                    723:            memcpy(&(fpu->fpsr), &ssr, sizeof(struct swapped_m88k_fpsr));
                    724: 
                    725:            scr.u.fields.efinx = fpu->fpcr.efinx;
                    726:            scr.u.fields.efovf = fpu->fpcr.efovf;
                    727:            scr.u.fields.efunf = fpu->fpcr.efunf;
                    728:            scr.u.fields.efdvz = fpu->fpcr.efdvz;
                    729:            scr.u.fields.efinv = fpu->fpcr.efinv;
                    730:            scr.u.fields.rm = fpu->fpcr.rm;
                    731:            scr.u.word = SWAP_LONG(scr.u.word);
                    732:            memcpy(&(fpu->fpcr), &scr, sizeof(struct swapped_m88k_fpcr));
                    733:        }
                    734: }
                    735: 
                    736: void
                    737: swap_m88k_thread_state_user_t(
                    738: m88k_thread_state_user_t *user,
                    739: enum byte_sex target_byte_sex)
                    740: {
                    741:        user->user = SWAP_LONG(user->user);
                    742: }
                    743: 
                    744: void
                    745: swap_m88110_thread_state_impl_t(
                    746: m88110_thread_state_impl_t *spu,
                    747: enum byte_sex target_byte_sex)
                    748: {
                    749:     unsigned long i;
                    750:     enum byte_sex host_byte_sex;
                    751: 
                    752:     struct swapped_m88110_bp_ctrl {
                    753:        union {
                    754:            struct {
                    755:                unsigned        v:BIT_WIDTH(0);
                    756:                m88110_match_t  addr_match:BITS_WIDTH(12,1);
                    757:                unsigned        :BITS_WIDTH(26,13);
                    758:                unsigned        rwm:BIT_WIDTH(27);
                    759:                unsigned        rw:BIT_WIDTH(28);
                    760:                unsigned        :BITS_WIDTH(31,29);
                    761:            } fields;
                    762:            unsigned long word;
                    763:        } u;
                    764:     } sbpc;
                    765: 
                    766:     struct swap_m88110_psr {
                    767:        union {
                    768:            struct {
                    769:                unsigned        :BITS_WIDTH(1,0);
                    770:                unsigned        mxm_dis:BIT_WIDTH(2);
                    771:                unsigned        sfu1dis:BIT_WIDTH(3);
                    772:                unsigned        :BITS_WIDTH(22,4);
                    773:                unsigned        trace:BIT_WIDTH(23);
                    774:                unsigned        :BIT_WIDTH(24);
                    775:                unsigned        sm:BIT_WIDTH(25);
                    776:                unsigned        sgn_imd:BIT_WIDTH(26);
                    777:                unsigned        :BIT_WIDTH(27);
                    778:                unsigned        c:BIT_WIDTH(28);
                    779:                unsigned        se:BIT_WIDTH(29);
                    780:                unsigned        le:BIT_WIDTH(30);
                    781:                unsigned        supr:BIT_WIDTH(31);
                    782:            } fields;
                    783:            unsigned long word;
                    784:        } u;
                    785:     } spsr;
                    786: 
                    787:     struct swapped_m88110_fp_trap_status {
                    788:        union {
                    789:            struct {
                    790:                unsigned        efinx:BIT_WIDTH(0);
                    791:                unsigned        efovf:BIT_WIDTH(1);
                    792:                unsigned        efunf:BIT_WIDTH(2);
                    793:                unsigned        efdvz:BIT_WIDTH(3);
                    794:                unsigned        efinv:BIT_WIDTH(4);
                    795:                unsigned        priv:BIT_WIDTH(5);
                    796:                unsigned        unimp:BIT_WIDTH(6);
                    797:                unsigned        int:BIT_WIDTH(7);
                    798:                unsigned        sfu1_disabled:BIT_WIDTH(8);
                    799:                unsigned        :BITS_WIDTH(13,9);
                    800:                m88110_iresult_size_t   iresult_size:BITS_WIDTH(15,14);
                    801:                unsigned        :BITS_WIDTH(31,16);
                    802:            } fields;
                    803:            unsigned long word;
                    804:        } u;
                    805:     } sfps;
                    806: 
                    807:        host_byte_sex = get_host_byte_sex();
                    808: 
                    809:        if(target_byte_sex == host_byte_sex){
                    810:            for(i = 0; i < M88110_N_DATA_BP; i++){
                    811:                spu->data_bp[i].addr = SWAP_LONG(spu->data_bp[i].addr);
                    812:                memcpy(&sbpc, &(spu->data_bp[i].ctrl),
                    813:                       sizeof(struct swapped_m88110_bp_ctrl));
                    814:                sbpc.u.word = SWAP_LONG(sbpc.u.word);
                    815:                spu->data_bp[i].ctrl.v = sbpc.u.fields.v;
                    816:                spu->data_bp[i].ctrl.addr_match = sbpc.u.fields.addr_match;
                    817:                spu->data_bp[i].ctrl.rwm = sbpc.u.fields.rwm;
                    818:                spu->data_bp[i].ctrl.rw = sbpc.u.fields.rw;
                    819:            }
                    820: 
                    821:            memcpy(&spsr, &(spu->psr), sizeof(struct swap_m88110_psr));
                    822:            spsr.u.word = SWAP_LONG(spsr.u.word);
                    823:            spu->psr.mxm_dis = spsr.u.fields.mxm_dis;
                    824:            spu->psr.sfu1dis = spsr.u.fields.sfu1dis;
                    825:            spu->psr.trace = spsr.u.fields.trace;
                    826:            spu->psr.sm = spsr.u.fields.sm;
                    827:            spu->psr.sgn_imd = spsr.u.fields.sgn_imd;
                    828:            spu->psr.c = spsr.u.fields.c;
                    829:            spu->psr.se = spsr.u.fields.se;
                    830:            spu->psr.le = spsr.u.fields.le;
                    831:            spu->psr.supr = spsr.u.fields.supr;
                    832: 
                    833:            memcpy(&sfps, &(spu->fp_trap_status),
                    834:                   sizeof(struct swapped_m88110_fp_trap_status));
                    835:            sfps.u.word = SWAP_LONG(sfps.u.word);
                    836:            spu->fp_trap_status.efinx = sfps.u.fields.efinx;
                    837:            spu->fp_trap_status.efovf = sfps.u.fields.efovf;
                    838:            spu->fp_trap_status.efunf = sfps.u.fields.efunf;
                    839:            spu->fp_trap_status.efdvz = sfps.u.fields.efdvz;
                    840:            spu->fp_trap_status.efinv = sfps.u.fields.efinv;
                    841:            spu->fp_trap_status.priv = sfps.u.fields.priv;
                    842:            spu->fp_trap_status.unimp = sfps.u.fields.unimp;
                    843:            spu->fp_trap_status.sfu1_disabled = sfps.u.fields.sfu1_disabled;
                    844:            spu->fp_trap_status.iresult_size = sfps.u.fields.iresult_size;
                    845:        }
                    846:        else{
                    847:            for(i = 0; i < M88110_N_DATA_BP; i++){
                    848:                spu->data_bp[i].addr = SWAP_LONG(spu->data_bp[i].addr);
                    849:                sbpc.u.fields.v = spu->data_bp[i].ctrl.v;
                    850:                sbpc.u.fields.addr_match = spu->data_bp[i].ctrl.addr_match;
                    851:                sbpc.u.fields.rwm = spu->data_bp[i].ctrl.rwm;
                    852:                sbpc.u.fields.rw = spu->data_bp[i].ctrl.rw;
                    853:                sbpc.u.word = SWAP_LONG(sbpc.u.word);
                    854:                memcpy(&(spu->data_bp[i].ctrl), &sbpc,
                    855:                       sizeof(struct swapped_m88110_bp_ctrl));
                    856:            }
                    857: 
                    858:            spsr.u.fields.mxm_dis = spu->psr.mxm_dis;
                    859:            spsr.u.fields.sfu1dis = spu->psr.sfu1dis;
                    860:            spsr.u.fields.trace = spu->psr.trace;
                    861:            spsr.u.fields.sm = spu->psr.sm;
                    862:            spsr.u.fields.sgn_imd = spu->psr.sgn_imd;
                    863:            spsr.u.fields.c = spu->psr.c;
                    864:            spsr.u.fields.se = spu->psr.se;
                    865:            spsr.u.fields.le = spu->psr.le;
                    866:            spsr.u.fields.supr = spu->psr.supr;
                    867:            spsr.u.word = SWAP_LONG(spsr.u.word);
                    868:            memcpy(&(spu->psr), &spsr, sizeof(struct swap_m88110_psr));
                    869: 
                    870:            sfps.u.fields.efinx = spu->fp_trap_status.efinx;
                    871:            sfps.u.fields.efovf = spu->fp_trap_status.efovf;
                    872:            sfps.u.fields.efunf = spu->fp_trap_status.efunf;
                    873:            sfps.u.fields.efdvz = spu->fp_trap_status.efdvz;
                    874:            sfps.u.fields.efinv = spu->fp_trap_status.efinv;
                    875:            sfps.u.fields.priv = spu->fp_trap_status.priv;
                    876:            sfps.u.fields.unimp = spu->fp_trap_status.unimp;
                    877:            sfps.u.fields.sfu1_disabled = spu->fp_trap_status.sfu1_disabled;
                    878:            sfps.u.fields.iresult_size = spu->fp_trap_status.iresult_size;
                    879:            sfps.u.word = SWAP_LONG(sfps.u.word);
                    880:            memcpy(&(spu->fp_trap_status), &sfps,
                    881:                   sizeof(struct swapped_m88110_fp_trap_status));
                    882:        }
                    883:        spu->intermediate_result.x[0] =
                    884:            SWAP_LONG(spu->intermediate_result.x[0]);
                    885:        spu->intermediate_result.x[1] =
                    886:            SWAP_LONG(spu->intermediate_result.x[1]);
                    887:        spu->intermediate_result.x[2] =
                    888:            SWAP_LONG(spu->intermediate_result.x[2]);
                    889:        spu->intermediate_result.x[3] =
                    890:            SWAP_LONG(spu->intermediate_result.x[3]);
                    891: }
                    892: 
                    893: void
                    894: swap_i860_thread_state_regs(
                    895: struct i860_thread_state_regs *cpu,
                    896: enum byte_sex target_byte_sex)
                    897: {
                    898:     unsigned long i;
                    899: 
                    900:        for(i = 0; i < 31; i++)
                    901:            cpu->ireg[i] = SWAP_LONG(cpu->ireg[i]);
                    902:        for(i = 0; i < 30; i++)
                    903:            cpu->freg[i] = SWAP_LONG(cpu->freg[i]);
                    904:        cpu->psr = SWAP_LONG(cpu->psr);
                    905:        cpu->epsr = SWAP_LONG(cpu->epsr);
                    906:        cpu->db = SWAP_LONG(cpu->db);
                    907:        cpu->pc = SWAP_LONG(cpu->pc);
                    908:        cpu->_padding_ = SWAP_LONG(cpu->_padding_);
                    909:        cpu->Mres3 = SWAP_DOUBLE(cpu->Mres3);
                    910:        cpu->Ares3 = SWAP_DOUBLE(cpu->Ares3);
                    911:        cpu->Mres2 = SWAP_DOUBLE(cpu->Mres2);
                    912:        cpu->Ares2 = SWAP_DOUBLE(cpu->Ares2);
                    913:        cpu->Mres1 = SWAP_DOUBLE(cpu->Mres1);
                    914:        cpu->Ares1 = SWAP_DOUBLE(cpu->Ares1);
                    915:        cpu->Ires1 = SWAP_DOUBLE(cpu->Ires1);
                    916:        cpu->Lres3m = SWAP_DOUBLE(cpu->Lres3m);
                    917:        cpu->Lres2m = SWAP_DOUBLE(cpu->Lres2m);
                    918:        cpu->Lres1m = SWAP_DOUBLE(cpu->Lres1m);
                    919:        cpu->KR = SWAP_DOUBLE(cpu->KR);
                    920:        cpu->KI = SWAP_DOUBLE(cpu->KI);
                    921:        cpu->T = SWAP_DOUBLE(cpu->T);
                    922:        cpu->Fsr3 = SWAP_LONG(cpu->Fsr3);
                    923:        cpu->Fsr2 = SWAP_LONG(cpu->Fsr2);
                    924:        cpu->Fsr1 = SWAP_LONG(cpu->Fsr1);
                    925:        cpu->Mergelo32 = SWAP_LONG(cpu->Mergelo32);
                    926:        cpu->Mergehi32 = SWAP_LONG(cpu->Mergehi32);
                    927: }
                    928: 
                    929: void
                    930: swap_i386_thread_state(
                    931: i386_thread_state_t *cpu,
                    932: enum byte_sex target_byte_sex)
                    933: {
                    934:        cpu->eax = SWAP_LONG(cpu->eax);
                    935:        cpu->ebx = SWAP_LONG(cpu->ebx);
                    936:        cpu->ecx = SWAP_LONG(cpu->ecx);
                    937:        cpu->edx = SWAP_LONG(cpu->edx);
                    938:        cpu->edi = SWAP_LONG(cpu->edi);
                    939:        cpu->esi = SWAP_LONG(cpu->esi);
                    940:        cpu->ebp = SWAP_LONG(cpu->ebp);
                    941:        cpu->esp = SWAP_LONG(cpu->esp);
                    942:        cpu->ss = SWAP_LONG(cpu->ss);
                    943:        cpu->eflags = SWAP_LONG(cpu->eflags);
                    944:        cpu->eip = SWAP_LONG(cpu->eip);
                    945:        cpu->cs = SWAP_LONG(cpu->cs);
                    946:        cpu->ds = SWAP_LONG(cpu->ds);
                    947:        cpu->es = SWAP_LONG(cpu->es);
                    948:        cpu->fs = SWAP_LONG(cpu->fs);
                    949:        cpu->gs = SWAP_LONG(cpu->gs);
                    950: }
                    951: 
                    952: void
                    953: swap_i386_thread_fpstate(
                    954: i386_thread_fpstate_t *fpu,
                    955: enum byte_sex target_byte_sex)
                    956: {
                    957:     struct swapped_fp_control {
                    958:        union {
                    959:            struct {
                    960:                unsigned short
                    961:                            :3,
                    962:                    /*inf*/ :1,
                    963:                    rc      :2,
                    964:                    pc      :2,
                    965:                            :2,
                    966:                    precis  :1,
                    967:                    undfl   :1,
                    968:                    ovrfl   :1,
                    969:                    zdiv    :1,
                    970:                    denorm  :1,
                    971:                    invalid :1;
                    972:            } fields;
                    973:            unsigned short half;
                    974:        } u;
                    975:     } sfpc;
                    976: 
                    977:     struct swapped_fp_status {
                    978:        union {
                    979:            struct {
                    980:                unsigned short
                    981:                    busy    :1,
                    982:                    c3      :1,
                    983:                    tos     :3,
                    984:                    c2      :1,
                    985:                    c1      :1,
                    986:                    c0      :1,
                    987:                    errsumm :1,
                    988:                    stkflt  :1,
                    989:                    precis  :1,
                    990:                    undfl   :1,
                    991:                    ovrfl   :1,
                    992:                    zdiv    :1,
                    993:                    denorm  :1,
                    994:                    invalid :1;
                    995:            } fields;
                    996:            unsigned short half;
                    997:        } u;
                    998:     } sfps;
                    999: 
                   1000:     struct swapped_fp_tag {
                   1001:        union {
                   1002:            struct {
                   1003:                unsigned short
                   1004:                    tag7 :2,
                   1005:                    tag6 :2,
                   1006:                    tag5 :2,
                   1007:                    tag4 :2,
                   1008:                    tag3 :2,
                   1009:                    tag2 :2,
                   1010:                    tag1 :2,
                   1011:                    tag0 :2;
                   1012:            } fields;
                   1013:            unsigned short half;
                   1014:        } u;
                   1015:     } sfpt;
                   1016: 
                   1017:     struct swapped_fp_data_reg {
                   1018:        unsigned short mant;
                   1019:        unsigned short mant1 :16,
                   1020:                       mant2 :16,
                   1021:                       mant3 :16;
                   1022:        union {
                   1023:            struct {
                   1024:                unsigned short sign :1,
                   1025:                               exp  :15;
                   1026:            } fields;
                   1027:            unsigned short half;
                   1028:        } u;
                   1029:     } sfpd;
                   1030: 
                   1031:     struct swapped_sel {
                   1032:        union {
                   1033:            struct {
                   1034:                unsigned short
                   1035:                    index :13,
                   1036:                    ti    :1,
                   1037:                    rpl   :2;
                   1038:            } fields;
                   1039:            unsigned short half;
                   1040:        } u;
                   1041:     } ss;
                   1042: 
                   1043:     enum byte_sex host_byte_sex;
                   1044:     unsigned long i;
                   1045: 
                   1046:        host_byte_sex = get_host_byte_sex();
                   1047: 
                   1048:        fpu->environ.ip = SWAP_LONG(fpu->environ.ip);
                   1049:        fpu->environ.opcode = SWAP_SHORT(fpu->environ.opcode);
                   1050:        fpu->environ.dp = SWAP_LONG(fpu->environ.dp);
                   1051: 
                   1052:        if(target_byte_sex == host_byte_sex){
                   1053:            memcpy(&sfpc, &(fpu->environ.control),
                   1054:                   sizeof(struct swapped_fp_control));
                   1055:            sfpc.u.half = SWAP_SHORT(sfpc.u.half);
                   1056:            fpu->environ.control.rc = sfpc.u.fields.rc;
                   1057:            fpu->environ.control.pc = sfpc.u.fields.pc;
                   1058:            fpu->environ.control.precis = sfpc.u.fields.precis;
                   1059:            fpu->environ.control.undfl = sfpc.u.fields.undfl;
                   1060:            fpu->environ.control.ovrfl = sfpc.u.fields.ovrfl;
                   1061:            fpu->environ.control.zdiv = sfpc.u.fields.zdiv;
                   1062:            fpu->environ.control.denorm = sfpc.u.fields.denorm;
                   1063:            fpu->environ.control.invalid = sfpc.u.fields.invalid;
                   1064: 
                   1065:            memcpy(&sfps, &(fpu->environ.status),
                   1066:                   sizeof(struct swapped_fp_status));
                   1067:            sfps.u.half = SWAP_SHORT(sfps.u.half);
                   1068:            fpu->environ.status.busy = sfps.u.fields.busy;
                   1069:            fpu->environ.status.c3 = sfps.u.fields.c3;
                   1070:            fpu->environ.status.tos = sfps.u.fields.tos;
                   1071:            fpu->environ.status.c2 = sfps.u.fields.c2;
                   1072:            fpu->environ.status.c1 = sfps.u.fields.c1;
                   1073:            fpu->environ.status.c0 = sfps.u.fields.c0;
                   1074:            fpu->environ.status.errsumm = sfps.u.fields.errsumm;
                   1075:            fpu->environ.status.stkflt = sfps.u.fields.stkflt;
                   1076:            fpu->environ.status.precis = sfps.u.fields.precis;
                   1077:            fpu->environ.status.undfl = sfps.u.fields.undfl;
                   1078:            fpu->environ.status.ovrfl = sfps.u.fields.ovrfl;
                   1079:            fpu->environ.status.zdiv = sfps.u.fields.zdiv;
                   1080:            fpu->environ.status.denorm = sfps.u.fields.denorm;
                   1081:            fpu->environ.status.invalid = sfps.u.fields.invalid;
                   1082: 
                   1083:            memcpy(&sfpt, &(fpu->environ.tag),
                   1084:                   sizeof(struct swapped_fp_tag));
                   1085:            sfpt.u.half = SWAP_SHORT(sfpt.u.half);
                   1086:            fpu->environ.tag.tag7 = sfpt.u.fields.tag7;
                   1087:            fpu->environ.tag.tag6 = sfpt.u.fields.tag6;
                   1088:            fpu->environ.tag.tag5 = sfpt.u.fields.tag5;
                   1089:            fpu->environ.tag.tag4 = sfpt.u.fields.tag4;
                   1090:            fpu->environ.tag.tag3 = sfpt.u.fields.tag3;
                   1091:            fpu->environ.tag.tag2 = sfpt.u.fields.tag2;
                   1092:            fpu->environ.tag.tag1 = sfpt.u.fields.tag1;
                   1093:            fpu->environ.tag.tag0 = sfpt.u.fields.tag0;
                   1094: 
                   1095:            memcpy(&ss, &(fpu->environ.cs),
                   1096:                   sizeof(struct swapped_sel));
                   1097:            ss.u.half = SWAP_SHORT(ss.u.half);
                   1098:            fpu->environ.cs.index = ss.u.fields.index;
                   1099:            fpu->environ.cs.ti = ss.u.fields.ti;
                   1100:            fpu->environ.cs.rpl = ss.u.fields.rpl;
                   1101: 
                   1102:            memcpy(&ss, &(fpu->environ.ds),
                   1103:                   sizeof(struct swapped_sel));
                   1104:            ss.u.half = SWAP_SHORT(ss.u.half);
                   1105:            fpu->environ.ds.index = ss.u.fields.index;
                   1106:            fpu->environ.ds.ti = ss.u.fields.ti;
                   1107:            fpu->environ.ds.rpl = ss.u.fields.rpl;
                   1108:        
                   1109:            for(i = 0; i < 8; i++){
                   1110:                memcpy(&sfpd, &(fpu->stack.ST[i]),
                   1111:                       sizeof(struct swapped_fp_data_reg));
                   1112:                fpu->stack.ST[i].mant = SWAP_SHORT(sfpd.mant);
                   1113:                fpu->stack.ST[i].mant1 = SWAP_SHORT(sfpd.mant1);
                   1114:                fpu->stack.ST[i].mant2 = SWAP_SHORT(sfpd.mant2);
                   1115:                fpu->stack.ST[i].mant3 = SWAP_SHORT(sfpd.mant3);
                   1116:                sfpd.u.half = SWAP_SHORT(sfpd.u.half);
                   1117:                fpu->stack.ST[i].exp = sfpd.u.fields.exp;
                   1118:                fpu->stack.ST[i].sign = sfpd.u.fields.sign;
                   1119:            }
                   1120:        }
                   1121:        else{
                   1122:            sfpc.u.fields.rc = fpu->environ.control.rc;
                   1123:            sfpc.u.fields.pc = fpu->environ.control.pc;
                   1124:            sfpc.u.fields.precis = fpu->environ.control.precis;
                   1125:            sfpc.u.fields.undfl = fpu->environ.control.undfl;
                   1126:            sfpc.u.fields.ovrfl = fpu->environ.control.ovrfl;
                   1127:            sfpc.u.fields.zdiv = fpu->environ.control.zdiv;
                   1128:            sfpc.u.fields.denorm = fpu->environ.control.denorm;
                   1129:            sfpc.u.fields.invalid = fpu->environ.control.invalid;
                   1130:            sfpc.u.half = SWAP_SHORT(sfpc.u.half);
                   1131:            memcpy(&(fpu->environ.control), &sfpc,
                   1132:                   sizeof(struct swapped_fp_control));
                   1133: 
                   1134:            sfps.u.fields.busy = fpu->environ.status.busy;
                   1135:            sfps.u.fields.c3 = fpu->environ.status.c3;
                   1136:            sfps.u.fields.tos = fpu->environ.status.tos;
                   1137:            sfps.u.fields.c2 = fpu->environ.status.c2;
                   1138:            sfps.u.fields.c1 = fpu->environ.status.c1;
                   1139:            sfps.u.fields.c0 = fpu->environ.status.c0;
                   1140:            sfps.u.fields.errsumm = fpu->environ.status.errsumm;
                   1141:            sfps.u.fields.stkflt = fpu->environ.status.stkflt;
                   1142:            sfps.u.fields.precis = fpu->environ.status.precis;
                   1143:            sfps.u.fields.undfl = fpu->environ.status.undfl;
                   1144:            sfps.u.fields.ovrfl = fpu->environ.status.ovrfl;
                   1145:            sfps.u.fields.zdiv = fpu->environ.status.zdiv;
                   1146:            sfps.u.fields.denorm = fpu->environ.status.denorm;
                   1147:            sfps.u.fields.invalid = fpu->environ.status.invalid;
                   1148:            sfps.u.half = SWAP_SHORT(sfps.u.half);
                   1149:            memcpy(&(fpu->environ.status), &sfps,
                   1150:                   sizeof(struct swapped_fp_status));
                   1151: 
                   1152:            sfpt.u.fields.tag7 = fpu->environ.tag.tag7;
                   1153:            sfpt.u.fields.tag6 = fpu->environ.tag.tag6;
                   1154:            sfpt.u.fields.tag5 = fpu->environ.tag.tag5;
                   1155:            sfpt.u.fields.tag4 = fpu->environ.tag.tag4;
                   1156:            sfpt.u.fields.tag3 = fpu->environ.tag.tag3;
                   1157:            sfpt.u.fields.tag2 = fpu->environ.tag.tag2;
                   1158:            sfpt.u.fields.tag1 = fpu->environ.tag.tag1;
                   1159:            sfpt.u.fields.tag0 = fpu->environ.tag.tag0;
                   1160:            sfpt.u.half = SWAP_SHORT(sfpt.u.half);
                   1161:            memcpy(&(fpu->environ.tag), &sfpt,
                   1162:                   sizeof(struct swapped_fp_tag));
                   1163: 
                   1164:            ss.u.fields.index = fpu->environ.cs.index;
                   1165:            ss.u.fields.ti = fpu->environ.cs.ti;
                   1166:            ss.u.fields.rpl = fpu->environ.cs.rpl;
                   1167:            ss.u.half = SWAP_SHORT(ss.u.half);
                   1168:            memcpy(&(fpu->environ.cs), &ss,
                   1169:                   sizeof(struct swapped_sel));
                   1170: 
                   1171:            ss.u.fields.index = fpu->environ.ds.index;
                   1172:            ss.u.fields.ti = fpu->environ.ds.ti;
                   1173:            ss.u.fields.rpl = fpu->environ.ds.rpl;
                   1174:            ss.u.half = SWAP_SHORT(ss.u.half);
                   1175:            memcpy(&(fpu->environ.cs), &ss,
                   1176:                   sizeof(struct swapped_sel));
                   1177: 
                   1178:            for(i = 0; i < 8; i++){
                   1179:                sfpd.mant = SWAP_SHORT(fpu->stack.ST[i].mant);
                   1180:                sfpd.mant1 = SWAP_SHORT(fpu->stack.ST[i].mant1);
                   1181:                sfpd.mant2 = SWAP_SHORT(fpu->stack.ST[i].mant2);
                   1182:                sfpd.mant3 = SWAP_SHORT(fpu->stack.ST[i].mant3);
                   1183:                sfpd.u.fields.exp = fpu->stack.ST[i].exp;
                   1184:                sfpd.u.fields.sign = fpu->stack.ST[i].sign;
                   1185:                sfpd.u.half = SWAP_SHORT(sfpd.u.half);
                   1186:                memcpy(&(fpu->stack.ST[i]), &sfpd,
                   1187:                       sizeof(struct swapped_fp_data_reg));
                   1188:            }
                   1189:        }
                   1190: }
                   1191: 
                   1192: void
                   1193: swap_i386_thread_exceptstate(
                   1194: i386_thread_exceptstate_t *exc,
                   1195: enum byte_sex target_byte_sex)
                   1196: {
                   1197:     struct swapped_err_code {
                   1198:        union {
                   1199:            struct err_code_normal {
                   1200:                unsigned int            :16,
                   1201:                                index   :13,
                   1202:                                tbl     :2,
                   1203:                                ext     :1;
                   1204:            } normal;
                   1205:            struct err_code_pgfault {
                   1206:                unsigned int            :29,
                   1207:                                user    :1,
                   1208:                                wrtflt  :1,
                   1209:                                prot    :1;
                   1210:            } pgfault;
                   1211:            unsigned long word;
                   1212:        } u;
                   1213:     } sec;
                   1214:     unsigned long word;
                   1215:     enum byte_sex host_byte_sex;
                   1216: 
                   1217:        host_byte_sex = get_host_byte_sex();
                   1218: 
                   1219:        exc->trapno = SWAP_LONG(exc->trapno);
                   1220:        if(exc->trapno == 14){
                   1221:            if(target_byte_sex == host_byte_sex){
                   1222:                memcpy(&sec, &(exc->err), sizeof(struct swapped_err_code));
                   1223:                sec.u.word = SWAP_LONG(sec.u.word);
                   1224:                exc->err.pgfault.user   = sec.u.pgfault.user;
                   1225:                exc->err.pgfault.wrtflt = sec.u.pgfault.wrtflt;
                   1226:                exc->err.pgfault.prot   = sec.u.pgfault.prot;
                   1227:            }
                   1228:            else{
                   1229:                sec.u.pgfault.prot   = exc->err.pgfault.prot;
                   1230:                sec.u.pgfault.wrtflt = exc->err.pgfault.wrtflt;
                   1231:                sec.u.pgfault.user   = exc->err.pgfault.user;
                   1232:                sec.u.word = SWAP_LONG(sec.u.word);
                   1233:                memcpy(&(exc->err), &sec, sizeof(struct swapped_err_code));
                   1234:            }
                   1235:        }
                   1236:        else{
                   1237:            if(target_byte_sex == host_byte_sex){
                   1238:                memcpy(&sec, &(exc->err), sizeof(struct swapped_err_code));
                   1239:                sec.u.word = SWAP_LONG(sec.u.word);
                   1240:                word = sec.u.normal.index;
                   1241:                exc->err.normal.index = SWAP_LONG(word);
                   1242:                exc->err.normal.tbl   = sec.u.normal.tbl;
                   1243:                exc->err.normal.ext   = sec.u.normal.ext;
                   1244:            }
                   1245:            else{
                   1246:                sec.u.normal.ext   = exc->err.normal.ext;
                   1247:                sec.u.normal.tbl   = exc->err.normal.tbl;
                   1248:                word = exc->err.normal.index;
                   1249:                sec.u.normal.index = SWAP_LONG(word);
                   1250:                sec.u.word = SWAP_LONG(sec.u.word);
                   1251:                memcpy(&(exc->err), &sec, sizeof(struct swapped_err_code));
                   1252:            }
                   1253:        }
                   1254: }
                   1255: 
                   1256: void
                   1257: swap_i386_thread_cthreadstate(
                   1258: i386_thread_cthreadstate_t *user,
                   1259: enum byte_sex target_byte_sex)
                   1260: {
                   1261:        user->self = SWAP_LONG(user->self);
                   1262: }
                   1263: 
                   1264: void
                   1265: swap_hppa_integer_thread_state(
                   1266: struct hp_pa_integer_thread_state *regs,
                   1267: enum byte_sex target_byte_order)
                   1268: {
                   1269:     regs->ts_gr1 = SWAP_LONG(regs->ts_gr1);
                   1270:     regs->ts_gr2 = SWAP_LONG(regs->ts_gr2);
                   1271:     regs->ts_gr3 = SWAP_LONG(regs->ts_gr3);
                   1272:     regs->ts_gr4 = SWAP_LONG(regs->ts_gr4);
                   1273:     regs->ts_gr5 = SWAP_LONG(regs->ts_gr5);
                   1274:     regs->ts_gr6 = SWAP_LONG(regs->ts_gr6);
                   1275:     regs->ts_gr7 = SWAP_LONG(regs->ts_gr7);
                   1276:     regs->ts_gr8 = SWAP_LONG(regs->ts_gr8);
                   1277:     regs->ts_gr9 = SWAP_LONG(regs->ts_gr9);
                   1278:     regs->ts_gr10 = SWAP_LONG(regs->ts_gr10);
                   1279:     regs->ts_gr11 = SWAP_LONG(regs->ts_gr11);
                   1280:     regs->ts_gr12 = SWAP_LONG(regs->ts_gr12);
                   1281:     regs->ts_gr13 = SWAP_LONG(regs->ts_gr13);
                   1282:     regs->ts_gr14 = SWAP_LONG(regs->ts_gr14);
                   1283:     regs->ts_gr15 = SWAP_LONG(regs->ts_gr15);
                   1284:     regs->ts_gr16 = SWAP_LONG(regs->ts_gr16);
                   1285:     regs->ts_gr17 = SWAP_LONG(regs->ts_gr17);
                   1286:     regs->ts_gr18 = SWAP_LONG(regs->ts_gr18);
                   1287:     regs->ts_gr19 = SWAP_LONG(regs->ts_gr19);
                   1288:     regs->ts_gr20 = SWAP_LONG(regs->ts_gr20);
                   1289:     regs->ts_gr21 = SWAP_LONG(regs->ts_gr21);
                   1290:     regs->ts_gr22 = SWAP_LONG(regs->ts_gr22);
                   1291:     regs->ts_gr23 = SWAP_LONG(regs->ts_gr23);
                   1292:     regs->ts_gr24 = SWAP_LONG(regs->ts_gr24);
                   1293:     regs->ts_gr25 = SWAP_LONG(regs->ts_gr25);
                   1294:     regs->ts_gr26 = SWAP_LONG(regs->ts_gr26);
                   1295:     regs->ts_gr27 = SWAP_LONG(regs->ts_gr27);
                   1296:     regs->ts_gr28 = SWAP_LONG(regs->ts_gr28);
                   1297:     regs->ts_gr29 = SWAP_LONG(regs->ts_gr29);
                   1298:     regs->ts_gr30 = SWAP_LONG(regs->ts_gr30);
                   1299:     regs->ts_gr31 = SWAP_LONG(regs->ts_gr31);
                   1300:     regs->ts_sr0 = SWAP_LONG(regs->ts_sr0);
                   1301:     regs->ts_sr1 = SWAP_LONG(regs->ts_sr1);
                   1302:     regs->ts_sr2 = SWAP_LONG(regs->ts_sr2);
                   1303:     regs->ts_sr3 = SWAP_LONG(regs->ts_sr3);
                   1304:     regs->ts_sar = SWAP_LONG(regs->ts_sar);
                   1305: }
                   1306: 
                   1307: void swap_hppa_frame_thread_state(
                   1308:   struct hp_pa_frame_thread_state *frame,
                   1309:   enum byte_sex target_byte_order)
                   1310: {
                   1311:   frame->ts_pcsq_front = SWAP_LONG(frame->ts_pcsq_front);
                   1312:   frame->ts_pcsq_back = SWAP_LONG(frame->ts_pcsq_back);
                   1313:   frame->ts_pcoq_front = SWAP_LONG(frame->ts_pcoq_front);
                   1314:   frame->ts_pcoq_back = SWAP_LONG(frame->ts_pcoq_back);
                   1315:   frame->ts_psw = SWAP_LONG(frame->ts_psw);
                   1316:   frame->ts_unaligned_faults = SWAP_LONG(frame->ts_unaligned_faults);
                   1317:   frame->ts_fault_address = SWAP_LONG(frame->ts_fault_address);
                   1318:   frame->ts_step_range_start = SWAP_LONG(frame->ts_step_range_start);
                   1319:   frame->ts_step_range_stop = SWAP_LONG(frame->ts_step_range_stop);
                   1320: }
                   1321: 
                   1322: void swap_hppa_fp_thread_state(
                   1323:   struct hp_pa_fp_thread_state *fp,
                   1324:   enum byte_sex target_byte_order)
                   1325: {
                   1326:   fp->ts_fp0 = SWAP_DOUBLE(fp->ts_fp0);
                   1327:   fp->ts_fp1 = SWAP_DOUBLE(fp->ts_fp1);
                   1328:   fp->ts_fp2 = SWAP_DOUBLE(fp->ts_fp2);
                   1329:   fp->ts_fp3 = SWAP_DOUBLE(fp->ts_fp3);
                   1330:   fp->ts_fp4 = SWAP_DOUBLE(fp->ts_fp4);
                   1331:   fp->ts_fp5 = SWAP_DOUBLE(fp->ts_fp5);
                   1332:   fp->ts_fp6 = SWAP_DOUBLE(fp->ts_fp6);
                   1333:   fp->ts_fp7 = SWAP_DOUBLE(fp->ts_fp7);
                   1334:   fp->ts_fp8 = SWAP_DOUBLE(fp->ts_fp8);
                   1335:   fp->ts_fp9 = SWAP_DOUBLE(fp->ts_fp9);
                   1336:   fp->ts_fp10 = SWAP_DOUBLE(fp->ts_fp10);
                   1337:   fp->ts_fp11 = SWAP_DOUBLE(fp->ts_fp11);
                   1338:   fp->ts_fp12 = SWAP_DOUBLE(fp->ts_fp12);
                   1339:   fp->ts_fp13 = SWAP_DOUBLE(fp->ts_fp13);
                   1340:   fp->ts_fp14 = SWAP_DOUBLE(fp->ts_fp14);
                   1341:   fp->ts_fp15 = SWAP_DOUBLE(fp->ts_fp15);
                   1342:   fp->ts_fp16 = SWAP_DOUBLE(fp->ts_fp16);
                   1343:   fp->ts_fp17 = SWAP_DOUBLE(fp->ts_fp17);
                   1344:   fp->ts_fp18 = SWAP_DOUBLE(fp->ts_fp18);
                   1345:   fp->ts_fp19 = SWAP_DOUBLE(fp->ts_fp19);
                   1346:   fp->ts_fp20 = SWAP_DOUBLE(fp->ts_fp20);
                   1347:   fp->ts_fp21 = SWAP_DOUBLE(fp->ts_fp21);
                   1348:   fp->ts_fp22 = SWAP_DOUBLE(fp->ts_fp22);
                   1349:   fp->ts_fp23 = SWAP_DOUBLE(fp->ts_fp23);
                   1350:   fp->ts_fp24 = SWAP_DOUBLE(fp->ts_fp24);
                   1351:   fp->ts_fp25 = SWAP_DOUBLE(fp->ts_fp25);
                   1352:   fp->ts_fp26 = SWAP_DOUBLE(fp->ts_fp26);
                   1353:   fp->ts_fp27 = SWAP_DOUBLE(fp->ts_fp27);
                   1354:   fp->ts_fp28 = SWAP_DOUBLE(fp->ts_fp28);
                   1355:   fp->ts_fp29 = SWAP_DOUBLE(fp->ts_fp29);
                   1356:   fp->ts_fp30 = SWAP_DOUBLE(fp->ts_fp30);
                   1357:   fp->ts_fp31 = SWAP_DOUBLE(fp->ts_fp31);
                   1358: }
                   1359: 
                   1360: void
                   1361: swap_sparc_thread_state_regs(
                   1362:                        struct sparc_thread_state_regs *cpu,
                   1363:                        enum byte_sex target_byte_sex)
                   1364: {
                   1365:   enum byte_sex host_byte_sex = get_host_byte_sex();
                   1366:   struct p_status *pr_status = (struct p_status *) &(cpu->regs.r_psr);
                   1367: 
                   1368:   struct swapped_psr {
                   1369:     union {
                   1370:       struct {
                   1371:        unsigned int 
                   1372:        cwp:BITS_WIDTH(4,0),
                   1373:        et:BIT_WIDTH(5),
                   1374:        ps:BIT_WIDTH(6),
                   1375:        s:BIT_WIDTH(7),
                   1376:        pil:BITS_WIDTH(11,8),
                   1377:        ef:BIT_WIDTH(12),
                   1378:        ec:BIT_WIDTH(13),
                   1379:        reserved:BITS_WIDTH(19,14),
                   1380:        icc:BITS_WIDTH(23,20),
                   1381:        ver:BITS_WIDTH(27,24),
                   1382:        impl:BITS_WIDTH(31,28);
                   1383:       } fields;
                   1384:       unsigned int word;
                   1385:     } u;
                   1386:   } spsr;
                   1387: 
                   1388:   cpu->regs.r_pc = SWAP_LONG(cpu->regs.r_pc);
                   1389:   cpu->regs.r_npc = SWAP_LONG(cpu->regs.r_npc);
                   1390:   cpu->regs.r_y = SWAP_LONG(cpu->regs.r_y);
                   1391:   cpu->regs.r_g1 = SWAP_LONG(cpu->regs.r_g1);
                   1392:   cpu->regs.r_g2 = SWAP_LONG(cpu->regs.r_g2);
                   1393:   cpu->regs.r_g3 = SWAP_LONG(cpu->regs.r_g3);
                   1394:   cpu->regs.r_g4 = SWAP_LONG(cpu->regs.r_g4);
                   1395:   cpu->regs.r_g5 = SWAP_LONG(cpu->regs.r_g5);
                   1396:   cpu->regs.r_g6 = SWAP_LONG(cpu->regs.r_g6);
                   1397:   cpu->regs.r_g7 = SWAP_LONG(cpu->regs.r_g7);
                   1398:   cpu->regs.r_o0 = SWAP_LONG(cpu->regs.r_o0);
                   1399:   cpu->regs.r_o1 = SWAP_LONG(cpu->regs.r_o1);
                   1400:   cpu->regs.r_o2 = SWAP_LONG(cpu->regs.r_o2);
                   1401:   cpu->regs.r_o3 = SWAP_LONG(cpu->regs.r_o3);
                   1402:   cpu->regs.r_o4 = SWAP_LONG(cpu->regs.r_o4);
                   1403:   cpu->regs.r_o5 = SWAP_LONG(cpu->regs.r_o5);
                   1404:   cpu->regs.r_o6 = SWAP_LONG(cpu->regs.r_o6);
                   1405:   cpu->regs.r_o7 = SWAP_LONG(cpu->regs.r_o7);
                   1406: 
                   1407:   if (target_byte_sex == host_byte_sex) {
                   1408:     memcpy(&spsr, &(cpu->regs.r_psr), sizeof(struct swapped_psr));
                   1409:     spsr.u.word = SWAP_LONG(spsr.u.word);
                   1410:     pr_status->PSRREG.psr_bits.cwp = spsr.u.fields.cwp;
                   1411:     pr_status->PSRREG.psr_bits.ps = spsr.u.fields.ps;
                   1412:     pr_status->PSRREG.psr_bits.s = spsr.u.fields.s;
                   1413:     pr_status->PSRREG.psr_bits.pil = spsr.u.fields.pil;
                   1414:     pr_status->PSRREG.psr_bits.ef = spsr.u.fields.ef;
                   1415:     pr_status->PSRREG.psr_bits.ec = spsr.u.fields.ec;
                   1416:     pr_status->PSRREG.psr_bits.reserved = spsr.u.fields.reserved;
                   1417:     pr_status->PSRREG.psr_bits.icc = spsr.u.fields.icc;
                   1418:     pr_status->PSRREG.psr_bits.et = spsr.u.fields.ver;
                   1419:     pr_status->PSRREG.psr_bits.impl = spsr.u.fields.impl;
                   1420:   } else {
                   1421:     spsr.u.fields.cwp = pr_status->PSRREG.psr_bits.cwp;
                   1422:     spsr.u.fields.ps = pr_status->PSRREG.psr_bits.ps;
                   1423:     spsr.u.fields.s = pr_status->PSRREG.psr_bits.s;
                   1424:     spsr.u.fields.pil = pr_status->PSRREG.psr_bits.pil;
                   1425:     spsr.u.fields.ef = pr_status->PSRREG.psr_bits.ef;
                   1426:     spsr.u.fields.ec = pr_status->PSRREG.psr_bits.ec;
                   1427:     spsr.u.fields.reserved = pr_status->PSRREG.psr_bits.reserved;
                   1428:     spsr.u.fields.icc = pr_status->PSRREG.psr_bits.icc;
                   1429:     spsr.u.fields.ver = pr_status->PSRREG.psr_bits.et;
                   1430:     spsr.u.fields.impl = pr_status->PSRREG.psr_bits.impl;
                   1431:     spsr.u.word = SWAP_LONG(spsr.u.word);
                   1432:     memcpy(&(cpu->regs.r_psr), &spsr, sizeof(struct swapped_psr));
                   1433:   }
                   1434: }
                   1435: 
                   1436: void
                   1437: swap_sparc_thread_state_fpu(
                   1438:                        struct sparc_thread_state_fpu *fpu,
                   1439:                        enum byte_sex target_byte_sex)
                   1440: {
                   1441:   enum byte_sex host_byte_sex = get_host_byte_sex();
                   1442:   int i;
                   1443:   struct f_status *fpu_status = (struct f_status *) &(fpu->fpu.Fpu_fsr);
                   1444: 
                   1445:   struct swapped_fsr {
                   1446:     union {
                   1447:       struct {
                   1448:        unsigned int
                   1449:        cexc:BITS_WIDTH(4,0),
                   1450:        aexc:BITS_WIDTH(9,5),
                   1451:        fcc:BITS_WIDTH(11,10),
                   1452:        pr:BIT_WIDTH(12),
                   1453:        qne:BIT_WIDTH(13),
                   1454:        ftt:BITS_WIDTH(16,14),
                   1455:        res:BITS_WIDTH(22,17),
                   1456:        tem:BITS_WIDTH(27,23),
                   1457:        rp:BITS_WIDTH(29,28),
                   1458:        rd:BITS_WIDTH(31,30);
                   1459:       } fields;
                   1460:       unsigned int word;
                   1461:     } u;
                   1462:   } sfsr;
                   1463: 
                   1464:        
                   1465:   /* floating point registers */
                   1466:   for (i=0; i<16; i++)         /* 16 doubles */
                   1467:     fpu->fpu.fpu_fr.Fpu_dregs[i] = SWAP_DOUBLE(fpu->fpu.fpu_fr.Fpu_dregs[i]);
                   1468:   fpu->fpu.Fpu_q[0].FQu.whole = SWAP_DOUBLE(fpu->fpu.Fpu_q[0].FQu.whole);
                   1469:   fpu->fpu.Fpu_q[1].FQu.whole = SWAP_DOUBLE(fpu->fpu.Fpu_q[1].FQu.whole);
                   1470:   fpu->fpu.Fpu_flags = SWAP_LONG(fpu->fpu.Fpu_flags);
                   1471:   fpu->fpu.Fpu_extra = SWAP_LONG(fpu->fpu.Fpu_extra);
                   1472:   fpu->fpu.Fpu_qcnt = SWAP_LONG(fpu->fpu.Fpu_qcnt);
                   1473: 
                   1474:   if (target_byte_sex == host_byte_sex) {
                   1475:     memcpy(&sfsr, &(fpu->fpu.Fpu_fsr), sizeof(unsigned int));
                   1476:     sfsr.u.word = SWAP_LONG(sfsr.u.word);
                   1477:     fpu_status->FPUREG.Fpu_fsr_bits.rd = sfsr.u.fields.rd;
                   1478:     fpu_status->FPUREG.Fpu_fsr_bits.rp = sfsr.u.fields.rp;
                   1479:     fpu_status->FPUREG.Fpu_fsr_bits.tem = sfsr.u.fields.tem;
                   1480:     fpu_status->FPUREG.Fpu_fsr_bits.res = sfsr.u.fields.res;
                   1481:     fpu_status->FPUREG.Fpu_fsr_bits.ftt = sfsr.u.fields.ftt;
                   1482:     fpu_status->FPUREG.Fpu_fsr_bits.qne = sfsr.u.fields.qne;
                   1483:     fpu_status->FPUREG.Fpu_fsr_bits.pr = sfsr.u.fields.pr;
                   1484:     fpu_status->FPUREG.Fpu_fsr_bits.fcc = sfsr.u.fields.fcc;
                   1485:     fpu_status->FPUREG.Fpu_fsr_bits.aexc = sfsr.u.fields.aexc;
                   1486:     fpu_status->FPUREG.Fpu_fsr_bits.cexc = sfsr.u.fields.cexc;
                   1487:   } else {
                   1488:     sfsr.u.fields.rd = fpu_status->FPUREG.Fpu_fsr_bits.rd;
                   1489:     sfsr.u.fields.rp = fpu_status->FPUREG.Fpu_fsr_bits.rp;
                   1490:     sfsr.u.fields.tem = fpu_status->FPUREG.Fpu_fsr_bits.tem;
                   1491:     sfsr.u.fields.res = fpu_status->FPUREG.Fpu_fsr_bits.res;
                   1492:     sfsr.u.fields.ftt = fpu_status->FPUREG.Fpu_fsr_bits.ftt;
                   1493:     sfsr.u.fields.qne = fpu_status->FPUREG.Fpu_fsr_bits.qne;
                   1494:     sfsr.u.fields.pr = fpu_status->FPUREG.Fpu_fsr_bits.pr;
                   1495:     sfsr.u.fields.fcc = fpu_status->FPUREG.Fpu_fsr_bits.fcc;
                   1496:     sfsr.u.fields.aexc = fpu_status->FPUREG.Fpu_fsr_bits.aexc;
                   1497:     sfsr.u.fields.cexc = fpu_status->FPUREG.Fpu_fsr_bits.cexc;
                   1498:     sfsr.u.word = SWAP_LONG(sfsr.u.word);
                   1499:     memcpy(&(fpu->fpu.Fpu_fsr), &sfsr, sizeof(struct swapped_fsr));
                   1500:   }
                   1501: }
                   1502: 
                   1503: void
                   1504: swap_ident_command(
                   1505: struct ident_command *id_cmd,
                   1506: enum byte_sex target_byte_sex)
                   1507: {
                   1508:        id_cmd->cmd = SWAP_LONG(id_cmd->cmd);
                   1509:        id_cmd->cmdsize = SWAP_LONG(id_cmd->cmdsize);
                   1510: }
                   1511: 
                   1512: void
                   1513: swap_nlist(
                   1514: struct nlist *symbols,
                   1515: unsigned long nsymbols,
                   1516: enum byte_sex target_byte_sex)
                   1517: {
                   1518:     unsigned long i;
                   1519: 
                   1520:        for(i = 0; i < nsymbols; i++){
                   1521:            symbols[i].n_un.n_strx = SWAP_LONG(symbols[i].n_un.n_strx);
                   1522:            /* n_type */
                   1523:            /* n_sect */
                   1524:            symbols[i].n_desc = SWAP_SHORT(symbols[i].n_desc);
                   1525:            symbols[i].n_value = SWAP_LONG(symbols[i].n_value);
                   1526:        }
                   1527: }
                   1528: 
                   1529: void
                   1530: swap_ranlib(
                   1531: struct ranlib *ranlibs,
                   1532: unsigned long nranlibs,
                   1533: enum byte_sex target_byte_sex)
                   1534: {
                   1535:     unsigned long i;
                   1536: 
                   1537:        for(i = 0; i < nranlibs; i++){
                   1538:            ranlibs[i].ran_un.ran_strx = SWAP_LONG(ranlibs[i].ran_un.ran_strx);
                   1539:            ranlibs[i].ran_off = SWAP_LONG(ranlibs[i].ran_off);
                   1540:        }
                   1541: }
                   1542: 
                   1543: void
                   1544: swap_relocation_info(
                   1545: struct relocation_info *relocs,
                   1546: unsigned long nrelocs,
                   1547: enum byte_sex target_byte_sex)
                   1548: {
                   1549:     unsigned long i;
                   1550:     enum byte_sex host_byte_sex;
                   1551:     enum bool to_host_byte_sex, scattered;
                   1552: 
                   1553:     struct swapped_relocation_info {
                   1554:        long    r_address;
                   1555:        union {
                   1556:            struct {
                   1557:                unsigned int
                   1558:                    r_type:4,
                   1559:                    r_extern:1,
                   1560:                    r_length:2,
                   1561:                    r_pcrel:1,
                   1562:                    r_symbolnum:24;
                   1563:            } fields;
                   1564:            unsigned long word;
                   1565:        } u;
                   1566:     } sr;
                   1567: 
                   1568:     struct swapped_scattered_relocation_info {
                   1569:        unsigned long word;
                   1570:        long    r_value;
                   1571:     } *ssr;
                   1572: 
                   1573:        host_byte_sex = get_host_byte_sex();
                   1574:        to_host_byte_sex = target_byte_sex == host_byte_sex;
                   1575: 
                   1576:        for(i = 0; i < nrelocs; i++){
                   1577:            if(to_host_byte_sex)
                   1578:                scattered = (SWAP_LONG(relocs[i].r_address) & R_SCATTERED) != 0;
                   1579:            else
                   1580:                scattered = ((relocs[i].r_address) & R_SCATTERED) != 0;
                   1581:            if(scattered == FALSE){
                   1582:                if(to_host_byte_sex){
                   1583:                    memcpy(&sr, relocs + i, sizeof(struct relocation_info));
                   1584:                    sr.r_address = SWAP_LONG(sr.r_address);
                   1585:                    sr.u.word = SWAP_LONG(sr.u.word);
                   1586:                    relocs[i].r_address = sr.r_address;
                   1587:                    relocs[i].r_symbolnum = sr.u.fields.r_symbolnum;
                   1588:                    relocs[i].r_pcrel = sr.u.fields.r_pcrel;
                   1589:                    relocs[i].r_length = sr.u.fields.r_length;
                   1590:                    relocs[i].r_extern = sr.u.fields.r_extern;
                   1591:                    relocs[i].r_type = sr.u.fields.r_type;
                   1592:                }
                   1593:                else{
                   1594:                    sr.r_address = relocs[i].r_address;
                   1595:                    sr.u.fields.r_symbolnum = relocs[i].r_symbolnum;
                   1596:                    sr.u.fields.r_length = relocs[i].r_length;
                   1597:                    sr.u.fields.r_pcrel = relocs[i].r_pcrel;
                   1598:                    sr.u.fields.r_extern = relocs[i].r_extern;
                   1599:                    sr.u.fields.r_type = relocs[i].r_type;
                   1600:                    sr.r_address = SWAP_LONG(sr.r_address);
                   1601:                    sr.u.word = SWAP_LONG(sr.u.word);
                   1602:                    memcpy(relocs + i, &sr, sizeof(struct relocation_info));
                   1603:                }
                   1604:            }
                   1605:            else{
                   1606:                ssr = (struct swapped_scattered_relocation_info *)(relocs + i);
                   1607:                ssr->word = SWAP_LONG(ssr->word);
                   1608:                ssr->r_value = SWAP_LONG(ssr->r_value);
                   1609:            }
                   1610:        }
                   1611: }
                   1612: 
                   1613: void
                   1614: swap_indirect_symbols(
                   1615: unsigned long *indirect_symbols,
                   1616: unsigned long nindirect_symbols,
                   1617: enum byte_sex target_byte_sex)
                   1618: {
                   1619:     unsigned long i;
                   1620: 
                   1621:        for(i = 0; i < nindirect_symbols; i++)
                   1622:            indirect_symbols[i] = SWAP_LONG(indirect_symbols[i]);
                   1623: }
                   1624: 
                   1625: void
                   1626: swap_dylib_reference(
                   1627: struct dylib_reference *refs,
                   1628: unsigned long nrefs,
                   1629: enum byte_sex target_byte_sex)
                   1630: {
                   1631:     struct swapped_dylib_reference {
                   1632:        union {
                   1633:            struct {
                   1634:                unsigned long
                   1635:                    flags:8,
                   1636:                    isym:24;
                   1637:            } fields;
                   1638:            unsigned long word;
                   1639:        } u;
                   1640:     } sref;
                   1641: 
                   1642:     unsigned long i;
                   1643:     enum byte_sex host_byte_sex;
                   1644: 
                   1645:        host_byte_sex = get_host_byte_sex();
                   1646: 
                   1647:        for(i = 0; i < nrefs; i++){
                   1648:            if(target_byte_sex == host_byte_sex){
                   1649:                memcpy(&sref, refs + i, sizeof(struct swapped_dylib_reference));
                   1650:                sref.u.word = SWAP_LONG(sref.u.word);
                   1651:                refs[i].flags = sref.u.fields.flags;
                   1652:                refs[i].isym = sref.u.fields.isym;
                   1653:            }
                   1654:            else{
                   1655:                sref.u.fields.isym = refs[i].isym;
                   1656:                sref.u.fields.flags = refs[i].flags;
                   1657:                sref.u.word = SWAP_LONG(sref.u.word);
                   1658:                memcpy(refs + i, &sref, sizeof(struct swapped_dylib_reference));
                   1659:            }
                   1660:        }
                   1661: 
                   1662: }
                   1663: 
                   1664: void
                   1665: swap_dylib_module(
                   1666: struct dylib_module *mods,
                   1667: unsigned long nmods,
                   1668: enum byte_sex target_byte_sex)
                   1669: {
                   1670:     unsigned long i;
                   1671: 
                   1672:        for(i = 0; i < nmods; i++){
                   1673:            mods[i].module_name = SWAP_LONG(mods[i].module_name);
                   1674:            mods[i].iextdefsym  = SWAP_LONG(mods[i].iextdefsym);
                   1675:            mods[i].nextdefsym  = SWAP_LONG(mods[i].nextdefsym);
                   1676:            mods[i].irefsym     = SWAP_LONG(mods[i].irefsym);
                   1677:            mods[i].nrefsym     = SWAP_LONG(mods[i].nrefsym);
                   1678:            mods[i].ilocalsym   = SWAP_LONG(mods[i].ilocalsym);
                   1679:            mods[i].nlocalsym   = SWAP_LONG(mods[i].nlocalsym);
                   1680:            mods[i].iextrel     = SWAP_LONG(mods[i].iextrel);
                   1681:            mods[i].nextrel     = SWAP_LONG(mods[i].nextrel);
                   1682:            mods[i].iinit       = SWAP_LONG(mods[i].iinit);
                   1683:            mods[i].ninit       = SWAP_LONG(mods[i].ninit);
                   1684:        }
                   1685: }
                   1686: 
                   1687: void
                   1688: swap_dylib_table_of_contents(
                   1689: struct dylib_table_of_contents *tocs,
                   1690: unsigned long ntocs,
                   1691: enum byte_sex target_byte_sex)
                   1692: {
                   1693:     unsigned long i;
                   1694: 
                   1695:        for(i = 0; i < ntocs; i++){
                   1696:            tocs[i].symbol_index = SWAP_LONG(tocs[i].symbol_index);
                   1697:            tocs[i].module_index = SWAP_LONG(tocs[i].module_index);
                   1698:        }
                   1699: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.