[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3] Hexagon: add PC alignment check and exception
From: |
Matheus Tavares Bernardino |
Subject: |
Re: [PATCH v3] Hexagon: add PC alignment check and exception |
Date: |
Thu, 2 May 2024 11:35:09 -0300 |
On Tue, 30 Apr 2024 08:52:36 -0700 Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> On 4/30/24 07:25, Matheus Tavares Bernardino wrote:
> > +void test_multi_cof(void)
> > +{
> > + asm volatile(
> > + "p0 = cmp.eq(r0, r0)\n"
> > + "{\n"
> > + " if (p0) jump test_multi_cof_unaligned\n"
> > + " jump 1f\n"
> > + "}\n"
> > + "1: nop\n"
> > + : : : "p0");
> > +}
>
> I will say you could just add the label to the end of the asm here, like
>
> .byte 0
> test_multi_cof_unaligned:
>
> rather than use a separate source file.
>
That would be nice, but unfortunately that doesn't work because the label gets
aligned by the assembler :(
diff --git a/tests/tcg/hexagon/unaligned_pc.c b/tests/tcg/hexagon/unaligned_pc.c
index 1add2d0d99..3772947a86 100644
--- a/tests/tcg/hexagon/unaligned_pc.c
+++ b/tests/tcg/hexagon/unaligned_pc.c
@@ -33,10 +33,12 @@ void test_multi_cof(void)
asm volatile(
"p0 = cmp.eq(r0, r0)\n"
"{\n"
- " if (p0) jump test_multi_cof_unaligned\n"
+ " if (p0) jump 2f\n"
" jump 1f\n"
"}\n"
"1: nop\n"
+ ".byte 0\n"
+ "2: nop\n"
: : : "p0");
}
Ends up producing:
00020dc0 <test_multi_cof>:
20dc0: 00 c0 9d a0 a09dc000 { allocframe(#0x0) }
20dc4: 00 c0 00 f2 f200c000 { p0 = cmp.eq(r0,r0) }
20dc8: 06 40 00 5c 5c004006 { if (p0) jump:nt 0x20dd4
<test_multi_cof+0x14>
20dcc: 04 c0 00 58 5800c004 jump 0x20dd0
<test_multi_cof+0x10> }
20dd0: 00 c0 00 7f 7f00c000 { nop }
20dd4: 00 00 c0 00 <unknown>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH v3] Hexagon: add PC alignment check and exception,
Matheus Tavares Bernardino <=