Changeset e762b43 in mainline for kernel/arch/arm32/include


Ignore:
Timestamp:
2009-03-03T16:12:43Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
02fd705
Parents:
f24d300
Message:

better inline assembler readability using the new symbolic syntax

Location:
kernel/arch/arm32/include
Files:
5 edited

Legend:

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

    rf24d300 re762b43  
    2727 */
    2828
    29 /** @addtogroup arm32   
     29/** @addtogroup arm32
    3030 * @{
    3131 */
    32 /** @file 
     32/** @file
    3333 *  @brief Declarations of functions implemented in assembly.
    3434 */
     
    7878
    7979/** Return base address of current stack.
    80  * 
     80 *
    8181 * Return the base address of the current stack.
    8282 * The stack is assumed to be STACK_SIZE bytes long.
    8383 * The stack must start on page boundary.
     84 *
    8485 */
    8586static inline uintptr_t get_stack_base(void)
     
    8788        uintptr_t v;
    8889        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))
    9293        );
    9394        return v;
  • kernel/arch/arm32/include/atomic.h

    rf24d300 re762b43  
    2727 */
    2828
    29 /** @addtogroup arm32   
     29/** @addtogroup arm32
    3030 * @{
    3131 */
    32 /** @file 
     32/** @file
    3333 *  @brief Atomic operations.
    3434 */
     
    4343 *
    4444 * @return Value after addition.
     45 *
    4546 */
    4647static inline long atomic_add(atomic_t *val, int i)
     
    4849        int ret;
    4950        volatile long *mem = &(val->count);
    50 
     51       
    5152        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)
    6262                : "r3", "r2"
    6363        );
    64 
     64       
    6565        return ret;
    6666}
  • kernel/arch/arm32/include/barrier.h

    rf24d300 re762b43  
    2727 */
    2828
    29 /** @addtogroup arm32   
     29/** @addtogroup arm32
    3030 * @{
    3131 */
     
    4040 * TODO: implement true ARM memory barriers for macros below.
    4141 */
    42 #define CS_ENTER_BARRIER()      asm volatile ("" ::: "memory")
    43 #define CS_LEAVE_BARRIER()      asm volatile ("" ::: "memory")
     42#define CS_ENTER_BARRIER()  asm volatile ("" ::: "memory")
     43#define CS_LEAVE_BARRIER()  asm volatile ("" ::: "memory")
    4444
    45 #define memory_barrier()        asm volatile ("" ::: "memory")
    46 #define read_barrier()          asm volatile ("" ::: "memory")
    47 #define write_barrier()         asm volatile ("" ::: "memory")
     45#define memory_barrier()  asm volatile ("" ::: "memory")
     46#define read_barrier()    asm volatile ("" ::: "memory")
     47#define write_barrier()   asm volatile ("" ::: "memory")
    4848
    4949#define smc_coherence(a)
  • kernel/arch/arm32/include/mm/page.h

    rf24d300 re762b43  
    194194{
    195195        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)
    199198        );
    200199}
  • kernel/arch/arm32/include/regutils.h

    rf24d300 re762b43  
    2727 */
    2828
    29 /** @addtogroup arm32   
     29/** @addtogroup arm32
    3030 * @{
    3131 */
     
    5858{ \
    5959        uint32_t retval; \
    60         asm volatile("mrs %0, " #reg : "=r" (retval)); \
     60        asm volatile( \
     61                "mrs %[retval], " #reg \
     62                : [retval] "=r" (retval) \
     63        ); \
    6164        return retval; \
    6265}
     
    6568static inline void nm## _status_reg_ ##fieldname## _write(uint32_t value) \
    6669{ \
    67         asm volatile("msr " #reg "_" #field ", %0" : : "r" (value)); \
     70        asm volatile( \
     71                "msr " #reg "_" #field ", %[value]" \
     72                :: [value] "r" (value) \
     73        ); \
    6874}
    6975
Note: See TracChangeset for help on using the changeset viewer.