* [PULL v2 1/2] Hexagon (target/hexagon) remove put_user_*/get_user_*
2021-07-25 21:42 [PULL v2 0/2] Hexagon (target/hexagon) remove put_user_*/get_user_* Taylor Simpson
@ 2021-07-25 21:42 ` Taylor Simpson
2021-07-25 21:42 ` [PULL v2 2/2] target/hexagon: Drop include of qemu.h Taylor Simpson
2021-07-26 18:18 ` [PULL v2 0/2] Hexagon (target/hexagon) remove put_user_*/get_user_* Peter Maydell
2 siblings, 0 replies; 4+ messages in thread
From: Taylor Simpson @ 2021-07-25 21:42 UTC (permalink / raw)
To: qemu-devel; +Cc: ale, peter.maydell, bcain, richard.henderson, tsimpson, philmd
Replace put_user_* with cpu_st*_data_ra
Replace get_user_* with cpu_ld*_data_ra
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Message-Id: <1626384156-6248-2-git-send-email-tsimpson@quicinc.com>
---
target/hexagon/op_helper.c | 39 ++++++++++++++++++---------------------
1 file changed, 18 insertions(+), 21 deletions(-)
diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c
index 4595559..a959dba 100644
--- a/target/hexagon/op_helper.c
+++ b/target/hexagon/op_helper.c
@@ -17,6 +17,7 @@
#include "qemu/osdep.h"
#include "qemu.h"
+#include "exec/cpu_ldst.h"
#include "exec/helper-proto.h"
#include "fpu/softfloat.h"
#include "cpu.h"
@@ -140,22 +141,22 @@ void HELPER(debug_check_store_width)(CPUHexagonState *env, int slot, int check)
void HELPER(commit_store)(CPUHexagonState *env, int slot_num)
{
- switch (env->mem_log_stores[slot_num].width) {
+ uintptr_t ra = GETPC();
+ uint8_t width = env->mem_log_stores[slot_num].width;
+ target_ulong va = env->mem_log_stores[slot_num].va;
+
+ switch (width) {
case 1:
- put_user_u8(env->mem_log_stores[slot_num].data32,
- env->mem_log_stores[slot_num].va);
+ cpu_stb_data_ra(env, va, env->mem_log_stores[slot_num].data32, ra);
break;
case 2:
- put_user_u16(env->mem_log_stores[slot_num].data32,
- env->mem_log_stores[slot_num].va);
+ cpu_stw_data_ra(env, va, env->mem_log_stores[slot_num].data32, ra);
break;
case 4:
- put_user_u32(env->mem_log_stores[slot_num].data32,
- env->mem_log_stores[slot_num].va);
+ cpu_stl_data_ra(env, va, env->mem_log_stores[slot_num].data32, ra);
break;
case 8:
- put_user_u64(env->mem_log_stores[slot_num].data64,
- env->mem_log_stores[slot_num].va);
+ cpu_stq_data_ra(env, va, env->mem_log_stores[slot_num].data64, ra);
break;
default:
g_assert_not_reached();
@@ -393,37 +394,33 @@ static void check_noshuf(CPUHexagonState *env, uint32_t slot)
static uint8_t mem_load1(CPUHexagonState *env, uint32_t slot,
target_ulong vaddr)
{
- uint8_t retval;
+ uintptr_t ra = GETPC();
check_noshuf(env, slot);
- get_user_u8(retval, vaddr);
- return retval;
+ return cpu_ldub_data_ra(env, vaddr, ra);
}
static uint16_t mem_load2(CPUHexagonState *env, uint32_t slot,
target_ulong vaddr)
{
- uint16_t retval;
+ uintptr_t ra = GETPC();
check_noshuf(env, slot);
- get_user_u16(retval, vaddr);
- return retval;
+ return cpu_lduw_data_ra(env, vaddr, ra);
}
static uint32_t mem_load4(CPUHexagonState *env, uint32_t slot,
target_ulong vaddr)
{
- uint32_t retval;
+ uintptr_t ra = GETPC();
check_noshuf(env, slot);
- get_user_u32(retval, vaddr);
- return retval;
+ return cpu_ldl_data_ra(env, vaddr, ra);
}
static uint64_t mem_load8(CPUHexagonState *env, uint32_t slot,
target_ulong vaddr)
{
- uint64_t retval;
+ uintptr_t ra = GETPC();
check_noshuf(env, slot);
- get_user_u64(retval, vaddr);
- return retval;
+ return cpu_ldq_data_ra(env, vaddr, ra);
}
/* Floating point */
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PULL v2 2/2] target/hexagon: Drop include of qemu.h
2021-07-25 21:42 [PULL v2 0/2] Hexagon (target/hexagon) remove put_user_*/get_user_* Taylor Simpson
2021-07-25 21:42 ` [PULL v2 1/2] " Taylor Simpson
@ 2021-07-25 21:42 ` Taylor Simpson
2021-07-26 18:18 ` [PULL v2 0/2] Hexagon (target/hexagon) remove put_user_*/get_user_* Peter Maydell
2 siblings, 0 replies; 4+ messages in thread
From: Taylor Simpson @ 2021-07-25 21:42 UTC (permalink / raw)
To: qemu-devel; +Cc: ale, peter.maydell, bcain, richard.henderson, tsimpson, philmd
From: Peter Maydell <peter.maydell@linaro.org>
The qemu.h file is a CONFIG_USER_ONLY header; it doesn't appear on
the include path for softmmu builds. Currently we include it
unconditionally in target/hexagon/op_helper.c. We used to need it
for the put_user_*() and get_user_*() functions, but now that we have
removed the uses of those from op_helper.c, the only reason it's
still there is that we're implicitly relying on it pulling in some
other headers.
Explicitly include the headers we need for other functions, and drop
the include of qemu.h.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20210717103017.20491-1-peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
---
target/hexagon/op_helper.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c
index a959dba..61d5cde 100644
--- a/target/hexagon/op_helper.c
+++ b/target/hexagon/op_helper.c
@@ -16,7 +16,8 @@
*/
#include "qemu/osdep.h"
-#include "qemu.h"
+#include "qemu/log.h"
+#include "exec/exec-all.h"
#include "exec/cpu_ldst.h"
#include "exec/helper-proto.h"
#include "fpu/softfloat.h"
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread