[PATCH 14/15] common/cnxk: add memory clobber to steor and ldeor
Nithin Dabilpuram
ndabilpuram at marvell.com
Fri Mar 3 09:10:12 CET 2023
To avoid compiler reordering stores to LMT line and ldeor,
add clobber attribute to ldeor, steor etc.
Signed-off-by: Nithin Dabilpuram <ndabilpuram at marvell.com>
---
drivers/common/cnxk/roc_io.h | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/common/cnxk/roc_io.h b/drivers/common/cnxk/roc_io.h
index 1e5c1f8c04..af1a10cd66 100644
--- a/drivers/common/cnxk/roc_io.h
+++ b/drivers/common/cnxk/roc_io.h
@@ -130,7 +130,8 @@ roc_lmt_submit_ldeor(plt_iova_t io_address)
asm volatile(PLT_CPU_FEATURE_PREAMBLE "ldeor xzr, %x[rf], [%[rs]]"
: [rf] "=r"(result)
- : [rs] "r"(io_address));
+ : [rs] "r"(io_address)
+ : "memory");
return result;
}
@@ -141,7 +142,8 @@ roc_lmt_submit_ldeorl(plt_iova_t io_address)
asm volatile(PLT_CPU_FEATURE_PREAMBLE "ldeorl xzr,%x[rf],[%[rs]]"
: [rf] "=r"(result)
- : [rs] "r"(io_address));
+ : [rs] "r"(io_address)
+ : "memory");
return result;
}
@@ -150,7 +152,8 @@ roc_lmt_submit_steor(uint64_t data, plt_iova_t io_address)
{
asm volatile(PLT_CPU_FEATURE_PREAMBLE
"steor %x[d], [%[rs]]" ::[d] "r"(data),
- [rs] "r"(io_address));
+ [rs] "r"(io_address)
+ : "memory");
}
static __plt_always_inline void
@@ -158,7 +161,8 @@ roc_lmt_submit_steorl(uint64_t data, plt_iova_t io_address)
{
asm volatile(PLT_CPU_FEATURE_PREAMBLE
"steorl %x[d], [%[rs]]" ::[d] "r"(data),
- [rs] "r"(io_address));
+ [rs] "r"(io_address)
+ : "memory");
}
static __plt_always_inline void
--
2.25.1
More information about the dev
mailing list