Lines Matching +full:aarch64_be +full:- +full:linux +full:- +full:user
4 * Copyright (c) 2013 SUSE LINUX Products GmbH
31 #include "accel/tcg/cpu-mmu-index.h"
38 CPUARMState *env = &cpu->env; in aarch64_cpu_gdb_read_register()
42 return gdb_get_reg64(mem_buf, env->xregs[n]); in aarch64_cpu_gdb_read_register()
46 return gdb_get_reg64(mem_buf, env->xregs[31]); in aarch64_cpu_gdb_read_register()
48 return gdb_get_reg64(mem_buf, env->pc); in aarch64_cpu_gdb_read_register()
59 CPUARMState *env = &cpu->env; in aarch64_cpu_gdb_write_register()
66 env->xregs[n] = tmp; in aarch64_cpu_gdb_write_register()
71 env->xregs[31] = tmp; in aarch64_cpu_gdb_write_register()
74 env->pc = tmp; in aarch64_cpu_gdb_write_register()
88 CPUARMState *env = &cpu->env; in aarch64_gdb_get_fpu_reg()
93 /* 128 bit FP register - quads are in LE order */ in aarch64_gdb_get_fpu_reg()
111 CPUARMState *env = &cpu->env; in aarch64_gdb_set_fpu_reg()
120 * On the wire these are target-endian 128 bit values. in aarch64_gdb_set_fpu_reg()
121 * In the CPU state these are host-order uint64_t values in aarch64_gdb_set_fpu_reg()
122 * with the least-significant one first. This means they're in aarch64_gdb_set_fpu_reg()
124 * only true for us for aarch64_be-linux-user). in aarch64_gdb_set_fpu_reg()
152 CPUARMState *env = &cpu->env; in aarch64_gdb_get_sve_reg()
159 for (vq = 0; vq < cpu->sve_max_vq; vq++) { in aarch64_gdb_get_sve_reg()
161 env->vfp.zregs[reg].d[vq * 2 + 1], in aarch64_gdb_get_sve_reg()
162 env->vfp.zregs[reg].d[vq * 2]); in aarch64_gdb_get_sve_reg()
173 int preg = reg - 34; in aarch64_gdb_get_sve_reg()
175 for (vq = 0; vq < cpu->sve_max_vq; vq = vq + 4) { in aarch64_gdb_get_sve_reg()
176 len += gdb_get_reg64(buf, env->vfp.pregs[preg].p[vq / 4]); in aarch64_gdb_get_sve_reg()
201 CPUARMState *env = &cpu->env; in aarch64_gdb_set_sve_reg()
209 for (vq = 0; vq < cpu->sve_max_vq; vq++) { in aarch64_gdb_set_sve_reg()
211 env->vfp.zregs[reg].d[vq * 2 + 1] = ldq_p(buf); in aarch64_gdb_set_sve_reg()
213 env->vfp.zregs[reg].d[vq * 2] = ldq_p(buf); in aarch64_gdb_set_sve_reg()
215 env->vfp.zregs[reg].d[vq * 2] = ldq_p(buf); in aarch64_gdb_set_sve_reg()
217 env->vfp.zregs[reg].d[vq * 2 + 1] = ldq_p(buf); in aarch64_gdb_set_sve_reg()
232 int preg = reg - 34; in aarch64_gdb_set_sve_reg()
234 for (vq = 0; vq < cpu->sve_max_vq; vq = vq + 4) { in aarch64_gdb_set_sve_reg()
235 env->vfp.pregs[preg].p[vq / 4] = ldq_p(buf); in aarch64_gdb_set_sve_reg()
255 CPUARMState *env = &cpu->env; in aarch64_gdb_get_pauth_reg()
264 * pauth_{d,c}mask, for use with Linux user processes, and in aarch64_gdb_get_pauth_reg()
269 * For the purpose of pauth_ptr_mask, we can use any well-formed in aarch64_gdb_get_pauth_reg()
270 * address within the address space half -- here, 0 and -1. in aarch64_gdb_get_pauth_reg()
278 param = aa64_va_parameters(env, -is_high, mmu_idx, is_data, false); in aarch64_gdb_get_pauth_reg()
288 /* All pseudo registers are read-only. */ in aarch64_gdb_set_pauth_reg()
356 for (i = ARRAY_SIZE(suf) - 1; i >= 0; i--) { in output_vector_union_type()
367 int reg_width = cpu->sve_max_vq * 128; in arm_gen_dynamic_svereg_feature()
368 int pred_width = cpu->sve_max_vq * 16; in arm_gen_dynamic_svereg_feature()
374 gdb_feature_builder_init(&builder, &cpu->dyn_svereg_feature.desc, in arm_gen_dynamic_svereg_feature()
375 "org.gnu.gdb.aarch64.sve", "sve-registers.xml", in arm_gen_dynamic_svereg_feature()
408 /* Define the vector length pseudo-register. */ in arm_gen_dynamic_svereg_feature()
413 return &cpu->dyn_svereg_feature.desc; in arm_gen_dynamic_svereg_feature()
420 CPUARMState *env = &cpu->env; in aarch64_gdb_get_tag_ctl_reg()
425 tcf0 = extract64(env->cp15.sctlr_el[1], 38, 2); in aarch64_gdb_get_tag_ctl_reg()
434 CPUARMState *env = &cpu->env; in aarch64_gdb_set_tag_ctl_reg()
447 * 'tag_ctl' register is actually a "pseudo-register" provided by GDB to in aarch64_gdb_set_tag_ctl_reg()
464 CPUARMState *env = &cpu->env; in handle_q_memtag()
467 uint64_t addr = gdb_get_cmd_param(params, 0)->val_ull; in handle_q_memtag()
468 uint64_t len = gdb_get_cmd_param(params, 1)->val_ul; in handle_q_memtag()
469 int type = gdb_get_cmd_param(params, 2)->val_ul; in handle_q_memtag()
504 gdb_put_packet(str_buf->str); in handle_q_memtag()
510 CPUARMState *env = &cpu->env; in handle_q_isaddresstagged()
513 uint64_t addr = gdb_get_cmd_param(params, 0)->val_ull; in handle_q_isaddresstagged()
530 CPUARMState *env = &cpu->env; in handle_Q_memtag()
533 uint64_t start_addr = gdb_get_cmd_param(params, 0)->val_ull; in handle_Q_memtag()
534 uint64_t len = gdb_get_cmd_param(params, 1)->val_ul; in handle_Q_memtag()
535 int type = gdb_get_cmd_param(params, 2)->val_ul; in handle_Q_memtag()
536 char const *new_tags_str = gdb_get_cmd_param(params, 3)->data; in handle_Q_memtag()
553 end_addr = start_addr + (len - 1); /* 'len' is always >= 1 */ in handle_Q_memtag()
590 new_tag = new_tags->data[new_tag_index % num_new_tags]; in handle_Q_memtag()
638 g_string_append(qsupported, ";memory-tagging+"); in aarch64_cpu_register_gdb_commands()