summaryrefslogtreecommitdiff
path: root/hal/arch/inc/generic.h
blob: cf2ca2c17075c984245213914fb8c2f037d96192 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef hal_arch_inc_generic_h
#define hal_arch_inc_generic_h
/* Cesar project {{{
 *
 * Copyright (C) 2007 Spidcom
 *
 * <<<Licence>>>
 *
 * }}} */
/**
 * \file    hal/arch/inc/generic.h
 * \brief   Generic architecture header.
 * \ingroup lib
 */

extern inline int
arch_atomic_add (volatile int *p, int d)
{
    int v;
    arch_isr_lock ();
    v = *p;
    v += d;
    *p = v;
    arch_isr_unlock ();
    return v;
}

#endif /* hal_arch_inc_generic_h */