Lines Matching refs:ptr

86                                          uint64_t ptr, MMUAccessType ptr_access,  in allocation_tag_mem_probe()  argument
91 uint64_t clean_ptr = useronly_clean_ptr(ptr); in allocation_tag_mem_probe()
99 cpu_loop_exit_sigsegv(env_cpu(env), ptr, ptr_access, in allocation_tag_mem_probe()
110 index = extract32(ptr, LOG2_TAG_GRANULE + 1, in allocation_tag_mem_probe()
133 flags = probe_access_full(env, ptr, 0, ptr_access, ptr_mmu_idx, in allocation_tag_mem_probe()
152 "but is not backed by host ram\n", ptr); in allocation_tag_mem_probe()
160 ptr_paddr = full->phys_addr | (ptr & ~TARGET_PAGE_MASK); in allocation_tag_mem_probe()
170 in_page = -(ptr | TARGET_PAGE_MASK); in allocation_tag_mem_probe()
172 flags |= probe_access_full(env, ptr + in_page, 0, ptr_access, in allocation_tag_mem_probe()
181 cpu_check_watchpoint(env_cpu(env), ptr, ptr_size, attrs, wp, ra); in allocation_tag_mem_probe()
221 uint64_t ptr, MMUAccessType ptr_access, in allocation_tag_mem() argument
225 return allocation_tag_mem_probe(env, ptr_mmu_idx, ptr, ptr_access, in allocation_tag_mem()
277 uint64_t HELPER(addsubg)(CPUARMState *env, uint64_t ptr, in HELPER()
280 int start_tag = allocation_tag_from_addr(ptr); in HELPER()
284 return address_with_allocation_tag(ptr + offset, rtag); in HELPER()
287 static int load_tag1(uint64_t ptr, uint8_t *mem) in load_tag1() argument
289 int ofs = extract32(ptr, LOG2_TAG_GRANULE, 1) * 4; in load_tag1()
293 uint64_t HELPER(ldg)(CPUARMState *env, uint64_t ptr, uint64_t xt) in HELPER()
300 mem = allocation_tag_mem(env, mmu_idx, ptr, MMU_DATA_LOAD, 1, in HELPER()
305 rtag = load_tag1(ptr, mem); in HELPER()
311 static void check_tag_aligned(CPUARMState *env, uint64_t ptr, uintptr_t ra) in check_tag_aligned() argument
313 if (unlikely(!QEMU_IS_ALIGNED(ptr, TAG_GRANULE))) { in check_tag_aligned()
314 arm_cpu_do_unaligned_access(env_cpu(env), ptr, MMU_DATA_STORE, in check_tag_aligned()
321 static void store_tag1(uint64_t ptr, uint8_t *mem, int tag) in store_tag1() argument
323 int ofs = extract32(ptr, LOG2_TAG_GRANULE, 1) * 4; in store_tag1()
328 static void store_tag1_parallel(uint64_t ptr, uint8_t *mem, int tag) in store_tag1_parallel() argument
330 int ofs = extract32(ptr, LOG2_TAG_GRANULE, 1) * 4; in store_tag1_parallel()
345 static inline void do_stg(CPUARMState *env, uint64_t ptr, uint64_t xt, in do_stg() argument
351 check_tag_aligned(env, ptr, ra); in do_stg()
354 mem = allocation_tag_mem(env, mmu_idx, ptr, MMU_DATA_STORE, TAG_GRANULE, in do_stg()
359 store1(ptr, mem, allocation_tag_from_addr(xt)); in do_stg()
363 void HELPER(stg)(CPUARMState *env, uint64_t ptr, uint64_t xt) in HELPER()
365 do_stg(env, ptr, xt, GETPC(), store_tag1); in HELPER()
368 void HELPER(stg_parallel)(CPUARMState *env, uint64_t ptr, uint64_t xt) in HELPER()
370 do_stg(env, ptr, xt, GETPC(), store_tag1_parallel); in HELPER()
373 void HELPER(stg_stub)(CPUARMState *env, uint64_t ptr) in HELPER()
378 check_tag_aligned(env, ptr, ra); in HELPER()
379 probe_write(env, ptr, TAG_GRANULE, mmu_idx, ra); in HELPER()
382 static inline void do_st2g(CPUARMState *env, uint64_t ptr, uint64_t xt, in do_st2g() argument
389 check_tag_aligned(env, ptr, ra); in do_st2g()
395 if (ptr & TAG_GRANULE) { in do_st2g()
397 mem1 = allocation_tag_mem(env, mmu_idx, ptr, MMU_DATA_STORE, in do_st2g()
399 mem2 = allocation_tag_mem(env, mmu_idx, ptr + TAG_GRANULE, in do_st2g()
412 mem1 = allocation_tag_mem(env, mmu_idx, ptr, MMU_DATA_STORE, in do_st2g()
421 void HELPER(st2g)(CPUARMState *env, uint64_t ptr, uint64_t xt) in HELPER()
423 do_st2g(env, ptr, xt, GETPC(), store_tag1); in HELPER()
426 void HELPER(st2g_parallel)(CPUARMState *env, uint64_t ptr, uint64_t xt) in HELPER()
428 do_st2g(env, ptr, xt, GETPC(), store_tag1_parallel); in HELPER()
431 void HELPER(st2g_stub)(CPUARMState *env, uint64_t ptr) in HELPER()
435 int in_page = -(ptr | TARGET_PAGE_MASK); in HELPER()
437 check_tag_aligned(env, ptr, ra); in HELPER()
440 probe_write(env, ptr, 2 * TAG_GRANULE, mmu_idx, ra); in HELPER()
442 probe_write(env, ptr, TAG_GRANULE, mmu_idx, ra); in HELPER()
443 probe_write(env, ptr + TAG_GRANULE, TAG_GRANULE, mmu_idx, ra); in HELPER()
447 uint64_t HELPER(ldgm)(CPUARMState *env, uint64_t ptr) in HELPER()
457 ptr = QEMU_ALIGN_DOWN(ptr, gm_bs_bytes); in HELPER()
460 tag_mem = allocation_tag_mem(env, mmu_idx, ptr, MMU_DATA_LOAD, in HELPER()
503 shift = extract64(ptr, LOG2_TAG_GRANULE, 4) * 4; in HELPER()
507 void HELPER(stgm)(CPUARMState *env, uint64_t ptr, uint64_t val) in HELPER()
516 ptr = QEMU_ALIGN_DOWN(ptr, gm_bs_bytes); in HELPER()
519 tag_mem = allocation_tag_mem(env, mmu_idx, ptr, MMU_DATA_STORE, in HELPER()
531 shift = extract64(ptr, LOG2_TAG_GRANULE, 4) * 4; in HELPER()
556 void HELPER(stzgm_tags)(CPUARMState *env, uint64_t ptr, uint64_t val) in HELPER()
573 ptr &= -dcz_bytes; in HELPER()
575 mem = allocation_tag_mem(env, mmu_idx, ptr, MMU_DATA_STORE, dcz_bytes, in HELPER()
799 static int mte_probe_int(CPUARMState *env, uint32_t desc, uint64_t ptr, in mte_probe_int() argument
809 bit55 = extract64(ptr, 55, 1); in mte_probe_int()
810 *fault = ptr; in mte_probe_int()
817 ptr_tag = allocation_tag_from_addr(ptr); in mte_probe_int()
828 ptr_last = ptr + sizem1; in mte_probe_int()
831 tag_first = QEMU_ALIGN_DOWN(ptr, TAG_GRANULE); in mte_probe_int()
836 prev_page = ptr & TARGET_PAGE_MASK; in mte_probe_int()
841 mem1 = allocation_tag_mem(env, mmu_idx, ptr, type, sizem1 + 1, in mte_probe_int()
847 n = checkN(mem1, ptr & TAG_GRANULE, ptr_tag, tag_count); in mte_probe_int()
850 mem1 = allocation_tag_mem(env, mmu_idx, ptr, type, next_page - ptr, in mte_probe_int()
864 n = checkN(mem1, ptr & TAG_GRANULE, ptr_tag, c); in mte_probe_int()
889 uint64_t mte_check(CPUARMState *env, uint32_t desc, uint64_t ptr, uintptr_t ra) in mte_check() argument
892 int ret = mte_probe_int(env, desc, ptr, ra, &fault); in mte_check()
897 return ptr; in mte_check()
899 return useronly_clean_ptr(ptr); in mte_check()
902 uint64_t HELPER(mte_check)(CPUARMState *env, uint32_t desc, uint64_t ptr) in HELPER()
914 if (unlikely(ptr & align)) { in HELPER()
918 arm_cpu_do_unaligned_access(env_cpu(env), ptr, type, idx, GETPC()); in HELPER()
922 return mte_check(env, desc, ptr, GETPC()); in HELPER()
931 bool mte_probe(CPUARMState *env, uint32_t desc, uint64_t ptr) in mte_probe() argument
934 int ret = mte_probe_int(env, desc, ptr, 0, &fault); in mte_probe()
942 uint64_t HELPER(mte_check_zva)(CPUARMState *env, uint32_t desc, uint64_t ptr) in HELPER()
951 bit55 = extract64(ptr, 55, 1); in HELPER()
955 return ptr; in HELPER()
958 ptr_tag = allocation_tag_from_addr(ptr); in HELPER()
973 align_ptr = ptr & -dcz_bytes; in HELPER()
981 (void) probe_write(env, ptr, 1, mmu_idx, ra); in HELPER()
1042 return useronly_clean_ptr(ptr); in HELPER()
1045 uint64_t mte_mops_probe(CPUARMState *env, uint64_t ptr, uint64_t size, in mte_mops_probe() argument
1056 mem = allocation_tag_mem_probe(env, mmu_idx, ptr, in mte_mops_probe()
1074 ptr_tag = allocation_tag_from_addr(ptr); in mte_mops_probe()
1075 tag_first = QEMU_ALIGN_DOWN(ptr, TAG_GRANULE); in mte_mops_probe()
1076 tag_last = QEMU_ALIGN_DOWN(ptr + size - 1, TAG_GRANULE); in mte_mops_probe()
1078 n = checkN(mem, ptr & TAG_GRANULE, ptr_tag, tag_count); in mte_mops_probe()
1091 return n * TAG_GRANULE - (ptr - tag_first); in mte_mops_probe()
1095 uint64_t mte_mops_probe_rev(CPUARMState *env, uint64_t ptr, uint64_t size, in mte_mops_probe_rev() argument
1114 mem = allocation_tag_mem_probe(env, mmu_idx, ptr, in mte_mops_probe_rev()
1132 ptr_tag = allocation_tag_from_addr(ptr); in mte_mops_probe_rev()
1133 tag_first = QEMU_ALIGN_DOWN(ptr - (size - 1), TAG_GRANULE); in mte_mops_probe_rev()
1134 tag_last = QEMU_ALIGN_DOWN(ptr, TAG_GRANULE); in mte_mops_probe_rev()
1136 n = checkNrev(mem, ptr & TAG_GRANULE, ptr_tag, tag_count); in mte_mops_probe_rev()
1149 return (n - 1) * TAG_GRANULE + ((ptr + 1) - tag_last); in mte_mops_probe_rev()
1153 void mte_mops_set_tags(CPUARMState *env, uint64_t ptr, uint64_t size, in mte_mops_set_tags() argument
1167 mem = allocation_tag_mem_probe(env, mmu_idx, ptr, MMU_DATA_STORE, size, in mte_mops_set_tags()
1177 ptr_tag = allocation_tag_from_addr(ptr); in mte_mops_set_tags()
1179 if (ptr & TAG_GRANULE) { in mte_mops_set_tags()