From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: david@redhat.com
Subject: [PATCH 4/7] target/s390x: Tidy access_prepare_nf
Date: Mon, 9 Jan 2023 12:18:53 -0800 [thread overview]
Message-ID: <20230109201856.3916639-5-richard.henderson@linaro.org> (raw)
In-Reply-To: <20230109201856.3916639-1-richard.henderson@linaro.org>
Assign to access struct immediately, rather than waiting
until the end of the function. This means we can pass
address of haddr struct members instead of allocating
extra space on the local stack.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/s390x/tcg/mem_helper.c | 30 +++++++++++++-----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/target/s390x/tcg/mem_helper.c b/target/s390x/tcg/mem_helper.c
index 0f2830f87c..59237fe7de 100644
--- a/target/s390x/tcg/mem_helper.c
+++ b/target/s390x/tcg/mem_helper.c
@@ -176,39 +176,35 @@ static int access_prepare_nf(S390Access *access, CPUS390XState *env,
MMUAccessType access_type,
int mmu_idx, uintptr_t ra)
{
- void *haddr1, *haddr2 = NULL;
int size1, size2, exc;
- vaddr vaddr2 = 0;
assert(size > 0 && size <= 4096);
size1 = MIN(size, -(vaddr1 | TARGET_PAGE_MASK)),
size2 = size - size1;
+ memset(access, 0, sizeof(*access));
+ access->vaddr1 = vaddr1;
+ access->size1 = size1;
+ access->size2 = size2;
+ access->mmu_idx = mmu_idx;
+
exc = s390_probe_access(env, vaddr1, size1, access_type, mmu_idx, nonfault,
- &haddr1, ra);
- if (exc) {
+ &access->haddr1, ra);
+ if (unlikely(exc)) {
return exc;
}
if (unlikely(size2)) {
/* The access crosses page boundaries. */
- vaddr2 = wrap_address(env, vaddr1 + size1);
+ vaddr vaddr2 = wrap_address(env, vaddr1 + size1);
+
+ access->vaddr2 = vaddr2;
exc = s390_probe_access(env, vaddr2, size2, access_type, mmu_idx,
- nonfault, &haddr2, ra);
- if (exc) {
+ nonfault, &access->haddr2, ra);
+ if (unlikely(exc)) {
return exc;
}
}
-
- *access = (S390Access) {
- .vaddr1 = vaddr1,
- .vaddr2 = vaddr2,
- .haddr1 = haddr1,
- .haddr2 = haddr2,
- .size1 = size1,
- .size2 = size2,
- .mmu_idx = mmu_idx
- };
return 0;
}
--
2.34.1
next prev parent reply other threads:[~2023-01-09 20:23 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-09 20:18 [PATCH 0/7] target/s390x: mem_helper.c cleanups Richard Henderson
2023-01-09 20:18 ` [PATCH 1/7] target/s390x: Fix s390_probe_access for user-only Richard Henderson
2023-01-11 10:12 ` David Hildenbrand
2023-03-15 15:30 ` Thomas Huth
2023-03-16 14:29 ` Richard Henderson
2023-01-09 20:18 ` [PATCH 2/7] target/s390x: Pass S390Access pointer into access_prepare Richard Henderson
2023-01-11 10:13 ` David Hildenbrand
2023-01-09 20:18 ` [PATCH 3/7] target/s390x: Use void* for haddr in S390Access Richard Henderson
2023-01-11 10:15 ` David Hildenbrand
2023-01-09 20:18 ` Richard Henderson [this message]
2023-01-11 10:15 ` [PATCH 4/7] target/s390x: Tidy access_prepare_nf David Hildenbrand
2023-01-09 20:18 ` [PATCH 5/7] target/s390x: Remove TLB_NOTDIRTY workarounds Richard Henderson
2023-01-11 10:19 ` David Hildenbrand
2023-01-09 20:18 ` [PATCH 6/7] target/s390x: Inline do_access_{get,set}_byte Richard Henderson
2023-01-11 10:20 ` David Hildenbrand
2023-01-09 20:18 ` [PATCH 7/7] target/s390x: Hoist some computation in access_memmove Richard Henderson
2023-01-11 10:22 ` David Hildenbrand
2023-02-20 17:53 ` [PATCH 0/7] target/s390x: mem_helper.c cleanups Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230109201856.3916639-5-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=david@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).