~lttng/urcu/trunk

« back to all changes in this revision

Viewing changes to include/urcu/uatomic/loongarch.h

  • Committer: Mathieu Desnoyers
  • Author(s): Wang Jing
  • Date: 2023-09-06 13:20:24 UTC
  • Revision ID: git-v1:dc46a9c324ae94d89da41ea9a3f97503115df88e
Add LoongArch support

This commit completes LoongArch support.

LoongArch supports byte and short atomic operations,
and defines UATOMIC_HAS_ATOMIC_BYTE and UATOMIC_HAS_ATOMIC_SHORT.

Signed-off-by: Wang Jing <wangjing@loongson.cn>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I335e654939bfc90994275f2a4fad550c95f3eba4

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// SPDX-FileCopyrightText: 2021 Wang Jing <wangjing@loongson.cn>
2
 
//
3
 
// SPDX-License-Identifier: MIT
4
 
 
5
1
#ifndef _URCU_UATOMIC_ARCH_LOONGARCH_H
6
2
#define _URCU_UATOMIC_ARCH_LOONGARCH_H
7
3
 
8
4
/*
9
5
 * Atomic exchange operations for the LoongArch architecture. Let GCC do it.
 
6
 *
 
7
 * Copyright (c) 2021 Wang Jing <wangjing@loongson.cn>
 
8
 *
 
9
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 
10
 * of this software and associated documentation files (the "Software"), to
 
11
 * deal in the Software without restriction, including without limitation the
 
12
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 
13
 * sell copies of the Software, and to permit persons to whom the Software is
 
14
 * furnished to do so, subject to the following conditions:
 
15
 *
 
16
 * The above copyright notice and this permission notice shall be included in
 
17
 * all copies or substantial portions of the Software.
 
18
 *
 
19
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
20
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
21
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 
22
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
23
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
24
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 
25
 * IN THE SOFTWARE.
10
26
 */
11
27
 
12
28
#include <urcu/compiler.h>
16
32
extern "C" {
17
33
#endif
18
34
 
19
 
/*
20
 
 * LoongArch implements byte and short atomics with LL/SC instructions,
21
 
 * which retry if the cache line is modified concurrently between LL and
22
 
 * SC.
23
 
 */
24
35
#define UATOMIC_HAS_ATOMIC_BYTE
25
36
#define UATOMIC_HAS_ATOMIC_SHORT
26
37