[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 21/31] target/s390x: Use unwind data for helper_
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH 21/31] target/s390x: Use unwind data for helper_tre |
Date: |
Tue, 23 May 2017 12:26:16 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 |
On 23.05.2017 05:03, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> target/s390x/mem_helper.c | 15 ++++++++-------
> target/s390x/translate.c | 1 -
> 2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c
> index 748a6e8..4c6c6ee 100644
> --- a/target/s390x/mem_helper.c
> +++ b/target/s390x/mem_helper.c
> @@ -720,8 +720,10 @@ void HELPER(tr)(CPUS390XState *env, uint32_t len,
> uint64_t array,
> uint64_t HELPER(tre)(CPUS390XState *env, uint64_t array,
> uint64_t len, uint64_t trans)
> {
> + uintptr_t ra = GETPC();
> uint8_t end = env->regs[0] & 0xff;
> uint64_t l = len;
> + uint32_t cc = 0;
> uint64_t i;
>
> if (!(env->psw.mask & PSW_MASK_64)) {
> @@ -733,25 +735,24 @@ uint64_t HELPER(tre)(CPUS390XState *env, uint64_t array,
> amount of work we're willing to do. For now, let's cap at 8k. */
> if (l > 0x2000) {
> l = 0x2000;
> - env->cc_op = 3;
> - } else {
> - env->cc_op = 0;
> + cc = 3;
> }
>
> for (i = 0; i < l; i++) {
> uint8_t byte, new_byte;
>
> - byte = cpu_ldub_data(env, array + i);
> + byte = cpu_ldub_data_ra(env, array + i, ra);
>
> if (byte == end) {
> - env->cc_op = 1;
> + cc = 1;
> break;
> }
>
> - new_byte = cpu_ldub_data(env, trans + byte);
> - cpu_stb_data(env, array + i, new_byte);
> + new_byte = cpu_ldub_data_ra(env, trans + byte, ra);
> + cpu_stb_data_ra(env, array + i, new_byte, ra);
> }
>
> + env->cc_op = cc;
> env->retxl = len - i;
> return array + i;
> }
I think you should mention in the patch description that you've changed
the behavior of the CC settings here, too (it's not changed anymore in
case of exceptions).
Apart from that:
Reviewed-by: Thomas Huth <address@hidden>
- [Qemu-devel] [PATCH 19/31] target/s390x: Use unwind data for helper_unpk, (continued)
- [Qemu-devel] [PATCH 19/31] target/s390x: Use unwind data for helper_unpk, Richard Henderson, 2017/05/22
- [Qemu-devel] [PATCH 20/31] target/s390x: Use unwind data for helper_tr, Richard Henderson, 2017/05/22
- [Qemu-devel] [PATCH 22/31] target/s390x: Use unwind data for helper_trt, Richard Henderson, 2017/05/22
- [Qemu-devel] [PATCH 21/31] target/s390x: Use unwind data for helper_tre, Richard Henderson, 2017/05/22
- [Qemu-devel] [PATCH 23/31] target/s390x: Use unwind data for helper_lctlg, Richard Henderson, 2017/05/22
- [Qemu-devel] [PATCH 25/31] target/s390x: Use unwind data for helper_stctl, Richard Henderson, 2017/05/22
- [Qemu-devel] [PATCH 26/31] target/s390x: Use unwind data for helper_testblock, Richard Henderson, 2017/05/22