[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH v4 5/5] aarch64-linux-user: Add support for SVE si
From: |
Peter Maydell |
Subject: |
Re: [Qemu-arm] [PATCH v4 5/5] aarch64-linux-user: Add support for SVE signal frame records |
Date: |
Mon, 5 Mar 2018 15:44:19 +0000 |
On 3 March 2018 at 14:38, Richard Henderson
<address@hidden> wrote:
> Depending on the currently selected size of the SVE vector registers,
> we can either store the data within the "standard" allocation, or we
> may beedn to allocate additional space with an EXTRA record.
>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> linux-user/signal.c | 210
> +++++++++++++++++++++++++++++++++++++++++++++++-----
> 1 file changed, 192 insertions(+), 18 deletions(-)
> +static int alloc_sigframe_space(int this_size, target_sigframe_layout *l)
> +{
> + /* Make sure there will always be space for the end marker. */
> + const int std_size = sizeof(struct target_rt_sigframe)
> + - sizeof(struct target_aarch64_ctx);
> + int this_loc = l->total_size;
> +
> + if (l->extra_base) {
> + /* Once we have begun an extra space, all allocations go there. */
> + l->extra_size += this_size;
> + } else if (this_size + this_loc > std_size) {
> + /* This allocation does not fit in the standard space. */
I think strictly this runs into trouble if it lets us put something
in the standard space that runs right up to the end marker and
doesn't leave space for the extra marker, and then the next thing
can't put in the extra marker. But this won't happen in practice,
so I don't think we really need to try to handle that.
> + /* Allocate the extra record. */
> + l->extra_ofs = this_loc;
> + l->total_size += sizeof(struct target_extra_context);
> +
> + /* Allocate the standard end record. */
> + l->std_end_ofs = l->total_size;
> + l->total_size += sizeof(struct target_aarch64_ctx);
> +
> + /* Allocate the requested record. */
> + l->extra_base = this_loc = l->total_size;
> + l->extra_size = this_size;
> + }
> + l->total_size += this_size;
> +
> + return this_loc;
> +}
thanks
-- PMM
- [Qemu-arm] [PATCH v4 0/5] target/arm linux-user changes for sve, Richard Henderson, 2018/03/03
- [Qemu-arm] [PATCH v4 2/5] aarch64-linux-user: Split out helpers for guest signal handling, Richard Henderson, 2018/03/03
- [Qemu-arm] [PATCH v4 4/5] aarch64-linux-user: Add support for EXTRA signal frame records, Richard Henderson, 2018/03/03
- [Qemu-arm] [PATCH v4 5/5] aarch64-linux-user: Add support for SVE signal frame records, Richard Henderson, 2018/03/03
- [Qemu-arm] [PATCH v4 3/5] aarch64-linux-user: Remove struct target_aux_context, Richard Henderson, 2018/03/03
- Re: [Qemu-arm] [Qemu-devel] [PATCH v4 0/5] target/arm linux-user changes for sve, Peter Maydell, 2018/03/05