Ticket #4115: synccleanup.patch

File synccleanup.patch, 2.6 KB (added by kallisti5, 11 years ago)
  • src/system/kernel/arch/ppc/arch_elf.cpp

     
    197197                        "addend 0x%lx\n", __FUNCTION__, i, ELF32_R_TYPE(rel[i].r_info),
    198198                        rel[i].r_offset, ELF32_R_SYM(rel[i].r_info),
    199199                        rel[i].r_addend);
    200                     return vlErr;
     200                    // TODO: This makes us return to the bootloader (valid behaviour)
     201                    //       but while troubleshooting ppc kernel relocation problems
     202                    //       it makes life hard. -- kallisti5@unixzen.com
     203                    //return vlErr;
    201204                }
    202205                break;
    203206        }
  • src/system/kernel/arch/ppc/arch_cpu_asm.S

     
    3131 *             r3                    r4
    3232 */
    3333FUNCTION(set_sr):
     34    isync
    3435    mtsrin  %r4, %r3
     36    isync
    3537    blr
    3638
    3739/* uint32 get_msr(void);
     
    4547 */
    4648FUNCTION(set_msr):
    4749    mtmsr   %r3
     50    isync
    4851    blr
    4952
    5053/* uint32 get_pvr(void);
  • src/system/kernel/arch/ppc/arch_asm.S

     
    2626        // sets bit 15, EE
    2727
    2828    mtmsr   %r3                         // put it back into the msr
     29    isync
    2930    blr
    3031
    3132
     
    4041        // clears bit 15, EE
    4142
    4243    mtmsr   %r4                         // put it back into the msr
     44    isync
    4345    blr
    4446
    4547
     
    5355        // clear or set bit 15, EE to the same state as in r3, oldState
    5456
    5557    mtmsr   %r4
     58    isync
    5659    blr
    5760
    5861/* bool arch_int_are_interrupts_enabled(void) */
     
    175178
    176179// void sethid0(unsigned int val);
    177180FUNCTION(sethid0):
     181    isync
    178182    mtspr       1008, %r3
     183    isync
    179184    blr
    180185
    181186// unsigned int getl2cr();
     
    185190
    186191// void setl2cr(unsigned int val);
    187192FUNCTION(setl2cr):
     193    isync
    188194    mtspr       1017, %r3
     195    isync
    189196    blr
    190197
    191198   
  • src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp

     
    991991    // set up new page table and turn on translation again
    992992
    993993    for (int32 i = 0; i < 16; i++) {
    994         isync();
    995 
    996994        ppc_set_segment_register((void *)(i * 0x10000000), sSegments[i]);
    997995            // one segment describes 256 MB of memory
    998 
    999         ppc_sync();
    1000996    }
    1001997
    1002998    ppc_set_page_table(physicalTable, tableSize);