Ticket #4575: 920-cache-wround.patch

File 920-cache-wround.patch, 3.3 KB (added by acoul <alex at ozo.com>, 7 years ago)
  • arch/mips/include/asm/r4kcache.h

    a b  
    2020#ifdef CONFIG_BCM47XX 
    2121#include <asm/paccess.h> 
    2222#include <linux/ssb/ssb.h> 
    23 #define BCM4710_DUMMY_RREG() ((void) *((u8 *) KSEG1ADDR(SSB_ENUM_BASE + SSB_IMSTATE))) 
     23#define BCM4710_DUMMY_RREG() bcm4710_dummy_rreg() 
     24 
     25static inline unsigned long bcm4710_dummy_rreg(void) { 
     26      return (*(volatile unsigned long *)(KSEG1ADDR(SSB_ENUM_BASE + SSB_IMSTATE))); 
     27} 
     28 
     29#define BCM4710_FILL_TLB(addr) bcm4710_fill_tlb((void*)(addr)) 
     30 
     31static inline unsigned long bcm4710_fill_tlb(void *addr) { 
     32      return (*(unsigned long *)addr); 
     33} 
     34 
     35#define BCM4710_PROTECTED_FILL_TLB(addr) bcm4710_protected_fill_tlb((void*)(addr)) 
     36 
     37static inline void bcm4710_protected_fill_tlb(void *addr) { 
     38      unsigned long x; 
     39      get_dbe(x, (unsigned long *)addr);; 
     40} 
    2441 
    25 #define BCM4710_FILL_TLB(addr) (*(volatile unsigned long *)(addr)) 
    26 #define BCM4710_PROTECTED_FILL_TLB(addr) ({ unsigned long x; get_dbe(x, (volatile unsigned long *)(addr)); }) 
    2742#else 
    2843#define BCM4710_DUMMY_RREG() 
    2944 
  • arch/mips/mm/tlbex.c

    a b  
    547547#endif 
    548548        uasm_i_addu(p, ptr, tmp, ptr); 
    549549#else 
     550#ifdef CONFIG_BCM47XX 
     551        uasm_i_nop(p); 
     552#endif 
    550553        UASM_i_LA_mostly(p, ptr, pgdc); 
    551554#endif 
    552555        uasm_i_mfc0(p, tmp, C0_BADVADDR); /* get faulting address */ 
     
    677680                /* No need for uasm_i_nop */ 
    678681        } 
    679682 
    680 #ifdef CONFIG_BCM47XX 
    681         uasm_i_nop(&p); 
    682 #endif 
    683683#ifdef CONFIG_64BIT 
    684684        build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */ 
    685685#else 
     686# ifdef CONFIG_BCM47XX 
     687        uasm_i_nop(&p); 
     688# endif 
    686689        build_get_pgde32(&p, K0, K1); /* get pgd in K1 */ 
    687690#endif 
    688691 
     
    690693        build_update_entries(&p, K0, K1); 
    691694        build_tlb_write_entry(&p, &l, &r, tlb_random); 
    692695        uasm_l_leave(&l, p); 
     696#ifdef CONFIG_BCM47XX 
     697        uasm_i_nop(&p); 
     698#endif 
    693699        uasm_i_eret(&p); /* return from trap */ 
    694700 
    695701#ifdef CONFIG_64BIT 
     
    10871093                                   struct uasm_reloc **r, unsigned int pte, 
    10881094                                   unsigned int ptr) 
    10891095{ 
    1090 #ifdef CONFIG_BCM47XX 
    1091         uasm_i_nop(p); 
    1092 #endif 
    10931096#ifdef CONFIG_64BIT 
    10941097        build_get_pmde64(p, l, r, pte, ptr); /* get pmd in ptr */ 
    10951098#else 
     1099# ifdef CONFIG_BCM47XX 
     1100        uasm_i_nop(p); 
     1101# endif 
    10961102        build_get_pgde32(p, pte, ptr); /* get pgd in ptr */ 
    10971103#endif 
    10981104 
     
    11201126        build_update_entries(p, tmp, ptr); 
    11211127        build_tlb_write_entry(p, l, r, tlb_indexed); 
    11221128        uasm_l_leave(l, *p); 
     1129#ifdef CONFIG_BCM47XX 
     1130        uasm_i_nop(p); 
     1131#endif 
    11231132        uasm_i_eret(p); /* return from trap */ 
    11241133 
    11251134#ifdef CONFIG_64BIT 
  • arch/mips/kernel/genex.S

    a b  
    2121#include <asm/war.h> 
    2222#include <asm/page.h> 
    2323 
     24#ifdef CONFIG_BCM47XX 
     25# ifdef eret 
     26#  undef eret 
     27# endif 
     28# define eret                                   \ 
     29        .set push;                              \ 
     30        .set noreorder;                         \ 
     31         nop;                                   \ 
     32         nop;                                   \ 
     33         eret;                                  \ 
     34        .set pop; 
     35#endif 
     36 
    2437#define PANIC_PIC(msg)                                  \ 
    2538                .set push;                              \ 
    2639                .set    reorder;                        \ 
     
    5366        .set    noat 
    5467#ifdef CONFIG_BCM47XX 
    5568        nop 
    56         nop 
    5769#endif 
    5870#if R5432_CP0_INTERRUPT_WAR 
    5971        mfc0    k0, CP0_INDEX 
     
    7890        .set    push 
    7991        .set    mips3 
    8092        .set    noat 
     93#ifdef CONFIG_BCM47XX 
     94        nop 
     95#endif 
    8196        mfc0    k1, CP0_CAUSE 
    8297        li      k0, 31<<2 
    8398        andi    k1, k1, 0x7c