ARM Cortex-A Series Programmer's Guide
Total Page:16
File Type:pdf, Size:1020Kb
ARM® Cortex™-A Series Version: 4.0 Programmer’s Guide Copyright © 2011 – 2013 ARM. All rights reserved. ARM DEN0013D (ID012214) ARM Cortex-A Series Programmer’s Guide Copyright © 2011 – 2013 ARM. All rights reserved. Release Information The following changes have been made to this book. Change history Date Issue Confidentiality Change 25 March 2011 A Non-Confidential First release 10 August 2011 B Non-Confidential Second release. Updated to include Virtualization, Cortex-A15 processor, and LPAE. Corrected and revised throughout 25 June 2012 C Non-Confidential Updated to include Cortex-A7 processor, and big.LITTLE. Index added. Corrected and revised throughout. 22 January 2014 D Non-Confidential Updated to include Cortex-A12 processor, Cache Coherent Interconnect, expanded GIC coverage, Multi-core processors, Corrected and revised throughout. Proprietary Notice This Cortex-A Series Programmer’s Guide is protected by copyright and the practice or implementation of the information herein may be protected by one or more patents or pending applications. No part of this Cortex-A Series Programmer’s Guide may be reproduced in any form by any means without the express prior written permission of ARM. No license, express or implied, by estoppel or otherwise to any intellectual property rights is granted by this Cortex-A Series Programmer’s Guide. Your access to the information in this Cortex-A Series Programmer’s Guide is conditional upon your acceptance that you will not use or permit others to use the information for the purposes of determining whether implementations of the information herein infringe any third party patents. This Cortex-A Series Programmer’s Guide is provided “as is”. ARM makes no representations or warranties, either express or implied, included but not limited to, warranties of merchantability, fitness for a particular purpose, or non-infringement, that the content of this Cortex-A Series Programmer’s Guide is suitable for any particular purpose or that any practice or implementation of the contents of the Cortex-A Series Programmer’s Guide will not infringe any third party patents, copyrights, trade secrets, or other rights. This Cortex-A Series Programmer’s Guide may include technical inaccuracies or typographical errors. To the extent not prohibited by law, in no event will ARM be liable for any damages, including without limitation any direct loss, lost revenue, lost profits or data, special, indirect, consequential, incidental or punitive damages, however caused and regardless of the theory of liability, arising out of or related to any furnishing, practicing, modifying or any use of this Programmer’s Guide, even if ARM has been advised of the possibility of such damages. The information provided herein is subject to U.S. export control laws, including the U.S. Export Administration Act and its associated regulations, and may be subject to export or import regulations in other countries. You agree to comply fully with all laws and regulations of the United States and other countries (“Export Laws”) to assure that neither the information herein, nor any direct products thereof are; (i) exported, directly or indirectly, in violation of Export Laws, either to any countries that are subject to U.S. export restrictions or to any end user who has been prohibited from participating in the U.S. export transactions by any federal agency of the U.S. government; or (ii) intended to be used for any purpose prohibited by Export Laws, including, without limitation, nuclear, chemical, or biological weapons proliferation. Words and logos marked with ® or ™ are registered trademarks or trademarks of ARM Limited, except as otherwise stated below in this proprietary notice. Other brands and names mentioned herein may be the trademarks of their respective owners. Copyright © 2011 – 2013 ARM Limited, 110 Fulbourn Road Cambridge, CB1 9NJ, England Figure 1-1 on page 1-2 is supplied courtesy of The Centre for Computing History , www.computinghistory.org.uk This document is Non-Confidential but any disclosure by you is subject to you providing notice to and the acceptance by the recipient of, the conditions set out above. In this document, where the term ARM is used to refer to the company it means “ARM or any of its subsidiaries as appropriate”. Web Address http://www.arm.com ARM DEN0013D Copyright © 2011 – 2013 ARM. All rights reserved. ii ID012214 Non-Confidential Contents ARM Cortex-A Series Programmer’s Guide Preface Preface to the 4th Edition ................................................................................................ ix Glossary ............................................................................................................................ x Typographical conventions ............................................................................................ xiv Feedback on this book .................................................................................................... xv References .................................................................................................................... xvi Chapter 1 Introduction 1.1 History ........................................................................................................................... 1-2 1.2 System-on-Chip (SoC) .................................................................................................. 1-4 1.3 Embedded systems ...................................................................................................... 1-5 Chapter 2 ARM Architecture and Processors 2.1 Architectural profiles ..................................................................................................... 2-2 2.2 Architecture history and extensions .............................................................................. 2-3 2.3 Processor properties ..................................................................................................... 2-8 2.4 Cortex-A series processors ........................................................................................ 2-10 2.5 Key architectural points of ARM Cortex-A series processors ..................................... 2-16 Chapter 3 ARM Processor Modes and Registers 3.1 Registers ....................................................................................................................... 3-6 Chapter 4 Introduction to Assembly Language 4.1 Comparison with other assembly languages ................................................................ 4-2 4.2 The ARM instruction sets .............................................................................................. 4-3 4.3 Introduction to the GNU Assembler .............................................................................. 4-5 4.4 ARM tools assembly language ..................................................................................... 4-9 4.5 Interworking ................................................................................................................ 4-11 ARM DEN0013D Copyright © 2011 – 2013 ARM. All rights reserved. iii ID012214 Non-Confidential Contents 4.6 Identifying assembly code .......................................................................................... 4-12 4.7 Compatibility with ARMv8-A ....................................................................................... 4-13 Chapter 5 ARM/Thumb Unified Assembly Language Instructions 5.1 Instruction set basics .................................................................................................... 5-2 5.2 Data processing operations .......................................................................................... 5-6 5.3 Memory instructions .................................................................................................... 5-13 5.4 Branches ..................................................................................................................... 5-15 5.5 Saturating arithmetic ................................................................................................... 5-16 5.6 Miscellaneous instructions .......................................................................................... 5-17 Chapter 6 Floating-Point 6.1 Floating-point basics and the IEEE-754 standard ........................................................ 6-2 6.2 VFP support in GCC ..................................................................................................... 6-8 6.3 VFP support in the ARM Compiler ................................................................................ 6-9 6.4 VFP support in Linux .................................................................................................. 6-10 6.5 Floating-point optimization .......................................................................................... 6-11 Chapter 7 Introducing NEON 7.1 SIMD ............................................................................................................................. 7-2 7.2 NEON architecture overview ........................................................................................ 7-5 7.3 NEON C Compiler and assembler .............................................................................. 7-11 Chapter 8 Caches 8.1 Why do caches help? ................................................................................................... 8-3 8.2 Cache drawbacks ......................................................................................................... 8-4 8.3 Memory