xref: /openbmc/qemu/include/tcg/tcg-mo.h (revision cbf01142b2aef0c0b4e995cecd7e79d342bbc47e)
1*d3582cfdSPhilippe Mathieu-Daudé /*
2*d3582cfdSPhilippe Mathieu-Daudé  * Tiny Code Generator for QEMU
3*d3582cfdSPhilippe Mathieu-Daudé  *
4*d3582cfdSPhilippe Mathieu-Daudé  * Copyright (c) 2008 Fabrice Bellard
5*d3582cfdSPhilippe Mathieu-Daudé  *
6*d3582cfdSPhilippe Mathieu-Daudé  * Permission is hereby granted, free of charge, to any person obtaining a copy
7*d3582cfdSPhilippe Mathieu-Daudé  * of this software and associated documentation files (the "Software"), to deal
8*d3582cfdSPhilippe Mathieu-Daudé  * in the Software without restriction, including without limitation the rights
9*d3582cfdSPhilippe Mathieu-Daudé  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10*d3582cfdSPhilippe Mathieu-Daudé  * copies of the Software, and to permit persons to whom the Software is
11*d3582cfdSPhilippe Mathieu-Daudé  * furnished to do so, subject to the following conditions:
12*d3582cfdSPhilippe Mathieu-Daudé  *
13*d3582cfdSPhilippe Mathieu-Daudé  * The above copyright notice and this permission notice shall be included in
14*d3582cfdSPhilippe Mathieu-Daudé  * all copies or substantial portions of the Software.
15*d3582cfdSPhilippe Mathieu-Daudé  *
16*d3582cfdSPhilippe Mathieu-Daudé  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17*d3582cfdSPhilippe Mathieu-Daudé  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18*d3582cfdSPhilippe Mathieu-Daudé  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19*d3582cfdSPhilippe Mathieu-Daudé  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20*d3582cfdSPhilippe Mathieu-Daudé  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21*d3582cfdSPhilippe Mathieu-Daudé  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22*d3582cfdSPhilippe Mathieu-Daudé  * THE SOFTWARE.
23*d3582cfdSPhilippe Mathieu-Daudé  */
24*d3582cfdSPhilippe Mathieu-Daudé 
25*d3582cfdSPhilippe Mathieu-Daudé #ifndef TCG_MO_H
26*d3582cfdSPhilippe Mathieu-Daudé #define TCG_MO_H
27*d3582cfdSPhilippe Mathieu-Daudé 
28*d3582cfdSPhilippe Mathieu-Daudé typedef enum {
29*d3582cfdSPhilippe Mathieu-Daudé     /* Used to indicate the type of accesses on which ordering
30*d3582cfdSPhilippe Mathieu-Daudé        is to be ensured.  Modeled after SPARC barriers.
31*d3582cfdSPhilippe Mathieu-Daudé 
32*d3582cfdSPhilippe Mathieu-Daudé        This is of the form TCG_MO_A_B where A is before B in program order.
33*d3582cfdSPhilippe Mathieu-Daudé     */
34*d3582cfdSPhilippe Mathieu-Daudé     TCG_MO_LD_LD  = 0x01,
35*d3582cfdSPhilippe Mathieu-Daudé     TCG_MO_ST_LD  = 0x02,
36*d3582cfdSPhilippe Mathieu-Daudé     TCG_MO_LD_ST  = 0x04,
37*d3582cfdSPhilippe Mathieu-Daudé     TCG_MO_ST_ST  = 0x08,
38*d3582cfdSPhilippe Mathieu-Daudé     TCG_MO_ALL    = 0x0F,  /* OR of the above */
39*d3582cfdSPhilippe Mathieu-Daudé 
40*d3582cfdSPhilippe Mathieu-Daudé     /* Used to indicate the kind of ordering which is to be ensured by the
41*d3582cfdSPhilippe Mathieu-Daudé        instruction.  These types are derived from x86/aarch64 instructions.
42*d3582cfdSPhilippe Mathieu-Daudé        It should be noted that these are different from C11 semantics.  */
43*d3582cfdSPhilippe Mathieu-Daudé     TCG_BAR_LDAQ  = 0x10,  /* Following ops will not come forward */
44*d3582cfdSPhilippe Mathieu-Daudé     TCG_BAR_STRL  = 0x20,  /* Previous ops will not be delayed */
45*d3582cfdSPhilippe Mathieu-Daudé     TCG_BAR_SC    = 0x30,  /* No ops cross barrier; OR of the above */
46*d3582cfdSPhilippe Mathieu-Daudé } TCGBar;
47*d3582cfdSPhilippe Mathieu-Daudé 
48*d3582cfdSPhilippe Mathieu-Daudé #endif /* TCG_MO_H */
49