source: trunk/hal/x86_64/core/hal_atomic.c @ 110

Last change on this file since 110 was 105, checked in by max@…, 7 years ago

add a few atomic functions

File size: 1.6 KB
Line 
1/*
2 * hal_atomic.c - implementation of Generic Atomic Operations API for x86
3 *
4 * Copyright (c) 2017 Maxime Villard
5 *
6 * This file is part of ALMOS-MKH.
7 *
8 * ALMOS-MKH is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; version 2.0 of the License.
11 *
12 * ALMOS-MKH is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with ALMOS-MKH.; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#include <hal_types.h>
23#include <hal_internal.h>
24
25void hal_atomic_and( uint32_t * ptr,
26                     int32_t    val )
27{
28        atomic_and_32((volatile uint32_t *)ptr, val);
29}
30
31void hal_atomic_or( uint32_t * ptr,
32                    int32_t    val )
33{
34        atomic_or_32((volatile uint32_t *)ptr, val);
35}
36
37uint32_t hal_atomic_add( void    * ptr,
38                         int32_t   val )
39{
40        return atomic_add_32((volatile uint32_t *)ptr, val);
41}
42
43bool_t hal_atomic_cas( uint32_t * ptr,
44                       uint32_t   old, 
45                       uint32_t   new )
46{
47        return (atomic_cas_32((volatile uint32_t *)ptr, old, new) == old);
48}
49
50bool_t hal_atomic_test_set( uint32_t * ptr,
51                            int32_t    val )
52{
53        x86_panic((char *)__func__);
54        return 0;
55}
56
Note: See TracBrowser for help on using the repository browser.