[PATCH 4/4] ARM: opcodes: Opcode definitions for the Virtualization Extensions

Dave Martin dave.martin at linaro.org
Fri Mar 16 07:04:23 EDT 2012


On Thu, Mar 15, 2012 at 01:58:28PM -0400, Nicolas Pitre wrote:
> On Thu, 15 Mar 2012, Dave Martin wrote:
> 
> > For now, this patch just adds a definition for the HVC instruction.
> > More can be added here later, as needed.
> > 
> > Now that we have a real example of how to use the opcode injection
> > macros properly, this patch also adds a cross-reference from the
> > explanation in opcodes.h (since without an example, figuring out
> > how to use the macros is not that easy).
> > 
> > Signed-off-by: Dave Martin <dave.martin at linaro.org>
> 
> Acked-by: Nicolas Pitre <nico at linaro.org>
> 
> Maybe this would be a good idea to document in one of the patch logs why 
> you didn't go with the assembler macro route like it is done in 
> unified.h for the various it instructions.

Yes, that's a good idea.  I'll add a brief note somewhere -- probably on
the previous patch.

Cheers
---Dave

> 
> > ---
> >  arch/arm/include/asm/opcodes-virt.h |   29 +++++++++++++++++++++++++++++
> >  arch/arm/include/asm/opcodes.h      |    2 ++
> >  2 files changed, 31 insertions(+), 0 deletions(-)
> >  create mode 100644 arch/arm/include/asm/opcodes-virt.h
> > 
> > diff --git a/arch/arm/include/asm/opcodes-virt.h b/arch/arm/include/asm/opcodes-virt.h
> > new file mode 100644
> > index 0000000..b85665a
> > --- /dev/null
> > +++ b/arch/arm/include/asm/opcodes-virt.h
> > @@ -0,0 +1,29 @@
> > +/*
> > + * opcodes-virt.h: Opcode definitions for the ARM virtualization extensions
> > + * Copyright (C) 2012  Linaro Limited
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License along
> > + * with this program; if not, write to the Free Software Foundation, Inc.,
> > + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> > + */
> > +#ifndef __ASM_ARM_OPCODES_VIRT_H
> > +#define __ASM_ARM_OPCODES_VIRT_H
> > +
> > +#include <asm/opcodes.h>
> > +
> > +#define __HVC(imm16) __inst_arm_thumb32(				\
> > +	0xE1400070 | (((imm16) & 0xFFF0) << 4) | ((imm16) & 0x000F),	\
> > +	0xF7E08000 | (((imm16) & 0xF000) << 4) | ((imm16) & 0x0FFF)	\
> > +)
> > +
> > +#endif /* ! __ASM_ARM_OPCODES_VIRT_H */
> > diff --git a/arch/arm/include/asm/opcodes.h b/arch/arm/include/asm/opcodes.h
> > index 50ef0be..89ff5b9 100644
> > --- a/arch/arm/include/asm/opcodes.h
> > +++ b/arch/arm/include/asm/opcodes.h
> > @@ -193,6 +193,8 @@ extern asmlinkage unsigned int arm_check_condition(u32 opcode, u32 psr);
> >   * specify the ARM and Thumb alternatives at the same time.  This ensures
> >   * that the correct opcode gets emitted depending on the instruction set
> >   * used for the kernel build.
> > + *
> > + * Look at opcodes-virt.h for an example of how to use these macros.
> >   */
> >  #include <linux/stringify.h>
> >  
> > -- 
> > 1.7.4.1
> > 
> > 
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > 



More information about the linux-arm-kernel mailing list