Coverage Report

Created: 2026-10-17 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/barebox/include/asm-generic/atomic.h
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-only
2
/*
3
 *  based on linux/include/asm-arm/atomic.h
4
 *
5
 *  Copyright (c) 1996 Russell King.
6
 */
7
8
#ifndef __ASM_GENERIC_ATOMIC_H
9
#define __ASM_GENERIC_ATOMIC_H
10
11
#include <linux/types.h>
12
13
#ifdef CONFIG_SMP
14
#error SMP not supported
15
#endif
16
#define ATOMIC_INIT(i)  { (i) }
17
18
typedef struct { s64 counter; } atomic64_t;
19
20
#define atomic64_read(v)  ((v)->counter)
21
#define atomic64_set(v, i)  (((v)->counter) = (i))
22
23
static inline void atomic64_add(s64 i, volatile atomic64_t *v)
24
0
{
25
0
  v->counter += i;
26
0
}
Unexecuted instantiation: bootm.c:atomic64_add
Unexecuted instantiation: image-fit.c:atomic64_add
Unexecuted instantiation: bootm-fit.c:atomic64_add
Unexecuted instantiation: overlay.c:atomic64_add
Unexecuted instantiation: bfetch.c:atomic64_add
Unexecuted instantiation: refcount.c:atomic64_add
27
28
static inline void atomic64_sub(s64 i, volatile atomic64_t *v)
29
0
{
30
0
  v->counter -= i;
31
0
}
Unexecuted instantiation: bootm.c:atomic64_sub
Unexecuted instantiation: image-fit.c:atomic64_sub
Unexecuted instantiation: bootm-fit.c:atomic64_sub
Unexecuted instantiation: overlay.c:atomic64_sub
Unexecuted instantiation: bfetch.c:atomic64_sub
Unexecuted instantiation: refcount.c:atomic64_sub
32
33
static inline void atomic64_inc(volatile atomic64_t *v)
34
0
{
35
0
  v->counter += 1;
36
0
}
Unexecuted instantiation: bootm.c:atomic64_inc
Unexecuted instantiation: image-fit.c:atomic64_inc
Unexecuted instantiation: bootm-fit.c:atomic64_inc
Unexecuted instantiation: overlay.c:atomic64_inc
Unexecuted instantiation: bfetch.c:atomic64_inc
Unexecuted instantiation: refcount.c:atomic64_inc
37
38
static inline void atomic64_dec(volatile atomic64_t *v)
39
0
{
40
0
  v->counter -= 1;
41
0
}
Unexecuted instantiation: bootm.c:atomic64_dec
Unexecuted instantiation: image-fit.c:atomic64_dec
Unexecuted instantiation: bootm-fit.c:atomic64_dec
Unexecuted instantiation: overlay.c:atomic64_dec
Unexecuted instantiation: bfetch.c:atomic64_dec
Unexecuted instantiation: refcount.c:atomic64_dec
42
43
static inline int atomic64_dec_and_test(volatile atomic64_t *v)
44
0
{
45
0
  s64 val;
46
0
47
0
  val = v->counter;
48
0
  v->counter = val -= 1;
49
0
50
0
  return val == 0;
51
0
}
Unexecuted instantiation: bootm.c:atomic64_dec_and_test
Unexecuted instantiation: image-fit.c:atomic64_dec_and_test
Unexecuted instantiation: bootm-fit.c:atomic64_dec_and_test
Unexecuted instantiation: overlay.c:atomic64_dec_and_test
Unexecuted instantiation: bfetch.c:atomic64_dec_and_test
Unexecuted instantiation: refcount.c:atomic64_dec_and_test
52
53
static inline int atomic64_add_negative(s64 i, volatile atomic64_t *v)
54
0
{
55
0
  s64 val;
56
0
57
0
  val = v->counter;
58
0
  v->counter = val += i;
59
0
60
0
  return val < 0;
61
0
}
Unexecuted instantiation: bootm.c:atomic64_add_negative
Unexecuted instantiation: image-fit.c:atomic64_add_negative
Unexecuted instantiation: bootm-fit.c:atomic64_add_negative
Unexecuted instantiation: overlay.c:atomic64_add_negative
Unexecuted instantiation: bfetch.c:atomic64_add_negative
Unexecuted instantiation: refcount.c:atomic64_add_negative
62
63
64
typedef struct { volatile int counter; } atomic_t;
65
66
#define ATOMIC_INIT(i)  { (i) }
67
68
#define atomic_read(v)  ((v)->counter)
69
6.05k
#define atomic_set(v,i) (((v)->counter) = (i))
70
71
static inline void atomic_add(int i, volatile atomic_t *v)
72
0
{
73
0
  v->counter += i;
74
0
}
Unexecuted instantiation: bootm.c:atomic_add
Unexecuted instantiation: image-fit.c:atomic_add
Unexecuted instantiation: bootm-fit.c:atomic_add
Unexecuted instantiation: overlay.c:atomic_add
Unexecuted instantiation: bfetch.c:atomic_add
Unexecuted instantiation: refcount.c:atomic_add
75
76
static inline void atomic_sub(int i, volatile atomic_t *v)
77
0
{
78
0
  v->counter -= i;
79
0
}
Unexecuted instantiation: bootm.c:atomic_sub
Unexecuted instantiation: image-fit.c:atomic_sub
Unexecuted instantiation: bootm-fit.c:atomic_sub
Unexecuted instantiation: overlay.c:atomic_sub
Unexecuted instantiation: bfetch.c:atomic_sub
Unexecuted instantiation: refcount.c:atomic_sub
80
81
static inline int atomic_inc_return(volatile atomic_t *v)
82
0
{
83
0
  return ++v->counter;
84
0
}
Unexecuted instantiation: bootm.c:atomic_inc_return
Unexecuted instantiation: image-fit.c:atomic_inc_return
Unexecuted instantiation: bootm-fit.c:atomic_inc_return
Unexecuted instantiation: overlay.c:atomic_inc_return
Unexecuted instantiation: bfetch.c:atomic_inc_return
Unexecuted instantiation: refcount.c:atomic_inc_return
85
86
static inline int atomic_dec_return(volatile atomic_t *v)
87
0
{
88
0
  return --v->counter;
89
0
}
Unexecuted instantiation: bootm.c:atomic_dec_return
Unexecuted instantiation: image-fit.c:atomic_dec_return
Unexecuted instantiation: bootm-fit.c:atomic_dec_return
Unexecuted instantiation: overlay.c:atomic_dec_return
Unexecuted instantiation: bfetch.c:atomic_dec_return
Unexecuted instantiation: refcount.c:atomic_dec_return
90
91
#define atomic_inc(v) ((void)atomic_inc_return(v))
92
#define atomic_dec(v) ((void)atomic_dec_return(v))
93
94
static inline int atomic_dec_and_test(volatile atomic_t *v)
95
0
{
96
0
  int val;
97
0
98
0
  val = v->counter;
99
0
  v->counter = val -= 1;
100
0
101
0
  return val == 0;
102
0
}
Unexecuted instantiation: bootm.c:atomic_dec_and_test
Unexecuted instantiation: image-fit.c:atomic_dec_and_test
Unexecuted instantiation: bootm-fit.c:atomic_dec_and_test
Unexecuted instantiation: overlay.c:atomic_dec_and_test
Unexecuted instantiation: bfetch.c:atomic_dec_and_test
Unexecuted instantiation: refcount.c:atomic_dec_and_test
103
104
static inline int atomic_add_negative(int i, volatile atomic_t *v)
105
0
{
106
0
  int val;
107
0
108
0
  val = v->counter;
109
0
  v->counter = val += i;
110
0
111
0
  return val < 0;
112
0
}
Unexecuted instantiation: bootm.c:atomic_add_negative
Unexecuted instantiation: image-fit.c:atomic_add_negative
Unexecuted instantiation: bootm-fit.c:atomic_add_negative
Unexecuted instantiation: overlay.c:atomic_add_negative
Unexecuted instantiation: bfetch.c:atomic_add_negative
Unexecuted instantiation: refcount.c:atomic_add_negative
113
114
static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
115
0
{
116
0
  *addr &= ~mask;
117
0
}
Unexecuted instantiation: bootm.c:atomic_clear_mask
Unexecuted instantiation: image-fit.c:atomic_clear_mask
Unexecuted instantiation: bootm-fit.c:atomic_clear_mask
Unexecuted instantiation: overlay.c:atomic_clear_mask
Unexecuted instantiation: bfetch.c:atomic_clear_mask
Unexecuted instantiation: refcount.c:atomic_clear_mask
118
119
#define atomic_cmpxchg(v, o, n) cmpxchg(&((v)->counter), o, n)
120
121
/* Atomic operations are already serializing on ARM */
122
#define smp_mb__before_atomic_dec() barrier()
123
#define smp_mb__after_atomic_dec()  barrier()
124
#define smp_mb__before_atomic_inc() barrier()
125
#define smp_mb__after_atomic_inc()  barrier()
126
127
#endif