From: Youling Tang <[email protected]>
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 <[email protected]>
---
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
Acked-by: Huacai Chen <[email protected]>
On Sat, Dec 16, 2023 at 2:58 PM Youling Tang <[email protected]> wrote:
>
> From: Youling Tang <[email protected]>
>
> 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 <[email protected]>
> ---
> 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
>