UM10462
All information provided in this document is subject to legal disclaimers.
© NXP B.V. 2016. All rights reserved.
User manual
Rev. 5.5 — 21 December 2016
521 of 523
continued >>
NXP Semiconductors
UM10462
Chapter 25: Supplementary information
Programmers model . . . . . . . . . . . . . . . . . . . 434
24.3.1.1 Processor modes . . . . . . . . . . . . . . . . . . . . . 434
24.3.1.2 Stacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
24.3.1.3 Core registers . . . . . . . . . . . . . . . . . . . . . . . 434
24.3.1.3.1 General-purpose registers . . . . . . . . . . . . . . 435
24.3.1.3.2 Stack Pointer . . . . . . . . . . . . . . . . . . . . . . . . 435
24.3.1.3.3 Link Register . . . . . . . . . . . . . . . . . . . . . . . . 436
24.3.1.3.4 Program Counter . . . . . . . . . . . . . . . . . . . . . 436
24.3.1.3.5 Program Status Register . . . . . . . . . . . . . . . 436
24.3.1.3.6 Exception mask register . . . . . . . . . . . . . . . . 438
24.3.1.3.7 CONTROL register . . . . . . . . . . . . . . . . . . . . 438
24.3.1.4 Exceptions and interrupts . . . . . . . . . . . . . . . 439
24.3.1.5 Data types. . . . . . . . . . . . . . . . . . . . . . . . . . . 439
24.3.1.6 The Cortex Microcontroller Software Interface
Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Memory model . . . . . . . . . . . . . . . . . . . . . . . 440
24.3.2.1 Memory regions, types and attributes. . . . . . 441
24.3.2.2 Memory system ordering of memory
accesses. . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
24.3.2.3 Behavior of memory accesses . . . . . . . . . . . 442
24.3.2.4 Software ordering of memory accesses . . . . 443
24.3.2.5 Memory endianness . . . . . . . . . . . . . . . . . . . 444
24.3.2.5.1 Little-endian format. . . . . . . . . . . . . . . . . . . . 444
24.3.3
Exception model . . . . . . . . . . . . . . . . . . . . . . 444
24.3.3.1 Exception states . . . . . . . . . . . . . . . . . . . . . . 444
24.3.3.2 Exception types . . . . . . . . . . . . . . . . . . . . . . 445
24.3.3.3 Exception handlers . . . . . . . . . . . . . . . . . . . . 446
24.3.3.4 Vector table. . . . . . . . . . . . . . . . . . . . . . . . . . 446
24.3.3.5 Exception priorities . . . . . . . . . . . . . . . . . . . . 447
24.3.3.6 Exception entry and return . . . . . . . . . . . . . . 448
24.3.3.6.1 Exception entry. . . . . . . . . . . . . . . . . . . . . . . 448
24.3.3.6.2 Exception return . . . . . . . . . . . . . . . . . . . . . . 449
24.3.4
Fault handling . . . . . . . . . . . . . . . . . . . . . . . . 450
24.3.4.1 Lockup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
24.3.5
Power management . . . . . . . . . . . . . . . . . . . 451
24.3.5.1 Entering sleep mode. . . . . . . . . . . . . . . . . . . 451
24.3.5.1.1 Wait for interrupt . . . . . . . . . . . . . . . . . . . . . . 451
24.3.5.1.2 Wait for event . . . . . . . . . . . . . . . . . . . . . . . . 451
24.3.5.1.3 Sleep-on-exit . . . . . . . . . . . . . . . . . . . . . . . . 452
24.3.5.2 Wake-up from sleep mode . . . . . . . . . . . . . . 452
24.3.5.2.1 Wake-up from WFI or sleep-on-exit . . . . . . . 452
24.3.5.2.2 Wake-up from WFE . . . . . . . . . . . . . . . . . . . 452
24.3.5.3 Power management programming hints. . . . 452
Instruction set . . . . . . . . . . . . . . . . . . . . . . . . 452
Instruction set summary . . . . . . . . . . . . . . . . 452
Intrinsic functions . . . . . . . . . . . . . . . . . . . . . 455
instruction descriptions. . . . . . . . . 456
24.4.3.1 Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
24.4.3.2 Restrictions when using PC or SP . . . . . . . . 456
24.4.3.3 Shift Operations . . . . . . . . . . . . . . . . . . . . . . 457
24.4.3.3.1 ASR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
24.4.3.3.2 LSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
24.4.3.3.3 LSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
24.4.3.3.4 ROR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
24.4.3.4 Address alignment . . . . . . . . . . . . . . . . . . . . 459
24.4.3.5 PC-relative
expressions . . . . . . . . . . . . . . . . 459
24.4.3.6 Conditional execution. . . . . . . . . . . . . . . . . . 459
24.4.3.6.1 The condition flags. . . . . . . . . . . . . . . . . . . . 460
24.4.3.6.2 Condition code suffixes . . . . . . . . . . . . . . . . 460
24.4.4 Memory
instructions. . . . . . . . . . . . . 461
24.4.4.1 ADR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
24.4.4.1.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
24.4.4.1.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
24.4.4.1.3 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . 462
24.4.4.1.4 Condition flags . . . . . . . . . . . . . . . . . . . . . . . 462
24.4.4.1.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
24.4.4.2 LDR and STR, immediate offset . . . . . . . . . 462
24.4.4.2.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
24.4.4.2.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
24.4.4.2.3 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . 462
24.4.4.2.4 Condition flags . . . . . . . . . . . . . . . . . . . . . . . 463
24.4.4.2.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 463
24.4.4.3 LDR and STR, register offset . . . . . . . . . . . . 463
24.4.4.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
24.4.4.3.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
24.4.4.3.3 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.3.4 Condition flags . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.3.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.4 LDR, PC-relative . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.4.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.4.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.4.3 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.4.4 Condition flags . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.4.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.5 LDM and STM . . . . . . . . . . . . . . . . . . . . . . . 464
24.4.4.5.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
24.4.4.5.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
24.4.4.5.3 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . 465
24.4.4.5.4 Condition flags . . . . . . . . . . . . . . . . . . . . . . . 465
24.4.4.5.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
24.4.4.5.6 Incorrect examples . . . . . . . . . . . . . . . . . . . 466
24.4.4.6 PUSH and POP . . . . . . . . . . . . . . . . . . . . . . 466
24.4.4.6.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
24.4.4.6.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
24.4.4.6.3 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . 466
24.4.4.6.4 Condition flags . . . . . . . . . . . . . . . . . . . . . . . 466
24.4.4.6.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
24.4.5
General data processing instructions. . . . . . 467
24.4.5.1 ADC, ADD, RSB, SBC, and SUB. . . . . . . . . 467
24.4.5.1.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
24.4.5.1.2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 468