~jakub/helenos/ia64-revival

« back to all changes in this revision

Viewing changes to kernel/arch/ia32/include/atomic.h

  • Committer: Jakub Jermar
  • Date: 2011-04-13 14:45:41 UTC
  • mfrom: (527.1.397 main-clone)
  • Revision ID: jakub@jermar.eu-20110413144541-x0j3r1zxqhsljx1o
MergeĀ mainlineĀ changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
#include <typedefs.h>
39
39
#include <arch/barrier.h>
40
40
#include <preemption.h>
 
41
#include <trace.h>
41
42
 
42
 
static inline void atomic_inc(atomic_t *val)
 
43
NO_TRACE static inline void atomic_inc(atomic_t *val)
43
44
{
44
45
#ifdef CONFIG_SMP
45
46
        asm volatile (
54
55
#endif /* CONFIG_SMP */
55
56
}
56
57
 
57
 
static inline void atomic_dec(atomic_t *val)
 
58
NO_TRACE static inline void atomic_dec(atomic_t *val)
58
59
{
59
60
#ifdef CONFIG_SMP
60
61
        asm volatile (
69
70
#endif /* CONFIG_SMP */
70
71
}
71
72
 
72
 
static inline atomic_count_t atomic_postinc(atomic_t *val)
 
73
NO_TRACE static inline atomic_count_t atomic_postinc(atomic_t *val)
73
74
{
74
75
        atomic_count_t r = 1;
75
76
        
82
83
        return r;
83
84
}
84
85
 
85
 
static inline atomic_count_t atomic_postdec(atomic_t *val)
 
86
NO_TRACE static inline atomic_count_t atomic_postdec(atomic_t *val)
86
87
{
87
88
        atomic_count_t r = -1;
88
89
        
98
99
#define atomic_preinc(val)  (atomic_postinc(val) + 1)
99
100
#define atomic_predec(val)  (atomic_postdec(val) - 1)
100
101
 
101
 
static inline atomic_count_t test_and_set(atomic_t *val)
 
102
NO_TRACE static inline atomic_count_t test_and_set(atomic_t *val)
102
103
{
103
104
        atomic_count_t v = 1;
104
105
        
112
113
}
113
114
 
114
115
/** ia32 specific fast spinlock */
115
 
static inline void atomic_lock_arch(atomic_t *val)
 
116
NO_TRACE static inline void atomic_lock_arch(atomic_t *val)
116
117
{
117
118
        atomic_count_t tmp;
118
119