Re: [PATCH 07/17] target/arm: Return struct from allocation_tag_mem_internal
Philippe Mathieu-Daudé <[email protected]>
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 18/7/26 01:22, Richard Henderson wrote: > Return not just the tag memory, but the data memory, flags, > and attributes. Make sure probe of NoTagAccess looks like > any other page permission failure. > > Signed-off-by: Richard Henderson <[email protected]> > --- > target/arm/tcg/mte_helper.c | 102 +++++++++++++++++++++--------------- > 1 file changed, 60 insertions(+), 42 deletions(-) > -static uint8_t * > +typedef struct AllocationTagMem { > + uint8_t *tag_mem; > + void *ptr_mem; > + int flags; > + MemTxAttrs attrs; > +} AllocationTagMem; > + > +static AllocationTagMem > allocation_tag_mem_internal(CPUARMState *env, int ptr_mmu_idx, > - uint64_t ptr, MMUAccessType ptr_access, > + vaddr ptr, MMUAccessType ptr_access, > int ptr_size, MMUAccessType tag_access, > bool probe, uintptr_t ra) > { > -#ifdef CONFIG_USER_ONLY > - const size_t page_data_size = TARGET_PAGE_SIZE >> (LOG2_TAG_GRANULE + 1); > - uint64_t clean_ptr = useronly_clean_ptr(ptr); > - int flags = page_get_flags(clean_ptr); > - uint8_t *tags; > - uintptr_t index; > + AllocationTagMem ret = { }; I'd feel safer starting with: AllocationTagMem ret = { .flags = TLB_INVALID_MASK, .attrs = MEMTXATTRS_UNSPECIFIED, }; anyway: Reviewed-by: Philippe Mathieu-Daudé <[email protected]>