Changeset e762b43 in mainline for kernel/arch/arm32/include
- Timestamp:
- 2009-03-03T16:12:43Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 02fd705
- Parents:
- f24d300
- Location:
- kernel/arch/arm32/include
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/include/asm.h
rf24d300 re762b43 27 27 */ 28 28 29 /** @addtogroup arm32 29 /** @addtogroup arm32 30 30 * @{ 31 31 */ 32 /** @file 32 /** @file 33 33 * @brief Declarations of functions implemented in assembly. 34 34 */ … … 78 78 79 79 /** Return base address of current stack. 80 * 80 * 81 81 * Return the base address of the current stack. 82 82 * The stack is assumed to be STACK_SIZE bytes long. 83 83 * The stack must start on page boundary. 84 * 84 85 */ 85 86 static inline uintptr_t get_stack_base(void) … … 87 88 uintptr_t v; 88 89 asm volatile ( 89 "and % 0, sp, %1\n"90 : "=r" (v)91 : "r" (~(STACK_SIZE - 1))90 "and %[v], sp, %[size]\n" 91 : [v] "=r" (v) 92 : [size] "r" (~(STACK_SIZE - 1)) 92 93 ); 93 94 return v; -
kernel/arch/arm32/include/atomic.h
rf24d300 re762b43 27 27 */ 28 28 29 /** @addtogroup arm32 29 /** @addtogroup arm32 30 30 * @{ 31 31 */ 32 /** @file 32 /** @file 33 33 * @brief Atomic operations. 34 34 */ … … 43 43 * 44 44 * @return Value after addition. 45 * 45 46 */ 46 47 static inline long atomic_add(atomic_t *val, int i) … … 48 49 int ret; 49 50 volatile long *mem = &(val->count); 50 51 51 52 asm volatile ( 52 "1:\n" 53 "ldr r2, [%1] \n" 54 "add r3, r2, %2 \n" 55 "str r3, %0 \n" 56 "swp r3, r3, [%1] \n" 57 "cmp r3, r2 \n" 58 "bne 1b \n" 59 60 : "=m" (ret) 61 : "r" (mem), "r" (i) 53 "1:\n" 54 "ldr r2, [%[mem]]\n" 55 "add r3, r2, %[i]\n" 56 "str r3, %[ret]\n" 57 "swp r3, r3, [%[mem]]\n" 58 "cmp r3, r2\n" 59 "bne 1b\n" 60 : [ret] "=m" (ret) 61 : [mem] "r" (mem), [i] "r" (i) 62 62 : "r3", "r2" 63 63 ); 64 64 65 65 return ret; 66 66 } -
kernel/arch/arm32/include/barrier.h
rf24d300 re762b43 27 27 */ 28 28 29 /** @addtogroup arm32 29 /** @addtogroup arm32 30 30 * @{ 31 31 */ … … 40 40 * TODO: implement true ARM memory barriers for macros below. 41 41 */ 42 #define CS_ENTER_BARRIER() 43 #define CS_LEAVE_BARRIER() 42 #define CS_ENTER_BARRIER() asm volatile ("" ::: "memory") 43 #define CS_LEAVE_BARRIER() asm volatile ("" ::: "memory") 44 44 45 #define memory_barrier() 46 #define read_barrier() 47 #define write_barrier() 45 #define memory_barrier() asm volatile ("" ::: "memory") 46 #define read_barrier() asm volatile ("" ::: "memory") 47 #define write_barrier() asm volatile ("" ::: "memory") 48 48 49 49 #define smc_coherence(a) -
kernel/arch/arm32/include/mm/page.h
rf24d300 re762b43 194 194 { 195 195 asm volatile ( 196 "mcr p15, 0, %0, c2, c0, 0 \n" 197 : 198 : "r"(pt) 196 "mcr p15, 0, %[pt], c2, c0, 0\n" 197 :: [pt] "r" (pt) 199 198 ); 200 199 } -
kernel/arch/arm32/include/regutils.h
rf24d300 re762b43 27 27 */ 28 28 29 /** @addtogroup arm32 29 /** @addtogroup arm32 30 30 * @{ 31 31 */ … … 58 58 { \ 59 59 uint32_t retval; \ 60 asm volatile("mrs %0, " #reg : "=r" (retval)); \ 60 asm volatile( \ 61 "mrs %[retval], " #reg \ 62 : [retval] "=r" (retval) \ 63 ); \ 61 64 return retval; \ 62 65 } … … 65 68 static inline void nm## _status_reg_ ##fieldname## _write(uint32_t value) \ 66 69 { \ 67 asm volatile("msr " #reg "_" #field ", %0" : : "r" (value)); \ 70 asm volatile( \ 71 "msr " #reg "_" #field ", %[value]" \ 72 :: [value] "r" (value) \ 73 ); \ 68 74 } 69 75
Note:
See TracChangeset
for help on using the changeset viewer.