Changeset 275032b in rtems


Ignore:
Timestamp:
Sep 8, 2016, 7:31:47 AM (3 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
master
Children:
8af1663
Parents:
d4160618
git-author:
Sebastian Huber <sebastian.huber@…> (09/08/16 07:31:47)
git-committer:
Sebastian Huber <sebastian.huber@…> (09/08/16 07:55:26)
Message:

powerpc: Fix SMP context switch

We need the unmodified r4 for get_potential_new_heir.

This partially reverts commit 8d785f72d9610fb80a65d7848404f0f7507e026c.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libcpu/powerpc/new-exceptions/cpu_asm.S

    rd4160618 r275032b  
    256256        /* Align to a cache line */
    257257        clrrwi  r3, r3, PPC_DEFAULT_CACHE_LINE_POWER
    258         clrrwi  r4, r4, PPC_DEFAULT_CACHE_LINE_POWER
     258        clrrwi  r5, r4, PPC_DEFAULT_CACHE_LINE_POWER
    259259
    260260        DATA_CACHE_ZERO_AND_TOUCH(r10, PPC_CONTEXT_CACHE_LINE_0)
     
    411411
    412412        /* Check the is executing indicator of the heir context */
    413         addi    r6, r4, PPC_CONTEXT_OFFSET_IS_EXECUTING
     413        addi    r6, r5, PPC_CONTEXT_OFFSET_IS_EXECUTING
    414414        lwarx   r7, r0, r6
    415415        cmpwi   r7, 0
     
    423423#endif
    424424
    425         /* Restore context from r4 */
     425        /* Restore context from r5 */
    426426restore_context:
    427427
    428428#if defined(__ALTIVEC__) && !defined(PPC_MULTILIB_ALTIVEC)
    429         mr      r14, r4
     429        mr      r14, r5
     430        mr      r4, r5
    430431        .extern _CPU_Context_switch_altivec
    431432        bl      _CPU_Context_switch_altivec
    432         mr      r4, r14
    433 #endif
    434 
    435         lwz     r1, PPC_CONTEXT_OFFSET_GPR1(r4)
    436         lwz     r6, PPC_CONTEXT_OFFSET_MSR(r4)
    437         lwz     r7, PPC_CONTEXT_OFFSET_LR(r4)
    438         lwz     r8, PPC_CONTEXT_OFFSET_CR(r4)
    439 
    440         PPC_GPR_LOAD    r14, PPC_CONTEXT_OFFSET_GPR14(r4)
    441         PPC_GPR_LOAD    r15, PPC_CONTEXT_OFFSET_GPR15(r4)
     433        mr      r5, r14
     434#endif
     435
     436        lwz     r1, PPC_CONTEXT_OFFSET_GPR1(r5)
     437        lwz     r6, PPC_CONTEXT_OFFSET_MSR(r5)
     438        lwz     r7, PPC_CONTEXT_OFFSET_LR(r5)
     439        lwz     r8, PPC_CONTEXT_OFFSET_CR(r5)
     440
     441        PPC_GPR_LOAD    r14, PPC_CONTEXT_OFFSET_GPR14(r5)
     442        PPC_GPR_LOAD    r15, PPC_CONTEXT_OFFSET_GPR15(r5)
    442443
    443444        DATA_CACHE_TOUCH(r0, r1)
    444445
    445         PPC_GPR_LOAD    r16, PPC_CONTEXT_OFFSET_GPR16(r4)
    446         PPC_GPR_LOAD    r17, PPC_CONTEXT_OFFSET_GPR17(r4)
    447         PPC_GPR_LOAD    r18, PPC_CONTEXT_OFFSET_GPR18(r4)
    448         PPC_GPR_LOAD    r19, PPC_CONTEXT_OFFSET_GPR19(r4)
    449 
    450         PPC_GPR_LOAD    r20, PPC_CONTEXT_OFFSET_GPR20(r4)
    451         PPC_GPR_LOAD    r21, PPC_CONTEXT_OFFSET_GPR21(r4)
    452         PPC_GPR_LOAD    r22, PPC_CONTEXT_OFFSET_GPR22(r4)
    453         PPC_GPR_LOAD    r23, PPC_CONTEXT_OFFSET_GPR23(r4)
    454 
    455         PPC_GPR_LOAD    r24, PPC_CONTEXT_OFFSET_GPR24(r4)
    456         PPC_GPR_LOAD    r25, PPC_CONTEXT_OFFSET_GPR25(r4)
    457         PPC_GPR_LOAD    r26, PPC_CONTEXT_OFFSET_GPR26(r4)
    458         PPC_GPR_LOAD    r27, PPC_CONTEXT_OFFSET_GPR27(r4)
    459 
    460         PPC_GPR_LOAD    r28, PPC_CONTEXT_OFFSET_GPR28(r4)
    461         PPC_GPR_LOAD    r29, PPC_CONTEXT_OFFSET_GPR29(r4)
    462         PPC_GPR_LOAD    r30, PPC_CONTEXT_OFFSET_GPR30(r4)
    463         PPC_GPR_LOAD    r31, PPC_CONTEXT_OFFSET_GPR31(r4)
    464 
    465         lwz     r2, PPC_CONTEXT_OFFSET_GPR2(r4)
     446        PPC_GPR_LOAD    r16, PPC_CONTEXT_OFFSET_GPR16(r5)
     447        PPC_GPR_LOAD    r17, PPC_CONTEXT_OFFSET_GPR17(r5)
     448        PPC_GPR_LOAD    r18, PPC_CONTEXT_OFFSET_GPR18(r5)
     449        PPC_GPR_LOAD    r19, PPC_CONTEXT_OFFSET_GPR19(r5)
     450
     451        PPC_GPR_LOAD    r20, PPC_CONTEXT_OFFSET_GPR20(r5)
     452        PPC_GPR_LOAD    r21, PPC_CONTEXT_OFFSET_GPR21(r5)
     453        PPC_GPR_LOAD    r22, PPC_CONTEXT_OFFSET_GPR22(r5)
     454        PPC_GPR_LOAD    r23, PPC_CONTEXT_OFFSET_GPR23(r5)
     455
     456        PPC_GPR_LOAD    r24, PPC_CONTEXT_OFFSET_GPR24(r5)
     457        PPC_GPR_LOAD    r25, PPC_CONTEXT_OFFSET_GPR25(r5)
     458        PPC_GPR_LOAD    r26, PPC_CONTEXT_OFFSET_GPR26(r5)
     459        PPC_GPR_LOAD    r27, PPC_CONTEXT_OFFSET_GPR27(r5)
     460
     461        PPC_GPR_LOAD    r28, PPC_CONTEXT_OFFSET_GPR28(r5)
     462        PPC_GPR_LOAD    r29, PPC_CONTEXT_OFFSET_GPR29(r5)
     463        PPC_GPR_LOAD    r30, PPC_CONTEXT_OFFSET_GPR30(r5)
     464        PPC_GPR_LOAD    r31, PPC_CONTEXT_OFFSET_GPR31(r5)
     465
     466        lwz     r2, PPC_CONTEXT_OFFSET_GPR2(r5)
    466467
    467468#ifdef PPC_MULTILIB_ALTIVEC
    468469        li      r9, PPC_CONTEXT_OFFSET_V20
    469         lvx     v20, r4, r9
     470        lvx     v20, r5, r9
    470471        li      r9, PPC_CONTEXT_OFFSET_V21
    471         lvx     v21, r4, r9
     472        lvx     v21, r5, r9
    472473        li      r9, PPC_CONTEXT_OFFSET_V22
    473         lvx     v22, r4, r9
     474        lvx     v22, r5, r9
    474475        li      r9, PPC_CONTEXT_OFFSET_V23
    475         lvx     v23, r4, r9
     476        lvx     v23, r5, r9
    476477        li      r9, PPC_CONTEXT_OFFSET_V24
    477         lvx     v24, r4, r9
     478        lvx     v24, r5, r9
    478479        li      r9, PPC_CONTEXT_OFFSET_V25
    479         lvx     v25, r4, r9
     480        lvx     v25, r5, r9
    480481        li      r9, PPC_CONTEXT_OFFSET_V26
    481         lvx     v26, r4, r9
     482        lvx     v26, r5, r9
    482483        li      r9, PPC_CONTEXT_OFFSET_V27
    483         lvx     v27, r4, r9
     484        lvx     v27, r5, r9
    484485        li      r9, PPC_CONTEXT_OFFSET_V28
    485         lvx     v28, r4, r9
     486        lvx     v28, r5, r9
    486487        li      r9, PPC_CONTEXT_OFFSET_V29
    487         lvx     v29, r4, r9
     488        lvx     v29, r5, r9
    488489        li      r9, PPC_CONTEXT_OFFSET_V30
    489         lvx     v30, r4, r9
     490        lvx     v30, r5, r9
    490491        li      r9, PPC_CONTEXT_OFFSET_V31
    491         lvx     v31, r4, r9
    492         lwz     r9, PPC_CONTEXT_OFFSET_VRSAVE(r4)
     492        lvx     v31, r5, r9
     493        lwz     r9, PPC_CONTEXT_OFFSET_VRSAVE(r5)
    493494        mtvrsave        r9
    494495#endif
    495496
    496497#ifdef PPC_MULTILIB_FPU
    497         lfd     f14, PPC_CONTEXT_OFFSET_F14(r4)
    498         lfd     f15, PPC_CONTEXT_OFFSET_F15(r4)
    499         lfd     f16, PPC_CONTEXT_OFFSET_F16(r4)
    500         lfd     f17, PPC_CONTEXT_OFFSET_F17(r4)
    501         lfd     f18, PPC_CONTEXT_OFFSET_F18(r4)
    502         lfd     f19, PPC_CONTEXT_OFFSET_F19(r4)
    503         lfd     f20, PPC_CONTEXT_OFFSET_F20(r4)
    504         lfd     f21, PPC_CONTEXT_OFFSET_F21(r4)
    505         lfd     f22, PPC_CONTEXT_OFFSET_F22(r4)
    506         lfd     f23, PPC_CONTEXT_OFFSET_F23(r4)
    507         lfd     f24, PPC_CONTEXT_OFFSET_F24(r4)
    508         lfd     f25, PPC_CONTEXT_OFFSET_F25(r4)
    509         lfd     f26, PPC_CONTEXT_OFFSET_F26(r4)
    510         lfd     f27, PPC_CONTEXT_OFFSET_F27(r4)
    511         lfd     f28, PPC_CONTEXT_OFFSET_F28(r4)
    512         lfd     f29, PPC_CONTEXT_OFFSET_F29(r4)
    513         lfd     f30, PPC_CONTEXT_OFFSET_F30(r4)
    514         lfd     f31, PPC_CONTEXT_OFFSET_F31(r4)
     498        lfd     f14, PPC_CONTEXT_OFFSET_F14(r5)
     499        lfd     f15, PPC_CONTEXT_OFFSET_F15(r5)
     500        lfd     f16, PPC_CONTEXT_OFFSET_F16(r5)
     501        lfd     f17, PPC_CONTEXT_OFFSET_F17(r5)
     502        lfd     f18, PPC_CONTEXT_OFFSET_F18(r5)
     503        lfd     f19, PPC_CONTEXT_OFFSET_F19(r5)
     504        lfd     f20, PPC_CONTEXT_OFFSET_F20(r5)
     505        lfd     f21, PPC_CONTEXT_OFFSET_F21(r5)
     506        lfd     f22, PPC_CONTEXT_OFFSET_F22(r5)
     507        lfd     f23, PPC_CONTEXT_OFFSET_F23(r5)
     508        lfd     f24, PPC_CONTEXT_OFFSET_F24(r5)
     509        lfd     f25, PPC_CONTEXT_OFFSET_F25(r5)
     510        lfd     f26, PPC_CONTEXT_OFFSET_F26(r5)
     511        lfd     f27, PPC_CONTEXT_OFFSET_F27(r5)
     512        lfd     f28, PPC_CONTEXT_OFFSET_F28(r5)
     513        lfd     f29, PPC_CONTEXT_OFFSET_F29(r5)
     514        lfd     f30, PPC_CONTEXT_OFFSET_F30(r5)
     515        lfd     f31, PPC_CONTEXT_OFFSET_F31(r5)
    515516#endif
    516517
     
    528529PROC (_CPU_Context_restore):
    529530        /* Align to a cache line */
    530         clrrwi  r4, r3, PPC_DEFAULT_CACHE_LINE_POWER
     531        clrrwi  r5, r3, PPC_DEFAULT_CACHE_LINE_POWER
    531532
    532533#if defined(__ALTIVEC__) && !defined(PPC_MULTILIB_ALTIVEC)
     
    557558        sub     r7, r4, r7
    558559        add     r4, r8, r7
    559         clrrwi  r4, r4, PPC_DEFAULT_CACHE_LINE_POWER
     560        clrrwi  r5, r4, PPC_DEFAULT_CACHE_LINE_POWER
    560561
    561562        /* Update the executing */
Note: See TracChangeset for help on using the changeset viewer.