> Date: Thu, 26 Oct 2017 03:10:44 +1100 > From: Jonathan Gray <j...@jsg.id.au> > > On Wed, Oct 25, 2017 at 05:04:10PM +0200, Mark Kettenis wrote: > > The clang 5.0.0 integrated assembler seems to be a little bit more > > fussy and doesn't allow the use of the "smc" instructions without > > declaring that you want to use the TrustZone architecture extension. > > Unfortunately our binutils assembler doesn't recognize the pseudo-op. > > So this diff wraps it into an #ifdef. > > > > ok? > > It seems it is in binutils since 2.21 > https://gcc.gnu.org/ml/gcc-help/2012-07/msg00180.html > > Too bad the test can't be against a binutils version. > > hvc also requires an .arch_extension line when used without .word > > The other option would be to build the kernel with -march=armv7ve > when not building gcc4 which enables > 'FeatureTrustZone, FeatureMP, FeatureVirtualization' but that > might creep into places where it shouldn't.
Indeed. I don't think we want to go there. Your version is fine with me. ok kettenis@ > Index: armv7/armv7_start.S > =================================================================== > RCS file: /cvs/src/sys/arch/armv7/armv7/armv7_start.S,v > retrieving revision 1.14 > diff -u -p -r1.14 armv7_start.S > --- armv7/armv7_start.S 14 Jun 2017 13:12:49 -0000 1.14 > +++ armv7/armv7_start.S 25 Oct 2017 15:53:24 -0000 > @@ -38,7 +38,13 @@ > #undef DOMAIN_CLIENT /* XXX */ > #include "assym.h" > > +#ifdef __clang__ > +.arch_extension sec > +.arch_extension virt > +#define HVC hvc #0 > +#else > #define HVC .word 0xe1400070 @ hvc > +#endif > > .text > >