On 15 December 2014 at 11:04, Peter Maydell <peter.mayd...@linaro.org> wrote: > > On 11 December 2014 at 23:29, Greg Bellows <greg.bell...@linaro.org> > wrote: > > Adds the secure_boot boolean field to the arm_boot_info descriptor. This > > fields is used to indicate whether Linux should boot into secure or > non-secure > > state if the ARM EL3 feature is enabled. The default is to leave the > CPU in an > > unaltered reset state. On EL3 enabled systems, the reset state is > secure and > > can be overridden by setting the added field to false. > > > > Signed-off-by: Greg Bellows <greg.bell...@linaro.org> > > --- > > hw/arm/boot.c | 10 ++++++++++ > > include/hw/arm/arm.h | 4 ++++ > > 2 files changed, 14 insertions(+) > > > > diff --git a/hw/arm/boot.c b/hw/arm/boot.c > > index e6a3c5b..7ec33f3 100644 > > --- a/hw/arm/boot.c > > +++ b/hw/arm/boot.c > > @@ -457,6 +457,16 @@ static void do_cpu_reset(void *opaque) > > env->thumb = info->entry & 1; > > } > > } else { > > + /* If we are booting Linux then we need to check whether we > are > > + * booting into secure or non-secure state and adjust the > state > > + * accordingly. Out of reset, ARM is defined to be in > secure state > > + * (SCR.NS = 0), we change that here is non-secure boot has > been > > typo: "if" > > > + * requested. > > + */ > > + if (arm_feature(env, ARM_FEATURE_EL3) && > !info->secure_boot) { > > + env->cp15.scr_el3 |= SCR_NS; > > + } > > + > > if (CPU(cpu) == first_cpu) { > > if (env->aarch64) { > > env->pc = info->loader_start; > > diff --git a/include/hw/arm/arm.h b/include/hw/arm/arm.h > > index cefc9e6..6659562 100644 > > --- a/include/hw/arm/arm.h > > +++ b/include/hw/arm/arm.h > > @@ -37,6 +37,10 @@ struct arm_boot_info { > > hwaddr gic_cpu_if_addr; > > int nb_cpus; > > int board_id; > > + /* ARM machines that support security extensions use this field to > control > > Strictly, this should say "the Security Extensions". > > > + * whether Linux is booted as securei(true) or non-secure(false). > > Typo: "secure". > > > + */ > > + bool secure_boot; > > int (*atag_board)(const struct arm_boot_info *info, void *p); > > /* multicore boards that use the default secondary core boot > functions > > * can ignore these two function calls. If the default functions > won't > > -- > > 1.8.3.2 > > All typos fixed.
> thanks > -- PMM >