Changeset 7328ff4 in mainline for kernel/arch/sparc64
- Timestamp:
- 2018-09-06T18:18:52Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ffa73c6
- Parents:
- d51cca8
- git-author:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-08-13 01:29:17)
- git-committer:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-09-06 18:18:52)
- Location:
- kernel/arch/sparc64
- Files:
-
- 5 edited
- 1 moved
-
Makefile.inc (modified) (1 diff)
-
include/arch/barrier.h (modified) (2 diffs)
-
include/arch/mm/sun4u/tlb.h (modified) (1 diff)
-
src/smc.c (moved) (moved from kernel/arch/mips32/include/arch/barrier.h ) (1 diff)
-
src/smp/sun4u/ipi.c (modified) (1 diff)
-
src/trap/sun4u/interrupt.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/Makefile.inc
rd51cca8 r7328ff4 77 77 arch/$(KARCH)/src/proc/$(USARCH)/scheduler.c \ 78 78 arch/$(KARCH)/src/proc/thread.c \ 79 arch/$(KARCH)/src/smc.c \ 79 80 arch/$(KARCH)/src/trap/$(USARCH)/mmu.S \ 80 81 arch/$(KARCH)/src/trap/$(USARCH)/trap_table.S \ -
kernel/arch/sparc64/include/arch/barrier.h
rd51cca8 r7328ff4 38 38 #include <trace.h> 39 39 40 /*41 * Our critical section barriers are prepared for the weakest RMO memory model.42 */43 #define CS_ENTER_BARRIER() \44 asm volatile ( \45 "membar #LoadLoad | #LoadStore\n" \46 ::: "memory" \47 )48 49 #define CS_LEAVE_BARRIER() \50 asm volatile ( \51 "membar #StoreStore\n" \52 "membar #LoadStore\n" \53 ::: "memory" \54 )55 56 #define memory_barrier() \57 asm volatile ( \58 "membar #LoadLoad | #StoreStore\n" \59 ::: "memory" \60 )61 62 #define read_barrier() \63 asm volatile ( \64 "membar #LoadLoad\n" \65 ::: "memory" \66 )67 68 #define write_barrier() \69 asm volatile ( \70 "membar #StoreStore\n" \71 ::: "memory" \72 )73 74 #define flush(a) \75 asm volatile ( \76 "flush %[reg]\n" \77 :: [reg] "r" ((a)) \78 : "memory" \79 )80 81 40 /** Flush Instruction pipeline. */ 82 41 NO_TRACE static inline void flush_pipeline(void) … … 110 69 } 111 70 112 #ifdef KERNEL113 114 #if defined(US)115 116 #define FLUSH_INVAL_MIN 4117 118 #define smc_coherence(a, l) \119 do { \120 unsigned long i; \121 write_barrier(); \122 \123 for (i = 0; i < (l); i += FLUSH_INVAL_MIN) \124 flush((void *)(a) + i); \125 } while (0)126 127 #elif defined (US3)128 129 #define smc_coherence(a, l) \130 do { \131 write_barrier(); \132 flush_pipeline(); \133 } while (0)134 135 #endif /* defined(US3) */136 137 #endif /* KERNEL */138 139 71 #endif 140 72 -
kernel/arch/sparc64/include/arch/mm/sun4u/tlb.h
rd51cca8 r7328ff4 98 98 #include <arch/mm/page.h> 99 99 #include <arch/asm.h> 100 #include <arch/barrier.h> 100 101 #include <barrier.h> 101 102 #include <typedefs.h> -
kernel/arch/sparc64/src/smc.c
rd51cca8 r7328ff4 27 27 */ 28 28 29 /** @addtogroup mips32 30 * @{ 31 */ 32 /** @file 33 */ 29 #include <barrier.h> 30 #include <arch/barrier.h> 34 31 35 #ifndef KERN_mips32_BARRIER_H_ 36 #define KERN_mips32_BARRIER_H_ 32 #if defined(US) 37 33 38 /* 39 * TODO: implement true MIPS memory barriers for macros below. 40 */ 41 #define CS_ENTER_BARRIER() asm volatile ("" ::: "memory") 42 #define CS_LEAVE_BARRIER() asm volatile ("" ::: "memory") 34 #define FLUSH_INVAL_MIN 4 43 35 44 #define memory_barrier() asm volatile ("" ::: "memory")45 #define read_barrier() asm volatile ("" ::: "memory") 46 #define write_barrier() asm volatile ("" ::: "memory") 36 void smc_coherence(void *a, size_t l) 37 { 38 asm volatile ("membar #StoreStore\n" ::: "memory"); 47 39 48 #ifdef KERNEL 40 for (size_t i = 0; i < l; i += FLUSH_INVAL_MIN) { 41 asm volatile ( 42 "flush %[reg]\n" 43 :: [reg] "r" (a + i) 44 : "memory" 45 ); 46 } 47 } 49 48 50 # define smc_coherence(a, l)49 #elif defined (US3) 51 50 52 #endif /* KERNEL */53 51 54 #endif 52 void smc_coherence(void *a, size_t l) 53 { 54 asm volatile ("membar #StoreStore\n" ::: "memory"); 55 55 56 /** @} 57 */ 56 flush_pipeline(); 57 } 58 59 #endif /* defined(US3) */ 60 -
kernel/arch/sparc64/src/smp/sun4u/ipi.c
rd51cca8 r7328ff4 34 34 35 35 #include <smp/ipi.h> 36 #include <arch/barrier.h> 36 37 #include <arch/smp/sun4u/ipi.h> 37 38 #include <assert.h> -
kernel/arch/sparc64/src/trap/sun4u/interrupt.c
rd51cca8 r7328ff4 33 33 */ 34 34 35 #include <arch/barrier.h> 35 36 #include <arch/interrupt.h> 36 37 #include <arch/sparc64.h>
Note:
See TracChangeset
for help on using the changeset viewer.
