1 | /* SPDX-License-Identifier: LGPL-2.1 OR MIT */ |
2 | /* |
3 | * rseq-bits-template.h |
4 | * |
5 | * (C) Copyright 2016-2022 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
6 | */ |
7 | |
8 | #ifdef RSEQ_TEMPLATE_CPU_ID |
9 | # define RSEQ_TEMPLATE_CPU_ID_OFFSET RSEQ_CPU_ID_OFFSET |
10 | # define RSEQ_TEMPLATE_CPU_ID_FIELD cpu_id |
11 | # ifdef RSEQ_TEMPLATE_MO_RELEASE |
12 | # define RSEQ_TEMPLATE_SUFFIX _release_cpu_id |
13 | # elif defined (RSEQ_TEMPLATE_MO_RELAXED) |
14 | # define RSEQ_TEMPLATE_SUFFIX _relaxed_cpu_id |
15 | # else |
16 | # error "Never use <rseq-bits-template.h> directly; include <rseq.h> instead." |
17 | # endif |
18 | #elif defined(RSEQ_TEMPLATE_MM_CID) |
19 | # define RSEQ_TEMPLATE_CPU_ID_OFFSET RSEQ_MM_CID_OFFSET |
20 | # define RSEQ_TEMPLATE_CPU_ID_FIELD mm_cid |
21 | # ifdef RSEQ_TEMPLATE_MO_RELEASE |
22 | # define RSEQ_TEMPLATE_SUFFIX _release_mm_cid |
23 | # elif defined (RSEQ_TEMPLATE_MO_RELAXED) |
24 | # define RSEQ_TEMPLATE_SUFFIX _relaxed_mm_cid |
25 | # else |
26 | # error "Never use <rseq-bits-template.h> directly; include <rseq.h> instead." |
27 | # endif |
28 | #elif defined (RSEQ_TEMPLATE_CPU_ID_NONE) |
29 | # ifdef RSEQ_TEMPLATE_MO_RELEASE |
30 | # define RSEQ_TEMPLATE_SUFFIX _release |
31 | # elif defined (RSEQ_TEMPLATE_MO_RELAXED) |
32 | # define RSEQ_TEMPLATE_SUFFIX _relaxed |
33 | # else |
34 | # error "Never use <rseq-bits-template.h> directly; include <rseq.h> instead." |
35 | # endif |
36 | #else |
37 | # error "Never use <rseq-bits-template.h> directly; include <rseq.h> instead." |
38 | #endif |
39 | |
40 | #define RSEQ_TEMPLATE_IDENTIFIER(x) RSEQ_COMBINE_TOKENS(x, RSEQ_TEMPLATE_SUFFIX) |
41 | |
42 | |