Changeset d5087aa in mainline


Ignore:
Timestamp:
2008-06-14T10:29:58Z (16 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
eeaf667
Parents:
e25eca80
Message:

Add smc_coherence_block().

Location:
kernel/arch
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/include/barrier.h

    re25eca80 rd5087aa  
    4848
    4949#define smc_coherence(a)
     50#define smc_coherence_block(a, l)
    5051
    5152#endif
  • kernel/arch/ia32/include/barrier.h

    re25eca80 rd5087aa  
    9292 */
    9393#define smc_coherence(a)                write_barrier()
     94#define smc_coherence_block(a, l)       write_barrier()
    9495
    9596#endif
  • kernel/arch/ia64/include/barrier.h

    re25eca80 rd5087aa  
    6363}
    6464
     65#define FC_INVAL_MIN            32
     66#define smc_coherence_block(a, l)               \
     67{                                               \
     68        unsigned long i;                        \
     69        for (i = 0; i < (l); i += FC_INVAL_MIN) \
     70                fc_i((void *)(a) + i);          \
     71        sync_i();                               \
     72        srlz_i();                               \
     73}
     74
    6575#endif
    6676
  • kernel/arch/mips32/include/barrier.h

    re25eca80 rd5087aa  
    4747
    4848#define smc_coherence(a)
     49#define smc_coherence_block(a, l)
    4950
    5051#endif
  • kernel/arch/ppc32/include/barrier.h

    re25eca80 rd5087aa  
    4444
    4545#define smc_coherence(a)
     46#define smc_coherence_block(a, l)
    4647
    4748#endif
  • kernel/arch/ppc64/include/barrier.h

    re25eca80 rd5087aa  
    4444
    4545#define smc_coherence(a)
     46#define smc_coherence_block(a, l)
    4647
    4748#endif
  • kernel/arch/sparc64/include/barrier.h

    re25eca80 rd5087aa  
    5858        asm volatile ("membar #StoreStore\n" ::: "memory")
    5959
    60 static inline void flush(uintptr_t addr)
    61 {
    62         asm volatile ("flush %0\n" :: "r" (addr) : "memory");
    63 }
     60#define flush(a)                \
     61        asm volatile ("flush %0\n" :: "r" ((a)) : "memory")
    6462
    6563/** Flush Instruction Memory instruction. */
     
    9189}
    9290
     91#define FLUSH_INVAL_MIN         4
     92#define smc_coherence_block(a, l)                       \
     93{                                                       \
     94        unsigned long i;                                \
     95        write_barrier();                                \
     96        for (i = 0; i < (l); i += FLUSH_INVAL_MIN)      \
     97                flush((void *)(a) + i);                 \
     98}
     99
    93100#endif
    94101
Note: See TracChangeset for help on using the changeset viewer.