On 8/19/21 9:24 AM, Peter Maydell wrote:
(Did you check the M-profile code too? That also architecturally I think
should never let PC have the low bit set; hopefully the code I wrote
actually ensures that...)
Exception handling in m-profile is much harder to follow, but certainly normal updates
On Thu, 19 Aug 2021 at 20:18, Peter Maydell wrote:
> Just noticed that section G1.16.7 says that when we report
> PC alignment faults to AArch32 they should be prefetch aborts,
> not UDEF. The fault address and fault status registers also need
> to be set (with slightly varying behaviour for when
On Thu, 19 Aug 2021 at 17:57, Richard Henderson
wrote:
>
> On 8/19/21 6:50 AM, Richard Henderson wrote:
> > On 8/19/21 3:40 AM, Peter Maydell wrote:
> >>> uint32_t insn;
> >>> bool is_16bit;
> >>>
> >>> -if (arm_pre_translate_insn(dc)) {
> >>> +if (arm_check_ss_active(dc) || ar
On Wed, 18 Aug 2021 at 02:04, Richard Henderson
wrote:
>
> For A64, any input to an indirect branch can cause this.
>
> For A32, many indirect branch paths force the branch to be aligned,
> but BXWritePC does not. This includes the BX instruction but also
> other interworking changes to PC. Prio
On 8/19/21 6:50 AM, Richard Henderson wrote:
On 8/19/21 3:40 AM, Peter Maydell wrote:
uint32_t insn;
bool is_16bit;
- if (arm_pre_translate_insn(dc)) {
+ if (arm_check_ss_active(dc) || arm_check_kernelpage(dc)) {
Is it not possible to get a misaligned PC in the Thumb case ?
On 8/19/21 3:40 AM, Peter Maydell wrote:
uint32_t insn;
bool is_16bit;
-if (arm_pre_translate_insn(dc)) {
+if (arm_check_ss_active(dc) || arm_check_kernelpage(dc)) {
Is it not possible to get a misaligned PC in the Thumb case ?
No. The thumb bit is always removed, leavi
On Wed, 18 Aug 2021 at 02:04, Richard Henderson
wrote:
>
> For A64, any input to an indirect branch can cause this.
>
> For A32, many indirect branch paths force the branch to be aligned,
> but BXWritePC does not. This includes the BX instruction but also
> other interworking changes to PC. Prio
On 8/17/21 3:00 PM, Richard Henderson wrote:
With v8, this is CONSTRAINED UNDEFINED and may either raise an
Bah, UNPREDICTABLE, of course, not UNDEFINED.
r~
For A64, any input to an indirect branch can cause this.
For A32, many indirect branch paths force the branch to be aligned,
but BXWritePC does not. This includes the BX instruction but also
other interworking changes to PC. Prior to v8, this case is UNDEFINED.
With v8, this is CONSTRAINED UNDEF