* [PATCH 0/4] target/loongarch: Remove some unnecessary target_ulong uses @ 2025-10-09 20:19 Philippe Mathieu-Daudé 2025-10-09 20:19 ` [PATCH 1/4] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Philippe Mathieu-Daudé @ 2025-10-09 20:19 UTC (permalink / raw) To: qemu-devel Cc: Song Gao, Bibo Mao, Pierrick Bouvier, Anton Johansson, Jiaxun Yang, Philippe Mathieu-Daudé Remove few invalid target_ulong uses in LoongArch frontend. Philippe Mathieu-Daudé (4): hw/loongarch/boot: Remove unnecessary cast to target_ulong target/loongarch: Remove target_ulong use in gen_goto_tb() target/loongarch: Remove target_ulong use in gdb_write_register handler target/loongarch: Do not use target_ulong type for LDDIR level target/loongarch/cpu-mmu.h | 2 +- target/loongarch/tcg/helper.h | 2 +- hw/loongarch/boot.c | 7 ++++--- target/loongarch/cpu_helper.c | 2 +- target/loongarch/gdbstub.c | 2 +- target/loongarch/tcg/tlb_helper.c | 4 ++-- target/loongarch/tcg/translate.c | 2 +- target/loongarch/tcg/insn_trans/trans_privileged.c.inc | 2 +- 8 files changed, 12 insertions(+), 11 deletions(-) -- 2.51.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/4] hw/loongarch/boot: Remove unnecessary cast to target_ulong 2025-10-09 20:19 [PATCH 0/4] target/loongarch: Remove some unnecessary target_ulong uses Philippe Mathieu-Daudé @ 2025-10-09 20:19 ` Philippe Mathieu-Daudé 2025-10-09 21:46 ` Richard Henderson 2025-10-09 20:19 ` [PATCH 2/4] target/loongarch: Remove target_ulong use in gen_goto_tb() Philippe Mathieu-Daudé ` (2 subsequent siblings) 3 siblings, 1 reply; 9+ messages in thread From: Philippe Mathieu-Daudé @ 2025-10-09 20:19 UTC (permalink / raw) To: qemu-devel Cc: Song Gao, Bibo Mao, Pierrick Bouvier, Anton Johansson, Jiaxun Yang, Philippe Mathieu-Daudé Reduce initrd_size scope. It is already of signed type (ssize_t), no need to cast to unsigned for the comparison. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/loongarch/boot.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/loongarch/boot.c b/hw/loongarch/boot.c index a516415822d..3dd48cb8aab 100644 --- a/hw/loongarch/boot.c +++ b/hw/loongarch/boot.c @@ -306,7 +306,7 @@ static ram_addr_t alloc_initrd_memory(struct loongarch_boot_info *info, static int64_t load_kernel_info(struct loongarch_boot_info *info) { uint64_t kernel_entry, kernel_low, kernel_high, initrd_offset = 0; - ssize_t kernel_size, initrd_size; + ssize_t kernel_size; kernel_size = load_elf(info->kernel_filename, NULL, cpu_loongarch_virt_to_phys, NULL, @@ -328,7 +328,8 @@ static int64_t load_kernel_info(struct loongarch_boot_info *info) } if (info->initrd_filename) { - initrd_size = get_image_size(info->initrd_filename); + ssize_t initrd_size = get_image_size(info->initrd_filename); + if (initrd_size > 0) { initrd_offset = ROUND_UP(kernel_high + 4 * kernel_size, 64 * KiB); initrd_offset = alloc_initrd_memory(info, initrd_offset, @@ -337,7 +338,7 @@ static int64_t load_kernel_info(struct loongarch_boot_info *info) initrd_offset, initrd_size); } - if (initrd_size == (target_ulong)-1) { + if (initrd_size == -1) { error_report("could not load initial ram disk '%s'", info->initrd_filename); exit(1); -- 2.51.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] hw/loongarch/boot: Remove unnecessary cast to target_ulong 2025-10-09 20:19 ` [PATCH 1/4] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé @ 2025-10-09 21:46 ` Richard Henderson 0 siblings, 0 replies; 9+ messages in thread From: Richard Henderson @ 2025-10-09 21:46 UTC (permalink / raw) To: qemu-devel On 10/9/25 13:19, Philippe Mathieu-Daudé wrote: > Reduce initrd_size scope. It is already of signed type (ssize_t), > no need to cast to unsigned for the comparison. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > hw/loongarch/boot.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/hw/loongarch/boot.c b/hw/loongarch/boot.c > index a516415822d..3dd48cb8aab 100644 > --- a/hw/loongarch/boot.c > +++ b/hw/loongarch/boot.c > @@ -306,7 +306,7 @@ static ram_addr_t alloc_initrd_memory(struct loongarch_boot_info *info, > static int64_t load_kernel_info(struct loongarch_boot_info *info) > { > uint64_t kernel_entry, kernel_low, kernel_high, initrd_offset = 0; > - ssize_t kernel_size, initrd_size; > + ssize_t kernel_size; > > kernel_size = load_elf(info->kernel_filename, NULL, > cpu_loongarch_virt_to_phys, NULL, > @@ -328,7 +328,8 @@ static int64_t load_kernel_info(struct loongarch_boot_info *info) > } > > if (info->initrd_filename) { > - initrd_size = get_image_size(info->initrd_filename); > + ssize_t initrd_size = get_image_size(info->initrd_filename); > + > if (initrd_size > 0) { > initrd_offset = ROUND_UP(kernel_high + 4 * kernel_size, 64 * KiB); > initrd_offset = alloc_initrd_memory(info, initrd_offset, > @@ -337,7 +338,7 @@ static int64_t load_kernel_info(struct loongarch_boot_info *info) > initrd_offset, initrd_size); > } > > - if (initrd_size == (target_ulong)-1) { > + if (initrd_size == -1) { > error_report("could not load initial ram disk '%s'", > info->initrd_filename); > exit(1); Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/4] target/loongarch: Remove target_ulong use in gen_goto_tb() 2025-10-09 20:19 [PATCH 0/4] target/loongarch: Remove some unnecessary target_ulong uses Philippe Mathieu-Daudé 2025-10-09 20:19 ` [PATCH 1/4] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé @ 2025-10-09 20:19 ` Philippe Mathieu-Daudé 2025-10-09 21:46 ` Richard Henderson 2025-10-09 20:19 ` [PATCH 3/4] target/loongarch: Remove target_ulong use in gdb_write_register handler Philippe Mathieu-Daudé 2025-10-09 20:19 ` [PATCH 4/4] target/loongarch: Do not use target_ulong type for LDDIR level Philippe Mathieu-Daudé 3 siblings, 1 reply; 9+ messages in thread From: Philippe Mathieu-Daudé @ 2025-10-09 20:19 UTC (permalink / raw) To: qemu-devel Cc: Song Gao, Bibo Mao, Pierrick Bouvier, Anton Johansson, Jiaxun Yang, Philippe Mathieu-Daudé translator_use_goto_tb() expects a vaddr type since commit b1c09220b4c ("accel/tcg: Replace target_ulong with vaddr in translator*()"). Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/loongarch/tcg/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/loongarch/tcg/translate.c b/target/loongarch/tcg/translate.c index 53a0b4c3ce9..e30b64c0e05 100644 --- a/target/loongarch/tcg/translate.c +++ b/target/loongarch/tcg/translate.c @@ -99,7 +99,7 @@ void generate_exception(DisasContext *ctx, int excp) ctx->base.is_jmp = DISAS_NORETURN; } -static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) +static inline void gen_goto_tb(DisasContext *ctx, int n, vaddr dest) { if (ctx->va32) { dest = (uint32_t) dest; -- 2.51.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/4] target/loongarch: Remove target_ulong use in gen_goto_tb() 2025-10-09 20:19 ` [PATCH 2/4] target/loongarch: Remove target_ulong use in gen_goto_tb() Philippe Mathieu-Daudé @ 2025-10-09 21:46 ` Richard Henderson 0 siblings, 0 replies; 9+ messages in thread From: Richard Henderson @ 2025-10-09 21:46 UTC (permalink / raw) To: qemu-devel On 10/9/25 13:19, Philippe Mathieu-Daudé wrote: > translator_use_goto_tb() expects a vaddr type since commit > b1c09220b4c ("accel/tcg: Replace target_ulong with vaddr in > translator*()"). > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/loongarch/tcg/translate.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/loongarch/tcg/translate.c b/target/loongarch/tcg/translate.c > index 53a0b4c3ce9..e30b64c0e05 100644 > --- a/target/loongarch/tcg/translate.c > +++ b/target/loongarch/tcg/translate.c > @@ -99,7 +99,7 @@ void generate_exception(DisasContext *ctx, int excp) > ctx->base.is_jmp = DISAS_NORETURN; > } > > -static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) > +static inline void gen_goto_tb(DisasContext *ctx, int n, vaddr dest) > { > if (ctx->va32) { > dest = (uint32_t) dest; Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/4] target/loongarch: Remove target_ulong use in gdb_write_register handler 2025-10-09 20:19 [PATCH 0/4] target/loongarch: Remove some unnecessary target_ulong uses Philippe Mathieu-Daudé 2025-10-09 20:19 ` [PATCH 1/4] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé 2025-10-09 20:19 ` [PATCH 2/4] target/loongarch: Remove target_ulong use in gen_goto_tb() Philippe Mathieu-Daudé @ 2025-10-09 20:19 ` Philippe Mathieu-Daudé 2025-10-09 21:47 ` Richard Henderson 2025-10-09 20:19 ` [PATCH 4/4] target/loongarch: Do not use target_ulong type for LDDIR level Philippe Mathieu-Daudé 3 siblings, 1 reply; 9+ messages in thread From: Philippe Mathieu-Daudé @ 2025-10-09 20:19 UTC (permalink / raw) To: qemu-devel Cc: Song Gao, Bibo Mao, Pierrick Bouvier, Anton Johansson, Jiaxun Yang, Philippe Mathieu-Daudé ldq_le_p() returns a uint64_t type, big enough to also hold ldl_le_p() return value. If we were building for a 32-bit LoongArch target, ldq_le_p() would not fit in target_ulong. Better stick to plain uint64_t. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/loongarch/gdbstub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/loongarch/gdbstub.c b/target/loongarch/gdbstub.c index 471eda28c73..23a5eecc20b 100644 --- a/target/loongarch/gdbstub.c +++ b/target/loongarch/gdbstub.c @@ -62,7 +62,7 @@ int loongarch_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) int loongarch_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) { CPULoongArchState *env = cpu_env(cs); - target_ulong tmp; + uint64_t tmp; int length = 0; if (n < 0 || n > 34) { -- 2.51.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/4] target/loongarch: Remove target_ulong use in gdb_write_register handler 2025-10-09 20:19 ` [PATCH 3/4] target/loongarch: Remove target_ulong use in gdb_write_register handler Philippe Mathieu-Daudé @ 2025-10-09 21:47 ` Richard Henderson 0 siblings, 0 replies; 9+ messages in thread From: Richard Henderson @ 2025-10-09 21:47 UTC (permalink / raw) To: qemu-devel On 10/9/25 13:19, Philippe Mathieu-Daudé wrote: > ldq_le_p() returns a uint64_t type, big enough to also hold > ldl_le_p() return value. If we were building for a 32-bit > LoongArch target, ldq_le_p() would not fit in target_ulong. > Better stick to plain uint64_t. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/loongarch/gdbstub.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/loongarch/gdbstub.c b/target/loongarch/gdbstub.c > index 471eda28c73..23a5eecc20b 100644 > --- a/target/loongarch/gdbstub.c > +++ b/target/loongarch/gdbstub.c > @@ -62,7 +62,7 @@ int loongarch_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) > int loongarch_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) > { > CPULoongArchState *env = cpu_env(cs); > - target_ulong tmp; > + uint64_t tmp; > int length = 0; > > if (n < 0 || n > 34) { Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 4/4] target/loongarch: Do not use target_ulong type for LDDIR level 2025-10-09 20:19 [PATCH 0/4] target/loongarch: Remove some unnecessary target_ulong uses Philippe Mathieu-Daudé ` (2 preceding siblings ...) 2025-10-09 20:19 ` [PATCH 3/4] target/loongarch: Remove target_ulong use in gdb_write_register handler Philippe Mathieu-Daudé @ 2025-10-09 20:19 ` Philippe Mathieu-Daudé 2025-10-09 21:50 ` Richard Henderson 3 siblings, 1 reply; 9+ messages in thread From: Philippe Mathieu-Daudé @ 2025-10-09 20:19 UTC (permalink / raw) To: qemu-devel Cc: Song Gao, Bibo Mao, Pierrick Bouvier, Anton Johansson, Jiaxun Yang, Philippe Mathieu-Daudé The LDDIR level page table is a 5-bit immediate. Using the uint32_t type for it is sufficient. Avoid the target_ulong type. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/loongarch/cpu-mmu.h | 2 +- target/loongarch/tcg/helper.h | 2 +- target/loongarch/cpu_helper.c | 2 +- target/loongarch/tcg/tlb_helper.c | 4 ++-- target/loongarch/tcg/insn_trans/trans_privileged.c.inc | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target/loongarch/cpu-mmu.h b/target/loongarch/cpu-mmu.h index 0068d22efcb..dbc69c7c0f2 100644 --- a/target/loongarch/cpu-mmu.h +++ b/target/loongarch/cpu-mmu.h @@ -34,7 +34,7 @@ TLBRet get_physical_address(CPULoongArchState *env, MMUContext *context, MMUAccessType access_type, int mmu_idx, int is_debug); void get_dir_base_width(CPULoongArchState *env, uint64_t *dir_base, - uint64_t *dir_width, target_ulong level); + uint64_t *dir_width, unsigned int level); hwaddr loongarch_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr); #endif /* LOONGARCH_CPU_MMU_H */ diff --git a/target/loongarch/tcg/helper.h b/target/loongarch/tcg/helper.h index db57dbfc167..7e508c5a7b9 100644 --- a/target/loongarch/tcg/helper.h +++ b/target/loongarch/tcg/helper.h @@ -129,7 +129,7 @@ DEF_HELPER_2(invtlb_all_asid, void, env, tl) DEF_HELPER_3(invtlb_page_asid, void, env, tl, tl) DEF_HELPER_3(invtlb_page_asid_or_g, void, env, tl, tl) -DEF_HELPER_4(lddir, tl, env, tl, tl, i32) +DEF_HELPER_4(lddir, tl, env, tl, i32, i32) DEF_HELPER_4(ldpte, void, env, tl, tl, i32) DEF_HELPER_1(ertn, void, env) DEF_HELPER_1(idle, void, env) diff --git a/target/loongarch/cpu_helper.c b/target/loongarch/cpu_helper.c index 4a9db3ea4c1..867e7c88670 100644 --- a/target/loongarch/cpu_helper.c +++ b/target/loongarch/cpu_helper.c @@ -17,7 +17,7 @@ #include "tcg/tcg_loongarch.h" void get_dir_base_width(CPULoongArchState *env, uint64_t *dir_base, - uint64_t *dir_width, target_ulong level) + uint64_t *dir_width, unsigned int level) { switch (level) { case 1: diff --git a/target/loongarch/tcg/tlb_helper.c b/target/loongarch/tcg/tlb_helper.c index 8cfce48a297..f85b68fa53d 100644 --- a/target/loongarch/tcg/tlb_helper.c +++ b/target/loongarch/tcg/tlb_helper.c @@ -595,7 +595,7 @@ bool loongarch_cpu_tlb_fill(CPUState *cs, vaddr address, int size, } target_ulong helper_lddir(CPULoongArchState *env, target_ulong base, - target_ulong level, uint32_t mem_idx) + uint32_t level, uint32_t mem_idx) { CPUState *cs = env_cpu(env); target_ulong badvaddr, index, phys; @@ -603,7 +603,7 @@ target_ulong helper_lddir(CPULoongArchState *env, target_ulong base, if (unlikely((level == 0) || (level > 4))) { qemu_log_mask(LOG_GUEST_ERROR, - "Attepted LDDIR with level %"PRId64"\n", level); + "Attepted LDDIR with level %u\n", level); return base; } diff --git a/target/loongarch/tcg/insn_trans/trans_privileged.c.inc b/target/loongarch/tcg/insn_trans/trans_privileged.c.inc index a407ab51b74..64e53a44606 100644 --- a/target/loongarch/tcg/insn_trans/trans_privileged.c.inc +++ b/target/loongarch/tcg/insn_trans/trans_privileged.c.inc @@ -380,7 +380,7 @@ static bool trans_lddir(DisasContext *ctx, arg_lddir *a) if (check_plv(ctx)) { return false; } - gen_helper_lddir(dest, tcg_env, src, tcg_constant_tl(a->imm), mem_idx); + gen_helper_lddir(dest, tcg_env, src, tcg_constant_i32(a->imm), mem_idx); return true; } -- 2.51.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 4/4] target/loongarch: Do not use target_ulong type for LDDIR level 2025-10-09 20:19 ` [PATCH 4/4] target/loongarch: Do not use target_ulong type for LDDIR level Philippe Mathieu-Daudé @ 2025-10-09 21:50 ` Richard Henderson 0 siblings, 0 replies; 9+ messages in thread From: Richard Henderson @ 2025-10-09 21:50 UTC (permalink / raw) To: qemu-devel On 10/9/25 13:19, Philippe Mathieu-Daudé wrote: > The LDDIR level page table is a 5-bit immediate. Using the > uint32_t type for it is sufficient. Avoid the target_ulong type. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/loongarch/cpu-mmu.h | 2 +- > target/loongarch/tcg/helper.h | 2 +- > target/loongarch/cpu_helper.c | 2 +- > target/loongarch/tcg/tlb_helper.c | 4 ++-- > target/loongarch/tcg/insn_trans/trans_privileged.c.inc | 2 +- > 5 files changed, 6 insertions(+), 6 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-10-09 21:50 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-10-09 20:19 [PATCH 0/4] target/loongarch: Remove some unnecessary target_ulong uses Philippe Mathieu-Daudé 2025-10-09 20:19 ` [PATCH 1/4] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé 2025-10-09 21:46 ` Richard Henderson 2025-10-09 20:19 ` [PATCH 2/4] target/loongarch: Remove target_ulong use in gen_goto_tb() Philippe Mathieu-Daudé 2025-10-09 21:46 ` Richard Henderson 2025-10-09 20:19 ` [PATCH 3/4] target/loongarch: Remove target_ulong use in gdb_write_register handler Philippe Mathieu-Daudé 2025-10-09 21:47 ` Richard Henderson 2025-10-09 20:19 ` [PATCH 4/4] target/loongarch: Do not use target_ulong type for LDDIR level Philippe Mathieu-Daudé 2025-10-09 21:50 ` Richard Henderson
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).