Re: [PATCH] scripts/decodecode: Add support for LoongArch

From: Huacai Chen
Date: Sat Dec 16 2023 - 07:15:55 EST


Acked-by: Huacai Chen <chenhuacai@xxxxxxxxxxx>

On Sat, Dec 16, 2023 at 2:58 PM Youling Tang <youling.tang@xxxxxxxxxxx> wrote:
>
> From: Youling Tang <tangyouling@xxxxxxxxxx>
>
> An example how to invoke decodecode for loongarch64:
> $ echo 'Code: 380839f6 380831f9 28412bae <24000ca6>
> 004081ad 0014cb50 004083e8 02bff34c 58008e91' | \
> ARCH=loongarch CROSS_COMPILE=loongarch64-linux-gnu- \
> ./scripts/decodecode
> Code: 380839f6 380831f9 28412bae <24000ca6> 004081ad 0014cb50 004083e8 02bff34c 58008e91
> All code
> ========
> 0: 380839f6 ldx.w $fp, $t3, $t2
> 4: 380831f9 ldx.w $s2, $t3, $t0
> 8: 28412bae ld.h $t2, $s6, 74(0x4a)
> c:* 24000ca6 ldptr.w $a2, $a1, 12(0xc) <-- trapping instruction
> 10: 004081ad slli.w $t1, $t1, 0x0
> 14: 0014cb50 and $t4, $s3, $t6
> 18: 004083e8 slli.w $a4, $s8, 0x0
> 1c: 02bff34c addi.w $t0, $s3, -4(0xffc)
> 20: 58008e91 beq $t8, $t5, 140(0x8c) # 0xac
>
> Code starting with the faulting instruction
> ===========================================
> 0: 24000ca6 ldptr.w $a2, $a1, 12(0xc)
> 4: 004081ad slli.w $t1, $t1, 0x0
> 8: 0014cb50 and $t4, $s3, $t6
> c: 004083e8 slli.w $a4, $s8, 0x0
> 10: 02bff34c addi.w $t0, $s3, -4(0xffc)
> 14: 58008e91 beq $t8, $t5, 140(0x8c) # 0xa0
>
> Signed-off-by: Youling Tang <tangyouling@xxxxxxxxxx>
> ---
> scripts/decodecode | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/scripts/decodecode b/scripts/decodecode
> index 8fe71c292381..6364218b2178 100755
> --- a/scripts/decodecode
> +++ b/scripts/decodecode
> @@ -67,6 +67,7 @@ if [ -z "$ARCH" ]; then
> case `uname -m` in
> aarch64*) ARCH=arm64 ;;
> arm*) ARCH=arm ;;
> + loongarch*) ARCH=loongarch ;;
> esac
> fi
>
> @@ -98,6 +99,10 @@ disas() {
> ${CROSS_COMPILE}strip $t.o
> fi
>
> + if [ "$ARCH" = "loongarch" ]; then
> + ${CROSS_COMPILE}strip $t.o
> + fi
> +
> if [ $pc_sub -ne 0 ]; then
> if [ $PC ]; then
> adj_vma=$(( $PC - $pc_sub ))
> --
> 2.40.0
>