Message ID | 1442228028-11622-1-git-send-email-serge.fdrv@gmail.com |
---|---|
State | New |
Headers | show |
On 14 September 2015 at 11:53, Sergey Fedorov <serge.fdrv@gmail.com> wrote: > Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode > description of routing debug exceptions. > > Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> Applied to target-arm.next, thanks. -- PMM
On 18 September 2015 at 15:08, Peter Maydell <peter.maydell@linaro.org> wrote: > On 14 September 2015 at 11:53, Sergey Fedorov <serge.fdrv@gmail.com> wrote: >> Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode >> description of routing debug exceptions. >> >> Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> > > > > Applied to target-arm.next, thanks. ...except it doesn't compile, because we don't have an env->cp15.mdcr_el2. Presumably there's some other patch this depends on which you haven't submitted yet? thanks -- PMM
On 18.09.2015 17:11, Peter Maydell wrote: > On 18 September 2015 at 15:08, Peter Maydell <peter.maydell@linaro.org> wrote: >> On 14 September 2015 at 11:53, Sergey Fedorov <serge.fdrv@gmail.com> wrote: >>> Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode >>> description of routing debug exceptions. >>> >>> Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> >> >> >> Applied to target-arm.next, thanks. > ...except it doesn't compile, because we don't have an env->cp15.mdcr_el2. > Presumably there's some other patch this depends on which you haven't > submitted yet? > Hm... I'll check it :) Best, Sergey
On 18.09.2015 18:57, Sergey Fedorov wrote: > On 18.09.2015 17:11, Peter Maydell wrote: >> On 18 September 2015 at 15:08, Peter Maydell <peter.maydell@linaro.org> wrote: >>> On 14 September 2015 at 11:53, Sergey Fedorov <serge.fdrv@gmail.com> wrote: >>>> Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode >>>> description of routing debug exceptions. >>>> >>>> Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> >>> >>> Applied to target-arm.next, thanks. >> ...except it doesn't compile, because we don't have an env->cp15.mdcr_el2. >> Presumably there's some other patch this depends on which you haven't >> submitted yet? >> > Hm... I'll check it :) Sorry, I forgot to check that, but actually this patch depends on another two patches in my local repository. Should I prepare MDCR_EL2 patch suitable for mainline or I can just remove this check from arm_debug_target_el()? Best, Sergey
On 18 September 2015 at 17:15, Sergey Fedorov <serge.fdrv@gmail.com> wrote: > On 18.09.2015 18:57, Sergey Fedorov wrote: >> On 18.09.2015 17:11, Peter Maydell wrote: >>> On 18 September 2015 at 15:08, Peter Maydell <peter.maydell@linaro.org> wrote: >>>> On 14 September 2015 at 11:53, Sergey Fedorov <serge.fdrv@gmail.com> wrote: >>>>> Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode >>>>> description of routing debug exceptions. >>>>> >>>>> Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> >>>> >>>> Applied to target-arm.next, thanks. >>> ...except it doesn't compile, because we don't have an env->cp15.mdcr_el2. >>> Presumably there's some other patch this depends on which you haven't >>> submitted yet? >>> >> Hm... I'll check it :) > > Sorry, I forgot to check that, but actually this patch depends on > another two patches in my local repository. Should I prepare MDCR_EL2 > patch suitable for mainline or I can just remove this check from > arm_debug_target_el()? Edgar, do you have a MDCR_EL2 implementation in your tree? Otherwise, yes, Sergey, you should provide an MDCR_EL2/HDCR patch for mainline I think. It should be fairly easy as it just needs to be readable/writable and have the correct access checks. Don't forget to provide the AArch32 interface as well as the AArch64 one, and the "RES0 if EL3 but not EL2" version. (See Edgar's recent patches in master for VMPIDR_EL2, VTCR_EL2, etc for examples.) thanks -- PMM
On Fri, Sep 18, 2015 at 05:35:07PM +0100, Peter Maydell wrote: > On 18 September 2015 at 17:15, Sergey Fedorov <serge.fdrv@gmail.com> wrote: > > On 18.09.2015 18:57, Sergey Fedorov wrote: > >> On 18.09.2015 17:11, Peter Maydell wrote: > >>> On 18 September 2015 at 15:08, Peter Maydell <peter.maydell@linaro.org> wrote: > >>>> On 14 September 2015 at 11:53, Sergey Fedorov <serge.fdrv@gmail.com> wrote: > >>>>> Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode > >>>>> description of routing debug exceptions. > >>>>> > >>>>> Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> > >>>> > >>>> Applied to target-arm.next, thanks. > >>> ...except it doesn't compile, because we don't have an env->cp15.mdcr_el2. > >>> Presumably there's some other patch this depends on which you haven't > >>> submitted yet? > >>> > >> Hm... I'll check it :) > > > > Sorry, I forgot to check that, but actually this patch depends on > > another two patches in my local repository. Should I prepare MDCR_EL2 > > patch suitable for mainline or I can just remove this check from > > arm_debug_target_el()? > > Edgar, do you have a MDCR_EL2 implementation in your tree? > > Otherwise, yes, Sergey, you should provide an MDCR_EL2/HDCR patch > for mainline I think. It should be fairly easy as it just needs > to be readable/writable and have the correct access checks. > Don't forget to provide the AArch32 interface as well as the AArch64 > one, and the "RES0 if EL3 but not EL2" version. > (See Edgar's recent patches in master for VMPIDR_EL2, VTCR_EL2, > etc for examples.) Hi, Sorry, no, I only have a dummy for MDCR_EL2.. Would be great if Sergey has something ready. Best regards, Edgar
On 18 September 2015 at 15:11, Peter Maydell <peter.maydell@linaro.org> wrote: > On 18 September 2015 at 15:08, Peter Maydell <peter.maydell@linaro.org> wrote: >> On 14 September 2015 at 11:53, Sergey Fedorov <serge.fdrv@gmail.com> wrote: >>> Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode >>> description of routing debug exceptions. >>> >>> Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> >> >> >> >> Applied to target-arm.next, thanks. > > ...except it doesn't compile, because we don't have an env->cp15.mdcr_el2. Reapplied, now we have an mdcr_el2 for it to use. -- PMM
diff --git a/target-arm/cpu.h b/target-arm/cpu.h index 31825d3..84d38b1 100644 --- a/target-arm/cpu.h +++ b/target-arm/cpu.h @@ -1692,7 +1692,22 @@ static inline int cpu_mmu_index(CPUARMState *env) */ static inline int arm_debug_target_el(CPUARMState *env) { - return 1; + bool secure = arm_is_secure(env); + bool route_to_el2 = false; + + if (arm_feature(env, ARM_FEATURE_EL2) && !secure) { + route_to_el2 = env->cp15.hcr_el2 & HCR_TGE || + env->cp15.mdcr_el2 & (1 << 8); + } + + if (route_to_el2) { + return 2; + } else if (arm_feature(env, ARM_FEATURE_EL3) && + !arm_el_is_aa64(env, 3) && secure) { + return 3; + } else { + return 1; + } } static inline bool aa64_generate_debug_exceptions(CPUARMState *env)
Implement debug exception routing according to ARM ARM D2.3.1 Pseudocode description of routing debug exceptions. Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> --- target-arm/cpu.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)