[PATCH] disas: Add LoongArch support

Qi Hu posted 1 patch 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220804172939.325306-1-huqi@loongson.cn
disas.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] disas: Add LoongArch support
Posted by Qi Hu 1 week ago
Signed-off-by: Qi Hu <huqi@loongson.cn>
---
 disas.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/disas.c b/disas.c
index e31438f349..d44feeee46 100644
--- a/disas.c
+++ b/disas.c
@@ -176,6 +176,8 @@ static void initialize_debug_host(CPUDebug *s)
 #else
 #error unsupported RISC-V ABI
 #endif
+#elif defined(__loongarch__)
+    s->info.print_insn = print_insn_loongarch;
 #elif defined(__aarch64__)
     s->info.cap_arch = CS_ARCH_ARM64;
 #elif defined(__alpha__)
-- 
2.37.1
Re: [PATCH] disas: Add LoongArch support
Posted by Richard Henderson 1 week ago
On 8/4/22 10:29, Qi Hu wrote:
> Signed-off-by: Qi Hu <huqi@loongson.cn>
> ---
>   disas.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/disas.c b/disas.c
> index e31438f349..d44feeee46 100644
> --- a/disas.c
> +++ b/disas.c
> @@ -176,6 +176,8 @@ static void initialize_debug_host(CPUDebug *s)
>   #else
>   #error unsupported RISC-V ABI
>   #endif
> +#elif defined(__loongarch__)
> +    s->info.print_insn = print_insn_loongarch;

This is very much insufficient.  Try --target-list=i386-softmmu and watch it fail to link.
You need to modify the build rules to make certain that the loongarch disassembler is 
built for loongarch host.


r~
Re: [PATCH] disas: Add LoongArch support
Posted by Qi Hu 5 days, 14 hours ago
On 2022/8/5 02:23, Richard Henderson wrote:
> On 8/4/22 10:29, Qi Hu wrote:
>> Signed-off-by: Qi Hu <huqi@loongson.cn>
>> ---
>>   disas.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/disas.c b/disas.c
>> index e31438f349..d44feeee46 100644
>> --- a/disas.c
>> +++ b/disas.c
>> @@ -176,6 +176,8 @@ static void initialize_debug_host(CPUDebug *s)
>>   #else
>>   #error unsupported RISC-V ABI
>>   #endif
>> +#elif defined(__loongarch__)
>> +    s->info.print_insn = print_insn_loongarch;
>
> This is very much insufficient.  Try --target-list=i386-softmmu and 
> watch it fail to link.
> You need to modify the build rules to make certain that the loongarch 
> disassembler is built for loongarch host.
>
>
> r~

I realized that "target/loongarch/disas.c" is only used for loongarch 
target . When the target is not "loongarch", the function 
"print_insn_loongarch" will not be compiled. Next I will add loongarch 
support to "disams/*".


Thanks.

Qi


Re: [PATCH] disas: Add LoongArch support
Posted by Peter Maydell 1 week ago
On Thu, 4 Aug 2022 at 18:32, Qi Hu <huqi@loongson.cn> wrote:
>

More specifically, this is adding support for disassembling
on LoongArch hosts. The handling of disassembling LoongArch
guests is already connected up.

thanks
-- PMM