Changeset 80d2bdb in mainline for arch/ia32/include/atomic.h


Ignore:
Timestamp:
2005-12-15T16:10:19Z (20 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b4cad8b2
Parents:
7dd2561
Message:

We are now almost -Wall clean.

  • redefined atomic_t
  • deleted many, many unused variables
  • some minor code cleanups found using compiler warning.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/include/atomic.h

    r7dd2561 r80d2bdb  
    3232#include <arch/types.h>
    3333
    34 typedef volatile __u32 atomic_t;
     34typedef struct { volatile __u32 count; } atomic_t;
     35
     36static inline void atomic_set(atomic_t *val, __u32 i)
     37{
     38        val->count = i;
     39}
     40
     41static inline __u32 atomic_get(atomic_t *val)
     42{
     43        return val->count;
     44}
    3545
    3646static inline void atomic_inc(atomic_t *val) {
    3747#ifdef CONFIG_SMP
    38         __asm__ volatile ("lock incl %0\n" : "=m" (*val));
     48        __asm__ volatile ("lock incl %0\n" : "=m" (val->count));
    3949#else
    40         __asm__ volatile ("incl %0\n" : "=m" (*val));
     50        __asm__ volatile ("incl %0\n" : "=m" (val->count));
    4151#endif /* CONFIG_SMP */
    4252}
     
    4454static inline void atomic_dec(atomic_t *val) {
    4555#ifdef CONFIG_SMP
    46         __asm__ volatile ("lock decl %0\n" : "=m" (*val));
     56        __asm__ volatile ("lock decl %0\n" : "=m" (val->count));
    4757#else
    48         __asm__ volatile ("decl %0\n" : "=m" (*val));
     58        __asm__ volatile ("decl %0\n" : "=m" (val->count));
    4959#endif /* CONFIG_SMP */
    5060}
     
    5666                "movl $1, %0\n"
    5767                "lock xaddl %0, %1\n"
    58                 : "=r"(r), "=m" (*val)
     68                : "=r"(r), "=m" (val->count)
    5969        );
    6070        return r;
     
    7787#define atomic_dec_post(val) (atomic_dec_pre(val)-1)
    7888
    79 static inline int test_and_set(volatile int *val) {
     89static inline int test_and_set(atomic_t *val) {
    8090        int v;
    8191       
     
    8393                "movl $1, %0\n"
    8494                "xchgl %0, %1\n"
    85                 : "=r" (v),"=m" (*val)
     95                : "=r" (v),"=m" (val->count)
    8696        );
    8797       
Note: See TracChangeset for help on using the changeset viewer.