Ignore:
Timestamp:
Apr 21, 2017, 4:28:29 AM (3 months ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-3.18/arch/powerpc/kernel/align.c

    r25370 r31885  
    809809        flags = aligninfo[instr].flags;
    810810
    811         /* ldbrx/stdbrx overlap lfs/stfs in the DSISR unfortunately */
    812         if (IS_XFORM(instruction) && ((instruction >> 1) & 0x3ff) == 532) {
    813                 nb = 8;
    814                 flags = LD+SW;
    815         } else if (IS_XFORM(instruction) &&
    816                    ((instruction >> 1) & 0x3ff) == 660) {
    817                 nb = 8;
    818                 flags = ST+SW;
     811        /*
     812         * Handle some cases which give overlaps in the DSISR values.
     813         */
     814        if (IS_XFORM(instruction)) {
     815                switch (get_xop(instruction)) {
     816                case 532:       /* ldbrx */
     817                        nb = 8;
     818                        flags = LD+SW;
     819                        break;
     820                case 660:       /* stdbrx */
     821                        nb = 8;
     822                        flags = ST+SW;
     823                        break;
     824                case 20:        /* lwarx */
     825                case 84:        /* ldarx */
     826                case 116:       /* lharx */
     827                case 276:       /* lqarx */
     828                        return 0;       /* not emulated ever */
     829                }
    819830        }
    820831
Note: See TracChangeset for help on using the changeset viewer.