电子工程世界电子工程世界电子工程世界

型号

产品描述

搜索
 

S3C2410A

器件型号:S3C2410A
文件大小:3280.23KB,共0页
厂商名称:SAMSUNG [Samsung semiconductor]
厂商官网:http://www.samsung.com/Products/Semiconductor/
下载文档

器件描述

文档预览

S3C2410A器件文档内容

                                                                   21-S3-C2410A-032004

USER'S MANUAL

     S3C2410A 200MHz & 266MHz
                                 32-Bit RISC

                           Microprocessor
                                Revision 1.0
S3C2410A

200MHz & 266MHz

         32-BIT RISC
   MICROPROCESSOR

     USER'S MANUAL

             Revision 1.0
                            Important Notice

The information in this publication has been carefully      "Typical" parameters can and do vary in different
checked and is believed to be entirely accurate at the      applications. All operating parameters, including
time of publication. Samsung assumes no                     "Typicals" must be validated for each customer
responsibility, however, for possible errors or             application by the customer's technical experts.
omissions, or for any consequences resulting from
the use of the information contained herein.                Samsung products are not designed, intended, or
                                                            authorized for use as components in systems
Samsung reserves the right to make changes in its           intended for surgical implant into the body, for other
products or product specifications with the intent to       applications intended to support or sustain life, or for
improve function or design at any time and without          any other application in which the failure of the
notice and is not required to update this                   Samsung product could create a situation where
documentation to reflect such changes.                      personal injury or death may occur.

This publication does not convey to a purchaser of          Should the Buyer purchase or use a Samsung
semiconductor devices described herein any license          product for any such unintended or unauthorized
under the patent rights of Samsung or others.               application, the Buyer shall indemnify and hold
                                                            Samsung and its officers, employees, subsidiaries,
Samsung makes no warranty, representation, or               affiliates, and distributors harmless against all claims,
guarantee regarding the suitability of its products for     costs, damages, expenses, and reasonable attorney
any particular purpose, nor does Samsung assume             fees arising out of, either directly or indirectly, any
any liability arising out of the application or use of any  claim of personal injury or death that may be
product or circuit and specifically disclaims any and       associated with such unintended or unauthorized use,
all liability, including without limitation any             even if such claim alleges that Samsung was
consequential or incidental damages.                        negligent regarding the design or manufacture of said
                                                            product.

S3C2410A 200MHz & 266MHz 32-Bit RISC Microprocessor
User's Manual, Revision 1.0 (March 2004)
Publication Number: 21-S3-C2410A-032004

2004 Samsung Electronics

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any
form or by any means, electric or mechanical, by photocopying, recording, or otherwise, without the prior written
consent of Samsung Electronics.

                  Samsung Electronics' microcontroller business has been awarded full ISO-9001
                  certification (BSI Certificate No. FM24653). All semiconductor products are designed
                  and manufactured in accordance with the highest quality standards and objectives.

Samsung Electronics Co., Ltd.
San #24 Nongseo-Ri, Giheung- Eup
Yongin-City, Gyeonggi-Do, Korea
C.P.O. Box #37, Suwon 449-900

TEL: (82)-(031)-209-1934
FAX: (82)-(031)-209-1899
Home Page: http://www.samsung.com

Printed in the Republic of Korea
                             Table of Contents

Chapter 1 Product Overview

   Introduction .........................................................................................................................................1-1
   Features .............................................................................................................................................1-2
   Block Diagram ....................................................................................................................................1-5
   Pin Assignments.................................................................................................................................1-6

           Signal Descriptions......................................................................................................................1-20
           S3C2410A Special Registers........................................................................................................1-26

Chapter 2 Programmer's model

   Overview .............................................................................................................................................2-1
           Processor Operating States .........................................................................................................2-1
           Switching State...........................................................................................................................2-1
           Memory Formats.........................................................................................................................2-1
           Big-Endian Format.......................................................................................................................2-2
           Little-Endian Format ....................................................................................................................2-2
           Instruction Length........................................................................................................................2-2
           Operating Modes .........................................................................................................................2-3
           Registers ....................................................................................................................................2-3
           The Program Status Registers ......................................................................................................2-7
           Exceptions .................................................................................................................................2-10
           Interrupt Latencies .......................................................................................................................2-15
           Reset .........................................................................................................................................2-15

S3C2410A MICROPROCESSOR                                                                                                                                         iii
                       Table of Contents (Continued)

Chapter 3 ARM Instruction set

   Instruction Set Summay.......................................................................................................................3-1
           Format Summary ........................................................................................................................3-1
           Instruction Summary....................................................................................................................3-2

   The Condition Field..............................................................................................................................3-4
   Branch and Exchange (BX)...................................................................................................................3-5

           Instruction Cycle Times................................................................................................................3-5
           Assembler Syntax .......................................................................................................................3-5
           Using R15 as an Operand ............................................................................................................3-5
   Branch and Branch with Link (B, Bl)......................................................................................................3-7
           The Link Bit ................................................................................................................................3-7
           Instruction Cycle Times................................................................................................................3-7
           Assembler Syntax .......................................................................................................................3-8
   Data Processing..................................................................................................................................3-9
           CPSR Flags................................................................................................................................3-11
           Shifts .........................................................................................................................................3-12
           Immediate Operand Rotates .........................................................................................................3-16
           Writing to R15.............................................................................................................................3-16
           Using R15 as an Operandy...........................................................................................................3-16
           TEQ, TST, CMP and CMN Opcodes..............................................................................................3-16
           Instruction Cycle Times................................................................................................................3-16
           Assembler Syntax .......................................................................................................................3-17
           Examples ...................................................................................................................................3-17
   PSR Transfer (MRS, MSR)...................................................................................................................3-18
           Operand Restrictions ...................................................................................................................3-18
           Reserved Bits..............................................................................................................................3-20
           Examples ...................................................................................................................................3-20
           Instruction Cycle Times................................................................................................................3-20
           Assembly Syntax ........................................................................................................................3-21
           Examples ...................................................................................................................................3-21
   Multiply and Multiply-Accumulate (MUL, MLA).......................................................................................3-22
           CPSR Flags................................................................................................................................3-24
           Instruction Cycle Times................................................................................................................3-24
           Assembler Syntax .......................................................................................................................3-24
           Examples ...................................................................................................................................3-24
   Multiply Long and Multiply-Accumulate Long (MULL, MLAL)....................................................................3-25
           Operand Restrictions ...................................................................................................................3-26
           CPSR Flags................................................................................................................................3-26
           Instruction Cycle Times................................................................................................................3-26
           Assembler Syntax .......................................................................................................................3-27
           Examples ...................................................................................................................................3-27

iv  S3C2410A MICROPROCESSOR
                       Table of Contents (Continued)

Chapter 3 ARM Instruction set (Continued)

   Single Data Transfer (LDR, STR)...........................................................................................................3-28
           Offsets And Auto-Indexing............................................................................................................3-29
           Shifted Register Offset .................................................................................................................3-29
           Bytes and Words ........................................................................................................................3-29
           Use of R15..................................................................................................................................3-31
           Example: ....................................................................................................................................3-31
           Data Aborts ................................................................................................................................3-31
           Instruction Cycle Times................................................................................................................3-31
           Assembler Syntax .......................................................................................................................3-32
           Examples ...................................................................................................................................3-33

   Halfword and Signed Data Transfer (LDRH/STRH/LDRSB/LDRSH) ...........................................................3-34
           Offsets and Auto-Indexing ............................................................................................................3-35
           Halfword Load and Stores.............................................................................................................3-36
           Use of R15..................................................................................................................................3-37
           Data Aborts ................................................................................................................................3-37
           Instruction Cycle Times................................................................................................................3-37
           Assembler Syntax .......................................................................................................................3-38
           Examples ...................................................................................................................................3-39

   Block Data Transfer (LDM, STM)...........................................................................................................3-40
           The Register List .........................................................................................................................3-40
           Addressing Modes.......................................................................................................................3-41
           Address Alignment ......................................................................................................................3-41
           Use of the S Bit...........................................................................................................................3-43
           Use of R15 as the Base...............................................................................................................3-43
           Inclusion of the Base in the Register List .......................................................................................3-44
           Data Aborts ................................................................................................................................3-44
           Instruction Cycle Times................................................................................................................3-44
           Assembler Syntax .......................................................................................................................3-45
           Examples ...................................................................................................................................3-46

   Single Data Swap (SWP).....................................................................................................................3-47
           Bytes and Words ........................................................................................................................3-47
           Use of R15..................................................................................................................................3-48
           Data Aborts ................................................................................................................................3-48
           Instruction Cycle Times................................................................................................................3-48
           Assembler Syntax .......................................................................................................................3-48

   Software Interrupt (SWI) .......................................................................................................................3-49
           Return from the Supervisor ...........................................................................................................3-49
           Comment Field............................................................................................................................3-49
           Instruction Cycle Times................................................................................................................3-49
           Assembler Syntax .......................................................................................................................3-50

   Coprocessor Data Operations (CDP).....................................................................................................3-51
           Coprocessor Instructions..............................................................................................................3-51
           Instruction Cycle Times................................................................................................................3-52
           Examples ...................................................................................................................................3-52

S3C2410A MICROPROCESSOR                                                                                                                                       v
                       Table of Contents (Continued)

Chapter 3 ARM Instruction set (Continued)

   Coprocessor Data Transfers (LDC, STC)................................................................................................3-53
           The Coprocessor Fields ...............................................................................................................3-54
           Addressing Modes.......................................................................................................................3-54
           Address Alignment ......................................................................................................................3-54
           Data Aborts ................................................................................................................................3-54
           Assembler Syntax .......................................................................................................................3-55
           Examples ...................................................................................................................................3-55
           Coprocessor Register Transfers (MRC, MCR).................................................................................3-56
           The Coprocessor Fields ...............................................................................................................3-56
           Transfers to R15..........................................................................................................................3-57
           Transfers from R15 ......................................................................................................................3-57
           Instruction Cycle Times................................................................................................................3-57
           Assembler Syntax .......................................................................................................................3-57
           Examples ...................................................................................................................................3-57
           Undefined Instruction ...................................................................................................................3-58
           Instruction Cycle Times................................................................................................................3-58
           Assembler Syntax .......................................................................................................................3-58
           Instruction Set Examples .............................................................................................................3-59
           Using the Conditional Instructions .................................................................................................3-59
           Pseudo-Random Binary Sequence Generator.................................................................................3-61
           Multiplication by Constant Using the Barrel Shifter..........................................................................3-61
           Loading a Word from an Unknown Alignment .................................................................................3-63

Chapter 4 Thumb Instruction Set

   Thumb Instruction Set Format...............................................................................................................4-1
           Format Summary ........................................................................................................................4-2
           Opcode Summary .......................................................................................................................4-3

   Format 1: Move Shifted Register ...........................................................................................................4-5
           Operation....................................................................................................................................4-5
           Instruction Cycle Times................................................................................................................4-6
           Examples ...................................................................................................................................4-6

   Format 2: Add/Subtract........................................................................................................................4-7
           Operation....................................................................................................................................4-7
           Instruction Cycle Times................................................................................................................4-8
           Examples ...................................................................................................................................4-8

   Format 3: Move/Compare/Add/Subtract Immediate.................................................................................4-9
           Operations ..................................................................................................................................4-9
           Instruction Cycle Times................................................................................................................4-10
           Examples ...................................................................................................................................4-10

   Format 4: ALU Operations....................................................................................................................4-11
           Operation....................................................................................................................................4-11
           Instruction Cycle Times................................................................................................................4-12
           Examples ...................................................................................................................................4-12

vi  S3C2410A MICROPROCESSOR
                       Table of Contents (Continued)

Chapter 4 Thumb Instruction Set (Continued)

   Format 5: Hi-Register Operations/Branch Exchange ...............................................................................4-13
           Operation....................................................................................................................................4-13
           Instruction Cycle Times................................................................................................................4-14
           The Bx Instruction .......................................................................................................................4-14
           Examples ...................................................................................................................................4-15
           Using R15 as an Operand ............................................................................................................4-15

   Format 6: Pc-Relative Load ..................................................................................................................4-16
           Operation....................................................................................................................................4-16
           Instruction Cycle Times................................................................................................................4-17
           Examples ...................................................................................................................................4-17

   Format 7: Load/Store with Register Offset..............................................................................................4-18
           Operation....................................................................................................................................4-19
           Instruction Cycle Times................................................................................................................4-19
           Examples ...................................................................................................................................4-19

   Format 8: Load/Store Sign-Extended Byte/Halfword................................................................................4-20
           Operation....................................................................................................................................4-20
           Instruction Cycle Times................................................................................................................4-21
           Examples ...................................................................................................................................4-21

   Format 9: Load/Store With Immediate Offset..........................................................................................4-22
           Operation....................................................................................................................................4-23
           Instruction Cycle Times................................................................................................................4-23
           Examples ...................................................................................................................................4-23

   Format 10: Load/Store Halfword............................................................................................................4-24
           Operation....................................................................................................................................4-24
           Instruction Cycle Times................................................................................................................4-25
           Examples ...................................................................................................................................4-25

   Format 11: Sp-Relative Load/Store........................................................................................................4-26
           Operation....................................................................................................................................4-26
           Instruction Cycle Times................................................................................................................4-27
           Examples ...................................................................................................................................4-27

   Format 12: Load Address.....................................................................................................................4-28
           Operation....................................................................................................................................4-28
           Instruction Cycle Times................................................................................................................4-29
           Examples ...................................................................................................................................4-29

   Format 13: Add Offset To Stack Pointer ................................................................................................4-30
           Operation....................................................................................................................................4-30
           Instruction Cycle Times................................................................................................................4-30
           Examples ...................................................................................................................................4-30

   Format 14: Push/Pop Registers ............................................................................................................4-31
           Operation....................................................................................................................................4-31
           Instruction Cycle Times................................................................................................................4-32
           Examples ...................................................................................................................................4-32

   Format 15: Multiple Load/Store.............................................................................................................4-33
           Operation....................................................................................................................................4-33
           Instruction Cycle Times................................................................................................................4-33
           Examples ...................................................................................................................................4-33

S3C2410A MICROPROCESSOR                                                                                                                                       vii
                       Table of Contents (Continued)

Chapter 4 Thumb Instruction Set (Continued)

   Format 16: Conditional Branch..............................................................................................................4-34
           Operation....................................................................................................................................4-34
           Instruction Cycle Times................................................................................................................4-35
           Examples ...................................................................................................................................4-35

   Format 17: Software Interrupt................................................................................................................4-36
           Operation....................................................................................................................................4-36
           Instruction Cycle Times................................................................................................................4-36
           Examples ...................................................................................................................................4-36

   Format 18: Unconditional Branch..........................................................................................................4-37
           Operation....................................................................................................................................4-37
           Examples ...................................................................................................................................4-37

   Format 19: Long Branch With Link ........................................................................................................4-38
           Operation....................................................................................................................................4-38
           Instruction Cycle Times................................................................................................................4-39
           Examples ...................................................................................................................................4-39

   Instruction Set Examples .....................................................................................................................4-40
           Multiplication by a Constant Using Shifts and Adds ........................................................................4-40
           General Purpose Signed Divide.....................................................................................................4-41
           Division by a Constant .................................................................................................................4-43

Chapter 5 Memory Controller

   Overview .............................................................................................................................................5-1
   Function Description............................................................................................................................5-3

           Bank0 Bus Width........................................................................................................................5-3
           Memory (SROM/SDRAM) Address Pin Connections.......................................................................5-3
           Sdram Bank Address Pin Connection............................................................................................5-4
           Nwait Pin Operation.....................................................................................................................5-5
           Programmable Access Cycle .......................................................................................................5-11
           Bus Width & Wait Control Register (BWSCON) .............................................................................5-13
           Bank Control Register (BANKCONN: NGCS0-NGCS5)....................................................................5-15
           Bank Control Register (BANKCONN: NGCS6-NGCS7)....................................................................5-16
           Refresh Control Register ..............................................................................................................5-17
           Banksize Register .......................................................................................................................5-18
           SDRAM Mode Register Set Register (MRSR) ................................................................................5-19

viii  S3C2410A MICROPROCESSOR
                       Table of Contents (Continued)

Chapter 6 NAND Flash Controller

   Overview .............................................................................................................................................6-1
           Features .....................................................................................................................................6-1
           Block Diagram ............................................................................................................................6-2
           Operation Scheme.......................................................................................................................6-2
           Auto Boot Mode Sequence...........................................................................................................6-3
           Nand Flash Mode Configuration ....................................................................................................6-3
           Nand Flash Memory Timing..........................................................................................................6-3
           Pin Configuration .........................................................................................................................6-4
           Boot and Nand Flash Configurations..............................................................................................6-4
           512-Byte Ecc Parity Code Assignment Table.................................................................................6-4
           Nand Flash Memory Mapping .......................................................................................................6-5

   Special Function Registers...................................................................................................................6-6
           Nand Flash Configuration (NFCONF) Register ................................................................................6-6
           Nand Flash Command Set (NFCMD) Register................................................................................6-7
           Nand Flash Address Set (NFADDR) Register.................................................................................6-7
           Nand Flash Data (NFDATA) Register.............................................................................................6-7
           Nand Flash Operation Status (NFSTAT) Register ...........................................................................6-8
           Nand Flash ECC (NFECC) Register ..............................................................................................6-8

Chapter 7 Clock & Power Management

   Overview .............................................................................................................................................7-1
   Functional Description .........................................................................................................................7-2

           Clock Architecture.......................................................................................................................7-2
           Clock Source Selection................................................................................................................7-2
           Phase Locked Loop (PLL) ............................................................................................................7-4
           Clock Control Logic .....................................................................................................................7-6
           Power Management .....................................................................................................................7-9
   Clock Generator & Power Management Special Register ........................................................................7-19
           Lock Time Count Register (LOCKTIME).........................................................................................7-19
           PLL Value Selection Table ...........................................................................................................7-20
           Clock Control Register (CLKCON).................................................................................................7-21
           Clock Slow Control (CLKSLOW) Register ......................................................................................7-22
           Clock Divider Control (CLKDIVN) Register......................................................................................7-22

S3C2410A MICROPROCESSOR                                                                                                                                       ix
                       Table of Contents (Continued)

Chapter 8 DMA

   Overview .............................................................................................................................................8-1
   DMA Request Sources ........................................................................................................................8-2
   DMA Operation ...................................................................................................................................8-2

           External DMA DREQ/DACK Protocol ............................................................................................8-3
           Examples ...................................................................................................................................8-6
   DMA Special Registers ........................................................................................................................8-7
           DMA Initial Source (DISRC) Register.............................................................................................8-7
           DMA Initial Source Control (DISRCC) Register ...............................................................................8-7
           DMA Initial Destination (DIDST) Register .......................................................................................8-8
           DMA Initial Destination Control (DIDSTC) Register..........................................................................8-8
           DMA Control (DCON) Register......................................................................................................8-9
           DMA Status (DSTAT) Register......................................................................................................8-11
           DMA Current Source (DCSRC) Register ........................................................................................8-11
           Current Destination (DCDST) Register ...........................................................................................8-12
           DMA Mask Trigger (DMASKTRIG) Register....................................................................................8-13

Chapter 9 I/O Ports

   Overview .............................................................................................................................................9-1
   Port Control Descriptions .....................................................................................................................9-7

           Port Configuration Register (GPACON-GPHCON)...........................................................................9-7
           Port Data Register (GPADAT-GPHDAT) ........................................................................................9-7
           Port Pull-up Register (GPBUP-GPHUP).........................................................................................9-7
           Miscellaneous Control Register.....................................................................................................9-7
           External Interrupt Control Register (EXTINTN).................................................................................9-7
           Power_Off Mode and I/O Ports......................................................................................................9-7
   I/O Port Control Register ......................................................................................................................9-8
           Port A Control Registers (GPACON/GPADAT) ...............................................................................9-8
           Port B Control Registers (GPBCON, GPBDAT, and GPBUP) ..........................................................9-9
           Port C Control Registers (GPCCON, GPCDAT, and GPCUP) ..........................................................9-10
           Port D Control Registers (GPDCON, GPDDAT, and GPDUP) ..........................................................9-12
           Port E Control Registers (GPECON, GPEDAT, and GPEUP) ..........................................................9-14
           Port F Control Registers (GPFCON, GPFDAT, and GPFPU) ...........................................................9-16
           Port G Control Registers (GPGCON, GPGDAT, and GPGUP) .........................................................9-17
           Port H Control Registers (GPHCON, GPHDAT, and GPHUP) ..........................................................9-19
           Miscellaneous Control Register (MISCCR) .....................................................................................9-20
           Dclk Control Registers (DCLKCON)...............................................................................................9-21
           External Interrupt Control Register (EXTINTN).................................................................................9-22
           External Interrupt Filter Register (EINTFLTN)..................................................................................9-25
           External Interrupt Mask Register (EINTMASK) ...............................................................................9-26
           External Interrupt Pending Register (EINTPENDN)..........................................................................9-27
           General Status Register (GSTATUSN)...........................................................................................9-28

x  S3C2410A MICROPROCESSOR
                       Table of Contents (Continued)

Chapter 10 PWM Timer

   Overview .............................................................................................................................................10-1
           Feature.......................................................................................................................................10-1

   Pwm Timer Operation ..........................................................................................................................10-3
           Prescaler & Divider ......................................................................................................................10-3
           Basic Timer Operation .................................................................................................................10-3
           Auto Reload & Double Buffering ....................................................................................................10-4
           Timer Initialization Using Manual Update Bit and Inverter Bit ............................................................10-5
           Timer Operation...........................................................................................................................10-6
           Pulse Width Modulation (PWM)....................................................................................................10-7
           Output Level Control ....................................................................................................................10-8
           Dead Zone Generator...................................................................................................................10-9
           Dma Request Mode.....................................................................................................................10-10

   PWM Timer Control Registers ..............................................................................................................10-11
           Timer Configuration Register 0 (TCFG0).........................................................................................10-11
           Timer Configuration Register 1 (TCFG1).........................................................................................10-12
           Timer Control (TCON) Register......................................................................................................10-13
           Timer 0 Count Buffer Register & Compare Buffer Register (TCNTB0/TCMPB0)...................................10-15
           Timer 0 Count Observation Register (TCNTO0) ...............................................................................10-15
           Timer 1 Count Buffer Register & Compare Buffer Register (TCNTB1/TCMPB1)...................................10-16
           Timer 1 Count Observation Register (TCNTO1) ...............................................................................10-16
           Timer 2 Count Buffer Register & Compare Buffer Register (TCNTB2/TCMPB2)...................................10-17
           Timer 2 Count Observation Register (TCNTO2) ...............................................................................10-17
           Timer 3 Count Buffer Register & Compare Buffer Register (TCNTB3/TCMPB3)...................................10-18
           Timer 3 Count Observation Register (TCNTO3) ...............................................................................10-18
           Timer 4 Count Buffer Register (TCNTB4) ........................................................................................10-19
           Timer 4 Count Observation Register (TCNTO4) ...............................................................................10-19

Chapter 11 UART

   Overview .............................................................................................................................................11-1
           Features .....................................................................................................................................11-1

   Block Diagram ....................................................................................................................................11-2
           Uart Operation.............................................................................................................................11-3

   Uart Special Registers .........................................................................................................................11-10
           Uart Line Control Register ............................................................................................................11-10
           Uart Control Register ...................................................................................................................11-11
           Uart FIFO Control Register ...........................................................................................................11-13
           Uart Modem Control Register........................................................................................................11-14
           Uart Tx/Rx Status Register...........................................................................................................11-15
           Uart Error Status Register ............................................................................................................11-16
           Uart FIFO Status Register............................................................................................................11-17
           Uart Modem Status Register ........................................................................................................11-18
           Uart Transmit Buffer Register (Holding Register & FIFO Register).....................................................11-19
           Uart Receive Buffer Register (Holding Register & FIFO Register)......................................................11-19
           Uart Baud Rate Divisor Register....................................................................................................11-20

S3C2410A MICROPROCESSOR  xi
                       Table of Contents (Continued)

Chapter 12 USB Host Controller

   Overview .............................................................................................................................................12-1
           USB Host Controller Special Registers ..........................................................................................12-2

Chapter 13 USB Device Controller

   Overview .............................................................................................................................................13-1
           Feature.......................................................................................................................................13-1

   USB Device Controller Special Registers ...............................................................................................13-3
           Function Address Register (Func_Addr_Reg).................................................................................13-5
           Power Management Register (Pwr_Reg)........................................................................................13-6
           Interrupt Register (Ep_Int_Reg/Usb_Int_Reg)..................................................................................13-7
           Interrupt Enable Register (Ep_Int_En_Reg/Usb_Int_En_Reg) ...........................................................13-9
           Frame Number Register (Fpame_Num1_Reg/Frame_Num2_Reg) ....................................................13-10
           Index Register (Index_Reg)...........................................................................................................13-11
           End Point0 Control Status Register (Ep0_Csr) ...............................................................................13-12
           End Point In Control Status Register (In_Csr1_Reg/In_Csr2_Reg) ....................................................13-14
           End Point Out Control Status Register (Out_Csr1_Reg/Out_Csr2_Reg)............................................13-16
           End Point FIFO Register (Epn_Fifo_Reg).......................................................................................13-18
           Max Packet Register (Maxp_Reg).................................................................................................13-19
           End Point Out Write Count Register (Out_Fifo_Cnt1_Reg/Out_Fifo_Cnt2_Reg) .................................13-20
           DMA Interface Control Register (Epn_Dma_Con) ............................................................................13-21
           DMA Unit Counter Register (Epn_Dma_Unit)..................................................................................13-22
           DMA FIFO Counter Register (Epn_Dma_FIFO)...............................................................................13-23
           DMA Total Transfer Counter Register (Epn_Dma_Ttc_L, M, H).........................................................13-24

xii  S3C2410A MICROPROCESSOR
                         Table of Contents (Continued)

Chapter 14 Interrupt Controller

   Overview .............................................................................................................................................14-1
           Interrupt Controller Operation ........................................................................................................14-2
           Interrupt Sources .........................................................................................................................14-3
           Interrupt Priority Generating Block.................................................................................................14-4
           Interrupt Priority...........................................................................................................................14-5

   Interrupt Controller Special Registers.....................................................................................................14-6
           Source Pending (SRCPND) Register .............................................................................................14-6
           Interrupt Mode (INTMOD) Register.................................................................................................14-8
           Interrupt Mask (INTMSK) Register.................................................................................................14-10
           Priority Register (PRIORITY).........................................................................................................14-12
           Interrupt Pending (INTPND) Register..............................................................................................14-14
           Interrupt Offset (INTOFFSET) Register...........................................................................................14-16
           Sub Source Pending (SUBSRCPND) Register................................................................................14-17
           Interrupt Sub Mask (INTSUBMSK) Register ...................................................................................14-18

Chapter 15 LCD Controller

   Overview .............................................................................................................................................15-1
           Features .....................................................................................................................................15-1
           Common Features .......................................................................................................................15-2
           External Interface Signal ..............................................................................................................15-2
           Block Diagram ............................................................................................................................15-3

   STN LCD Controller Operation ..............................................................................................................15-4
           Timing Generator (TIMEGEN) .......................................................................................................15-4
           Video Operation ..........................................................................................................................15-5
           Dithering and Frame Rate Control .................................................................................................15-7
           Memory Data Format (STN, BSWP = 0)........................................................................................15-9

   TFT LCD Controller Operation ...............................................................................................................15-15
           Video Operation ..........................................................................................................................15-15
           Memory Data Format (TFT) ..........................................................................................................15-16
           256 Palette Usage (TFT) ..............................................................................................................15-20
           Samsung TFT LCD Panel (3.5 Portrait / 256k Color /Reflective A-SI TFT LCD) .................................15-23
           Virtual Display (TFT/STN).............................................................................................................15-24
           LCD Power Enable (STN/TFT).......................................................................................................15-25
           LCD Controller Special Registers ..................................................................................................15-26
           Frame Buffer Start Address 1 Register ..........................................................................................15-32

S3C2410A MICROPROCESSOR  xiii
                       Table of Contents (Continued)

Chapter 16 ADC & Touch Screen Interface

   Overview .............................................................................................................................................16-1
           Features .....................................................................................................................................16-1

   ADC & Touch Screen Interface Operation ..............................................................................................16-2
           Block Diagram ............................................................................................................................16-2
           Example for Touch Screen ...........................................................................................................16-3
           Function Descriptions ..................................................................................................................16-4

   ADC and Touch Screen Interface Special Registers ................................................................................16-7
           ADC Control (ADCCON) Register..................................................................................................16-7
           ADC Touch Screen Control (ADCTSC) Register..............................................................................16-8
           ADC Start Delay (ADCDLY) Register.............................................................................................16-9
           ADC Conversion Data (ADCDAT0) Register....................................................................................16-10
           ADC Conversion Data (ADCDAT1) Register....................................................................................16-11

Chapter 17 Real Time Clock (RTC)

   Overview .............................................................................................................................................17-1
           Features .....................................................................................................................................17-1
           Real Time Clock Operation...........................................................................................................17-2
           Leap Year Generator....................................................................................................................17-2
           Read/Write Registers...................................................................................................................17-3
           Backup Battery Operation ............................................................................................................17-3
           Alarm Function............................................................................................................................17-3
           Tick Time Interrupt .......................................................................................................................17-3
           Round Reset Function .................................................................................................................17-3
           32.768kHz X-Tal Connection Example ..........................................................................................17-4

   Real Time Clock Special Registers .......................................................................................................17-5
           Real Time Clock Control (RTCCON) Register .................................................................................17-5
           Tick Time Count (TICNT) Register .................................................................................................17-5
           RTC Alarm Control (RTCALM) Register..........................................................................................17-6
           Alarm Second Data (ALMSEC) Register........................................................................................17-7
           Alarm Min Data (ALMMIN) Register...............................................................................................17-7
           Alarm Hour Data (ALMHOUR) Register..........................................................................................17-7
           Alarm Date Data (ALMDATE) Register ..........................................................................................17-8
           Alarm Mon Data (ALMMON) Register............................................................................................17-8
           Alarm Year Data (ALMYEAR) Register..........................................................................................17-8
           RTC Round Reset (RTCRST) Register ...........................................................................................17-9
           BCD Second (BCDSEC) Register .................................................................................................17-9
           BCD Minute (BCDMIN) Register....................................................................................................17-9
           BCD Hour (BCDHOUR) Register ...................................................................................................17-10
           BCD Date (BCDDATE) Register....................................................................................................17-10
           BCD Day (BCDDAY) Register.......................................................................................................17-10
           BCD Month (BCDMON) Register...................................................................................................17-11
           BCD Year (BCDYEAR) Register ...................................................................................................17-11

xiv  S3C2410A MICROPROCESSOR
                          Table of Contents (Continued)

Chapter 18 WatchDog Timer

   Overview .............................................................................................................................................18-1
           Features .....................................................................................................................................18-1
           Watchdog Timer Operation...........................................................................................................18-2
           WTDAT & WTCNT.......................................................................................................................18-2
           Consideration of Debugging Environment .......................................................................................18-2

   Watchdog Timer Special Registers .......................................................................................................18-3
           Watchdog Timer Control (WTCON) Register...................................................................................18-3
           Watchdog Timer Data (WTDAT) Register.......................................................................................18-4
           Watchdog Timer Count (WTCNT) Register .....................................................................................18-4

Chapter 19 MMC/SD/SDIO Host controller

   Overview .............................................................................................................................................19-1
           Features .....................................................................................................................................19-1
           Block Diagram ............................................................................................................................19-2
           SDI Operation .............................................................................................................................19-3
           SDIO Operation...........................................................................................................................19-4
           SDI Special Registers ..................................................................................................................19-5

Chapter 20 IIC-BUS Interface

   Overview .............................................................................................................................................20-1
           IIC-Bus Interface..........................................................................................................................20-3
           Start and Stop Conditions ............................................................................................................20-3
           Data Transfer Format ...................................................................................................................20-4
           ACK Signal Transmission.............................................................................................................20-5
           Read-Write Operation ..................................................................................................................20-6
           Bus Arbitration Procedures...........................................................................................................20-6
           Abort Conditions..........................................................................................................................20-6
           Configuring IIC-Bus ......................................................................................................................20-6
           Flowcharts of Operations in Each Mode.........................................................................................20-7

   IIC-Bus Interface Special Registers .......................................................................................................20-11
           Multi-Master IIC-Bus Control (IICCON) Register ..............................................................................20-11
           Multi-Master IIC-Bus Control/Status (IICSTAT) Register...................................................................20-12
           Multi-Master IIC-Bus Address (IICADD) Register.............................................................................20-13
           Multi-Master IIC-Bus Transmit/Receive Data Shift (IICDS) Register...................................................20-13

S3C2410A MICROPROCESSOR  xv
                       Table of Contents (Continued)

Chapter 21 IIS-BUS Interface

   Overview .............................................................................................................................................21-1
   Block Diagram ....................................................................................................................................21-2
   Functional Descriptions........................................................................................................................21-2

           Transmit or Receive Only Mode ....................................................................................................21-2
   Audio Serial Interface Format................................................................................................................21-3

           IIS-Bus Format ............................................................................................................................21-3
           MSB (Left) Justified .....................................................................................................................21-3
           Sampling Frequency and Master Clock .........................................................................................21-4
   IIS-Bus Interface Special Registers .......................................................................................................21-5
           IIS Control (IISCON) Register........................................................................................................21-5
           IIS Mode Register (IISMOD) Register.............................................................................................21-6
           IIS Prescaler (IISPSR) Register.....................................................................................................21-7
           IIS FIFO Control (IISFCON) Register..............................................................................................21-8
           IIS FIFO (IISFIFO) Register...........................................................................................................21-8

Chapter 22 SPI Interface

   Overview .............................................................................................................................................22-1
           Features .....................................................................................................................................22-1
           Block Diagram ............................................................................................................................22-2
           SPI Operation .............................................................................................................................22-3

   SPI Special Registers ..........................................................................................................................22-7
           SPI Control Register ....................................................................................................................22-7
           SPI Status Register.....................................................................................................................22-8
           SPI Pin Control Register ..............................................................................................................22-9

xvi  S3C2410A MICROPROCESSOR
                       Table of Contents (Continued)

Chapter 23 BUS Priorities

   Overview .............................................................................................................................................23-1
           Bus Priority Map .........................................................................................................................23-1

Chapter 24 Electrical Data

   Absolute Maximum Ratings..................................................................................................................24-1
   Recommended Operating Conditions.....................................................................................................24-1
   D.C. Electrical Characteristics..............................................................................................................24-2
   A.C. Electrical Characteristics..............................................................................................................24-4

Chapter 25 Mechanical Data

   Package Dimensions ...........................................................................................................................25-1

S3C2410A MICROPROCESSOR  xvii
                       Table of Contents (Continued)

Appendix 1- ARM920T Introduction

   Abuot the Introduction..........................................................................................................................1-1
   Processor Functional Block Diagram.....................................................................................................1-2

Appendix 2- Programmer's Model

   About rhe Programmer's Model.............................................................................................................2-1
   About rhe ARM9TDMI Programmer's Model ...........................................................................................2-2

           Data Abort Model ........................................................................................................................2-2
           Instruction Set Extension Spaces .................................................................................................2-3
   Cp15 Register Map Summary ...............................................................................................................2-4
           Accessing Cp15 Registers ...........................................................................................................2-5
           Register 0: ID Code Register ........................................................................................................2-7
           Register 0: Cache Type Register...................................................................................................2-8
           Register 1: Control Register..........................................................................................................2-10
           Register 2: Translation Table Base (TTB) Register ..........................................................................2-12
           Register 3: Domain Access Control Register..................................................................................2-13
           Register 4: Reserved....................................................................................................................2-14
           Register 5: Fault Status Registers ................................................................................................2-14
           Register 6: Fault Address Register................................................................................................2-15
           Register 7: Cache Operations .......................................................................................................2-15
           Register 8: TLB Operations ..........................................................................................................2-18
           Register 9: Cache Lock Down Register..........................................................................................2-19
           Register 10: TLB Lock Down Register ...........................................................................................2-21
           Registers 11-12 & 14: Reserved....................................................................................................2-22
           Register 13: Process ID ...............................................................................................................2-22
           Register 15: Test Configuration Register ........................................................................................2-24

Appendix 3- MMU

   About the MMU...................................................................................................................................3-1
           Access Permissions And Domains ...............................................................................................3-1
           Translated Entries .......................................................................................................................3-2

   Mmu Program Accessible Registers .....................................................................................................3-3
   Address Translation.............................................................................................................................3-4
   Hardware Translation Process ..............................................................................................................3-6

           Translation Table Base.................................................................................................................3-6
           Level One Fetch..........................................................................................................................3-7
   Level One Descriptor............................................................................................................................3-8
   Section Descriptor...............................................................................................................................3-9
   Coarse Page Table Descriptor ..............................................................................................................3-9
   Fine Page Table Descriptor ..................................................................................................................3-9
   Translating Section References.............................................................................................................3-10

xviii  S3C2410A MICROPROCESSOR
                         Table of Contents (Concluded)

Appendix 3- MMU (Continued)

   Level Two Descriptor............................................................................................................................3-11
   Translating Large Page References .......................................................................................................3-12
   Translating Small Page References .......................................................................................................3-14
   Translating Tiny Page References .........................................................................................................3-15
   Sub-Pages..........................................................................................................................................3-17
   Mmu Faults and CPU Aborts................................................................................................................3-17
   Fault Address and Fault Status Registers..............................................................................................3-18

           Fault Status ................................................................................................................................3-18
   Domain Access Control .......................................................................................................................3-19
   Fault Checking Sequence ....................................................................................................................3-21

           Alignment Fault...........................................................................................................................3-22
           Translation Fault..........................................................................................................................3-22
           Domain Fault ..............................................................................................................................3-22
           Permission Fault .........................................................................................................................3-23
   External Aborts ...................................................................................................................................3-24
   Interaction of the MMU and Caches.......................................................................................................3-25
           Enabling the MMU.......................................................................................................................3-25
           Disabling the MMU......................................................................................................................3-25

Appendix 4- Caches, Write Buffer

   About the Caches and Write Buffer .......................................................................................................4-1
   Instruction Cache ................................................................................................................................4-2

           Instruction Cache Enable/Disable..................................................................................................4-3
           Instruction Cache Operation .........................................................................................................4-3
           Instruction Cache Replacement Algorithm......................................................................................4-4
           Instruction Cache Lockdown.........................................................................................................4-4
   Data Cache and Write Buffer ................................................................................................................4-5
           Data Cache and Write Buffer Enable/Disable..................................................................................4-6
           Data Cache and Write Buffer Operation .........................................................................................4-6
           Data Cache Replacement Algorithm..............................................................................................4-8
           Swap Instructions ........................................................................................................................4-8
           Data Cache Organization .............................................................................................................4-9
           Data Cache Lockdown .................................................................................................................4-9
   Cache Coherence................................................................................................................................4-10
   Cache Cleaning when Lockdown is in Use.............................................................................................4-12
   Implementation Notes ..........................................................................................................................4-12
   Physical Address TAG RAM ................................................................................................................4-12

Appendix 5- Clock Modes

   Overview .............................................................................................................................................5-1
   Fastbus Mode.....................................................................................................................................5-2
   Synchronous Mode..............................................................................................................................5-2
   Asynchronous Mode............................................................................................................................5-3

S3C2410A MICROPROCESSOR                                 xix
                         List of Figures

Figure                   Title               Page
Number                                    Number

1-1     S3C2410A Block Diagram....................................................................................1-5
1-2     S3C2410A Pin Assignments (272-FBGA)..............................................................1-6

2-1     Big-Endian Addresses of Bytes within Words.........................................................2-2
2-2     Little-Endian Addresses of Bytes within Words ......................................................2-2
2-3     Register Organization in ARM State......................................................................2-4
2-4     Register Organization in THUMB state ..................................................................2-5
2-5     Mapping of THUMB State Registers onto ARM State Registers ...............................2-6
2-6     Program Status Register Formats.........................................................................2-7

3-1     ARM Instruction Set Format .................................................................................3-1
3-2     Branch and Exchange Instructions ........................................................................3-5
3-3     Branch Instructions..............................................................................................3-7
3-4     Data Processing Instructions ................................................................................3-9
3-5     ARM Shift Operations ..........................................................................................3-12
3-6     Logical Shift Left..................................................................................................3-12
3-7     Logical Shift Right ...............................................................................................3-13
3-8     Arithmetic Shift Right ...........................................................................................3-13
3-9     Rotate Right........................................................................................................3-14
3-10    Rotate Right Extended.........................................................................................3-14
3-11    PSR Transfer ......................................................................................................3-19
3-12    Multiply Instructions.............................................................................................3-22
3-13    Multiply Long Instructions.....................................................................................3-25
3-14    Single Data Transfer Instructions...........................................................................3-28
3-15    Little-Endian Offset Addressing.............................................................................3-30
3-16    Halfword and Signed Data Transfer with Register Offset...........................................3-34
3-17    Halfword and Signed Data Transfer with Immediate Offset and Auto-Indexing.............3-35
3-18    Block Data Transfer Instructions ...........................................................................3-40
3-19    Post-Increment Addressing ..................................................................................3-41
3-20    Pre-Increment Addressing ....................................................................................3-42
3-21    Post-Decrement Addressing.................................................................................3-42
3-22    Pre-Decrement Addressing...................................................................................3-43
3-23    Swap Instruction..................................................................................................3-47
3-24    Software Interrupt Instruction ................................................................................3-49
3-25    Coprocessor Data Operation Instruction.................................................................3-51
3-26    Coprocessor Data Transfer Instructions .................................................................3-53
3-27    Coprocessor Register Transfer Instructions ............................................................3-56
3-28    Undefined Instruction ...........................................................................................3-58

S3C2410A MICROPROCESSOR                                                                                                xxi
        List of Figures (Continued)

Figure  Title                           Page
Number                               Number

4-1     THUMB Instruction Set Formats ...........................................................................4-2
4-2     Format 1.............................................................................................................4-5
4-3     Format 2.............................................................................................................4-7
4-4     Format 3.............................................................................................................4-9
4-5     Format 4.............................................................................................................4-11
4-6     Format 5.............................................................................................................4-13
4-7     Format 6.............................................................................................................4-16
4-8     Format 7.............................................................................................................4-18
4-9     Format 8.............................................................................................................4-20
4-10    Format 9.............................................................................................................4-22
4-11    Format 10...........................................................................................................4-24
4-12    Format 11...........................................................................................................4-26
4-13    Format 12...........................................................................................................4-28
4-14    Format 13...........................................................................................................4-30
4-15    Format 14...........................................................................................................4-31
4-16    Format 15...........................................................................................................4-33
4-17    Format 16...........................................................................................................4-34
4-18    Format 17...........................................................................................................4-36
4-19    Format 18...........................................................................................................4-37
4-20    Format 19...........................................................................................................4-38

5-1     S3C2410A Memory Map after Reset .....................................................................5-2
5-2     S3C2410A External nWAIT Timing Diagram (Tacc = 4) ...........................................5-5
5-3     S3C2410A nXBREQ/nXBACK Timing Diagram .......................................................5-6
5-4     Memory Interface with 8-bit ROM ..........................................................................5-7
5-5     Memory Interface with 8-bit ROM 2 ....................................................................5-7
5-6     Memory Interface with 8-bit ROM 4 ....................................................................5-8
5-7     Memory Interface with 16-bit ROM ........................................................................5-8
5-8     Memory Interface with 16-bit SRAM ......................................................................5-9
5-9     Memory Interface with 16-bit SRAM 2.................................................................5-9
5-10    Memory Interface with 16-bit SDRAM(8MB: 1Mb 16 4banks).............................5-10
5-11    Memory Interface with 16-bit SDRAM (16MB: 1Mb 16 4banks 2ea) .................5-10
5-12    S3C2410A nGCS Timing Diagram.........................................................................5-11
5-13    S3C2410A SDRAM Timing Diagram......................................................................5-12

xxii                                 S3C2410A MICROPROCESSOR
                         List of Figures (Continued)

Figure                   Title                           Page
Number                                                Number

6-1     NAND Flash Controller Block Diagram...................................................................6-2
6-2     NAND Flash Operation Scheme............................................................................6-2
6-3     TACLS = 0, TWRPH0 = 1, TWRPH1 = 0...............................................................6-3
6-4     NAND Flash Memory Mapping..............................................................................6-5

7-1     Clock Generator Block Diagram............................................................................7-3
7-2     PLL (Phase-Locked Loop) Block Diagram..............................................................7-5
7-3     Main Oscillator Circuit Examples ..........................................................................7-5
7-4     Power-On Reset Sequence (when the external clock source is a crystal oscillator) ...7-6
7-5     Changing Slow Clock by Setting PMS Value..........................................................7-7
7-6     Changing CLKDIVN Register Value .......................................................................7-8
7-7     The Clock Distribution Block Diagram....................................................................7-9
7-8     Power Management State Diagram .......................................................................7-10
7-9     Issuing Exit_from_Slow_mode Command in PLL on State.......................................7-12
7-10    Issuing Exit_from_Slow_mode Command After Lock Time.......................................7-12
7-11    Issuing Exit_from_Slow_mode Command and the Instant PLL_on
        Command Simultaneously....................................................................................7-13
7-12    Power_OFF Mode ...............................................................................................7-16

8-1     Basic DMA Timing Diagram..................................................................................8-3
8-2     Demand/Handshake Mode Comparison .................................................................8-4
8-3     Burst 4 Transfer Size...........................................................................................8-5
8-4     Single service in Demand Mode with Unit Transfer Size...........................................8-6
8-5     Single service in Handshake Mode with Unit Transfer Size ......................................8-6
8-6     Whole service in Handshake Mode with Unit Transfer Size......................................8-6

10-1    16-bit PWM Timer Block Diagram .........................................................................10-2
10-2    Timer Operations .................................................................................................10-3
10-3    Example of Double Buffering Function ...................................................................10-4
10-4    Example of a Timer Operation...............................................................................10-6
10-5    Example of PWM................................................................................................10-7
10-6    Inverter On/Off .....................................................................................................10-8
10-7    The Wave form when a Dead Zone Feature is Enabled ............................................10-9
10-8    Timer4 DMA Mode Operation................................................................................10-10

11-1    UART Block Diagram (with FIFO)..........................................................................11-2
11-2    UART AFC Interface ............................................................................................11-4
11-3    UART Receiving 4 Characters with 1 Error .............................................................11-6
11-4    IrDA Function Block Diagram................................................................................11-8
11-5    Serial I/O Frame Timing Diagram (Normal UART)....................................................11-9
11-6    Infra-Red Transmit Mode Frame Timing Diagram.....................................................11-9
11-7    Infra-Red Receive Mode Frame Timing Diagram......................................................11-9
11-8    nCTS and Delta CTS Timing Diagram ....................................................................11-18

12-1    USB Host Controller Block Diagram ......................................................................12-1

13-1    USB Device Controller Block Diagram ...................................................................13-2

S3C2410A MICROPROCESSOR                               xxiii
        List of Figures (Continued)

Figure  Title                           Page
Number                               Number

14-1    Interrupt Process Diagram....................................................................................14-1
14-2    Priority Generating Block .....................................................................................14-4

15-1    LCD Controller Block Diagram ..............................................................................15-3
15-2    Monochrome Display Types (STN) ........................................................................15-11
15-3    Color Display Types (STN) ...................................................................................15-12
15-4    8-bit Single Scan Display Type STN LCD Timing ....................................................15-14
15-5    16BPP Display Types (TFT) .................................................................................15-21
15-6    TFT LCD Timing Example.....................................................................................15-22
15-7    Example of Scrolling in Virtual Display (Single Scan)..............................................15-24
15-8    Example of PWREN Function (PWREN = 1, INVPWREN = 0) ................................15-25

16-1    ADC and Touch Screen Interface Block Diagram ....................................................16-2
16-2    Example of ADC and Touch Screen Interface.........................................................16-3
16-3    Timing Diagram in Auto (Sequential) X/Y Position Conversion Mode .........................16-6

17-1    Real Time Clock Block Diagram............................................................................17-2
17-2    Main Oscillator Circuit Example............................................................................17-4

18-1    Watchdog Timer Block Diagram............................................................................18-2

19-1    Block Diagram ....................................................................................................19-2

20-1    IIC-Bus Block Diagram.........................................................................................20-2
20-2    Start and Stop Condition ......................................................................................20-3
20-3    IIC-Bus Interface Data Format ...............................................................................20-4
20-4    Data Transfer on the IIC-Bus .................................................................................20-5
20-5    Acknowledge on the IIC-Bus .................................................................................20-5
20-8    Operations for Slave/Transmitter Mode ..................................................................20-9
20-9    Operations for Slave/Receiver Mode ......................................................................20-10

21-1    IIS-Bus Block Diagram.........................................................................................21-2
21-2    IIS-Bus and MSB (Left)-justified Data Interface Formats ..........................................21-4

22-1    SPI Block Diagram ..............................................................................................22-2
22-2    SPI Transfer Format.............................................................................................22-4

24-1    XTIpll Clock Timing ..............................................................................................24-4
24-2    EXTCLK Clock Input Timing..................................................................................24-4
24-3    EXTCLK/HCLK in case that EXTCLK is used without the PLL ..................................24-4
24-4    HCLK/CLKOUT/SCLK in case that EXTCLK is used ...............................................24-5
24-5    Manual Reset Input Timing ...................................................................................24-5
24-6    Power-On Oscillation Setting Timing .....................................................................24-6
24-7    Power_OFF Mode Return Oscillation Setting Timing...............................................24-7

xxiv                                 S3C2410A MICROPROCESSOR
                         List of Figures (Continued)

Figure                   Title                           Page
Number                                                Number

24-8    ROM/SRAM Burst READ Timing(I) (Tacs = 0, Tcos = 0, Tacc = 2, Tcoh = 0,
        Tcah = 0, PMC = 0, ST = 0, DW = 16-bit)..............................................................24-8
24-9    ROM/SRAM Burst READ Timing(II) (Tacs = 0, Tcos = 0, Tacc = 2, Tcoh = 0,
        Tcah = 0, PMC = 0, ST = 1, DW = 16-bit)..............................................................24-9
24-10   External Bus Request in ROM/SRAM Cycle (Tacs = 0, Tcos = 0, Tacc = 8,
        Tcoh = 0, Tcah = 0, PMC = 0, ST = 0) ..................................................................24-10
24-11   ROM/SRAM READ Timing (I) (Tacs = 2,Tcos = 2, Tacc = 4, Tcoh = 2, Tcah = 2,
        PMC = 0, ST = 0)................................................................................................24-11
24-12   ROM/SRAM READ Timing (II) (Tacs = 2, Tcos = 2, Tacc = 4, Tcoh = 2, Tcah = 2,
        PMC = 0, ST = 1)................................................................................................24-12
24-13   ROM/SRAM WRITE Timing (I) (Tacs = 2,Tcos = 2,Tacc = 4,Tcoh = 2, Tcah = 2,
        PMC = 0, ST = 0.................................................................................................24-13
24-14   ROM/SRAM WRITE Timing (II) (Tacs = 2, Tcos = 2, Tacc = 4, Tcoh = 2, Tcah = 2,
        PMC = 0, ST = 1)................................................................................................24-14
24-15   External nWAIT READ Timing (Tacs = 1, Tcos = 1, Tacc = 4, Tcoh = 0, Tcah = 1,
        PMC = 0, ST = 0)................................................................................................24-15
24-16   External nWAIT WRITE Timing (Tacs = 0, Tcos = 0, Tacc = 4, Tcoh = 0, Tcah = 0,
        PMC = 0, ST = 0)................................................................................................24-15
24-17   Masked-ROM Single READ Timing
        (Tacs = 2, Tcos = 2, Tacc = 8, PMC = 01/10/11)....................................................24-16
24-18   Masked-ROM Consecutive READ Timing (Tacs = 0, Tcos = 0, Tacc = 3, Tpac = 2,
        PMC = 01/10/11).................................................................................................24-16
24-19   SDRAM Single Burst READ Timing (Trp = 2, Trcd = 2, Tcl = 2, DW = 16-bit)...........24-17
24-20   External Bus Request in SDRAM Timing (Trp = 2, Trcd = 2, Tcl = 2)........................24-18
24-21   SDRAM MRS Timing ...........................................................................................24-19
24-22   SDRAM Single READ Timing(I) (Trp = 2, Trcd = 2, Tcl = 2) .....................................24-20
24-23   SDRAM Single READ Timing(II) (Trp = 2, Trcd = 2, Tcl = 3).....................................24-21
24-24   SDRAM Auto Refresh Timing (Trp = 2, Trc = 4) ......................................................24-22
24-25   SDRAM Page Hit-Miss READ Timing (Trp = 2, Trcd = 2, Tcl = 2).............................24-23
24-26   SDRAM Self Refresh Timing (Trp = 2, Trc = 4) .......................................................24-24
24-27   SDRAM Single Write Timing (Trp = 2, Trcd = 2) .....................................................24-25
24-28   SDRAM Page Hit-Miss Write Timing (Trp = 2, Trcd = 2, Tcl = 2)..............................24-26
24-29   External DMA Timing (Handshake, Single transfer).................................................24-27
24-30   TFT LCD Controller Timing....................................................................................24-27
24-31   IIS Interface Timing ..............................................................................................24-28
24-32   IIC Interface Timing ..............................................................................................24-28
24-33   SD/MMC Interface Timing.....................................................................................24-29
24-34   SPI Interface Timing (CPHA = 1, CPOL = 1) ..........................................................24-29
24-35   NAND Flash Address/Command Timing ................................................................24-30
24-36   NAND Flash Timing .............................................................................................24-30

25-1    272-FBGA-1414 Package Dimension 1 (Top View) .................................................25-1
25-2    272-FBGA-1414 Package Dimension 2 (Bottom View) ............................................25-2

S3C2410A MICROPROCESSOR                               xxv
        List of Figures (Concluded)

Figure  Title                           Page
Number                               Number

1-1     ARM920T Functional Block Diagram .....................................................................1-2

2-1     CP15 MRC and MCR Bit Pattern ..........................................................................2-5
2-2     Register 7 MVA Format .......................................................................................2-17
2-3     Register 7 Index Format .......................................................................................2-17
2-4     Register 8 MVA Format .......................................................................................2-18
2-5     Register 9...........................................................................................................2-20
2-6     Register 10 .........................................................................................................2-21
2-7     Register 13 .........................................................................................................2-22
2-8     Address Mapping Using CP15 Register 13.............................................................2-23

3-1     Translating Page Tables .......................................................................................3-5
3-2     Translation Table Base Register............................................................................3-6
3-3     Accessing the Translation Table Level One Descriptors...........................................3-7
3-4     Level One Descriptors ..........................................................................................3-8
3-5     Section Translation..............................................................................................3-10
3-6     Page Table Entry (Level One Descriptor)................................................................3-11
3-7     Large Page Translation from a Coarse Page Table..................................................3-13
3-8     Small Page Translation from a Coarse Page Table..................................................3-14
3-9     Tiny Page Translation from a Fine Page Table........................................................3-16
3-10    Domain Access Control Register Format ...............................................................3-19
3-11    Sequence for Checking Faults ..............................................................................3-21

xxvi                                 S3C2410A MICROPROCESSOR
                         List of Tables

Table                    Title              Page
Number                                   Number

1-1     272-Pin FBGA Pin Assignments Pin Number Order .............................................1-7
1-2     272-Pin FBGA Pin Assignments...........................................................................1-10
1-3     S3C2410A Signal Descriptions .............................................................................1-20
1-4     S3C2410A Special Registers................................................................................1-26

2-1     PSR Mode Bit Values ..........................................................................................2-9
2-2     Exception Entry/Exit............................................................................................2-11
2-3     Exception Vectors ...............................................................................................2-13

3-1     The ARM Instruction Set ......................................................................................3-2
3-2     Condition Code Summary.....................................................................................3-4
3-3     ARM Data Processing Instructions........................................................................3-11
3-4     Incremental Cycle Times ......................................................................................3-16
3-5     Assembler Syntax Descriptions ............................................................................3-27
3-6     Addressing Mode Names .....................................................................................3-45

4-1     THUMB Instruction Set Opcodes ..........................................................................4-3
4-2     Summary of Format 1 Instructions ........................................................................4-5
4-3     Summary of Format 2 Instructions ........................................................................4-7
4-4     Summary of Format 3 Instructions ........................................................................4-9
4-5     Summary of Format 4 Instructions ........................................................................4-11
4-6     Summary of Format 5 Instructions ........................................................................4-13
4-7     Summary of PC-Relative Load Instruction ..............................................................4-16
4-8     Summary of Format 7 Instructions ........................................................................4-19
4-9     Summary of format 8 instructions..........................................................................4-20
4-10    Summary of Format 9 Instructions ........................................................................4-23
4-11    Halfword Data Transfer Instructions .......................................................................4-24
4-12    SP-Relative Load/Store Instructions ......................................................................4-26
4-13    Load Address......................................................................................................4-28
4-14    The ADD SP Instruction .......................................................................................4-30
4-15    PUSH and POP Instructions.................................................................................4-31
4-16    The Multiple Load/Store Instructions......................................................................4-33
4-17    The Conditional Branch Instructions ......................................................................4-34
4-18    The SWI Instruction .............................................................................................4-36
4-19    Summary of Branch Instruction.............................................................................4-37
4-20    The BL Instruction ...............................................................................................4-39

5-1     Bank 6/7 Addresses ............................................................................................5-2
5-2     SDRAM Bank Address Configuration.....................................................................5-4

7-1     Clock Source Selection at Boot-Up .......................................................................7-2
7-2     Clock and Power State in Each Power Mode .........................................................7-10
7-3     CLKSLOW and CLKDIVN Register Settings for SLOW Clock ..................................7-11

S3C2410A MICROPROCESSOR                  xxvii
        List of Tables (Continued)

Table   Title                          Page
Number                              Number

8-1     DMA Request Sources for Each Channel...............................................................8-2
8-2     DMA Controller Module Signal Timing Constants....................................................8-3

9-1     S3C2410A Port Configuration ...............................................................................9-2

11-1    Interrupts in Connection with FIFO ........................................................................11-5

12-1    OHCI Registers for USB Host Controller ................................................................12-2

15-1    Relation Between VCLK and CLKVAL (STN, HCLK = 60 MHz)................................15-5
15-2    Dither Duty Cycle Examples.................................................................................15-7
15-3    Relation Between VCLK and CLKVAL (TFT, HCLK = 60 MHz).................................15-15
15-4    5:6:5 Format .......................................................................................................15-20
15-5    5:5:5:1 Format ....................................................................................................15-20
15-6    MV Value for Each Display Mode..........................................................................15-39

16-1    Condition of Touch Screen Panel Pads in Separate X/Y Position Conversion Mode....16-4
16-2    Condition of Touch Screen Panel Pads in Auto (Sequential) X/Y Position
        Conversion Mode. ................................................................................................16-5
16-3    Condition of Touch Screen Panel Pads in Waiting for Interrupt Mode. .......................16-5

21-1    CODEC clock (CODECLK = 256 or 384fs).............................................................21-4
21-2    Usable Serial Bit Clock Frequency (IISCLK = 16 or 32 or 48fs) ................................21-5

24-1    Absolute Maximum Rating ...................................................................................24-1
24-2    Recommended Operating Conditions.....................................................................24-1
24-3    Normal I/O PAD DC Electrical Characteristics........................................................24-2
24-4    USB DC Electrical Characteristics ........................................................................24-3
24-5    S3C2410A Power Supply Voltage and Current .......................................................24-3
24-6    Clock Timing Constants .......................................................................................24-31
24-7    ROM/SRAM Bus Timing Constants.......................................................................24-32
24-8    Memory Interface Timing Constants (3.3V).............................................................24-32
24-9    External Bus Request Timing Constants................................................................24-33
24-10   DMA Controller Module Signal Timing Constants....................................................24-33
24-11   TFT LCD Controller Module Signal Timing Constants ..............................................24-34
24-12   IIS Controller Module Signal Timing Constants .......................................................24-34
24-13   IIC BUS Controller Module Signal Timing ...............................................................24-35
24-14   SD/MMC Interface Transmit/Receive Timing Constants ...........................................24-35
24-15   SPI Interface Transmit/Receive Timing Constants ...................................................24-36
24-16   USB Electrical Specifications ...............................................................................24-36
24-17   USB Full Speed Output Buffer Electrical Characteristics .........................................24-37
24-18   USB Low Speed Output Buffer Electrical Characteristics.........................................24-37
24-19   NAND Flash Interface Timing Constants ................................................................24-38

xxviii                              S3C2410A MICROPROCESSOR
                         List of Table (Concluded)

Figure                   Title                         Page
Number                                              Number

2-1     ARM9TDMI Implementation Option........................................................................2-2
2-2     CP15 Register Map .............................................................................................2-4
2-3     CP15 Abbreviations .............................................................................................2-5
2-4     Address Types in ARM920...................................................................................2-6
2-5     Register 0: ID Code .............................................................................................2-7
2-6     Cache Type Register Format ................................................................................2-8
2-7     Cache Size Encoding ..........................................................................................2-9
2-8     Cache associativity encoding................................................................................2-9
2-9     Line Length Encoding ..........................................................................................2-10
2-10    Control Register 1-bit Functions ............................................................................2-11
2-11    Clocking Modes ..................................................................................................2-11
2-12    Register 2: Translation Table Base........................................................................2-12
2-13    Register 3: Domain Access Control.......................................................................2-13
2-14    Fault Status Register...........................................................................................2-14
2-15    Function Descriptions Register 7 ..........................................................................2-15
2-16    Cache Operations Register 7................................................................................2-16
2-17    TLB Operations Register 8 ...................................................................................2-18
2-18    Accessing the Cache Lock Down Register 9..........................................................2-20
2-19    Accessing the TLB Lock Down Register 10............................................................2-21

3-1     CP15 Register Functions .....................................................................................3-3
3-2     Interpreting Level One Descriptor Bits [1:0] ............................................................3-8
3-3     Interpreting Page Table Entry Bits 1:0 ...................................................................3-11
3-4     Priority Encoding of Fault Status...........................................................................3-18
3-5     Interpreting Access Control Bits in Domain Access Control Register........................3-19
3-6     Interpreting Access Permission (AP) Bits ..............................................................3-20

4-1     Data Cache and Write Buffer Configuration.............................................................4-7

5-1     ARM920T Clocking..............................................................................................5-1
5-2     Synchronous Clocking Mode ................................................................................5-2
5-3     Switching from FCLK to BCLK in Synchronous Mode .............................................5-2
5-4     Asynchronous Clocking Mode ..............................................................................5-3
5-5     Switching from FCLK to BCLK in Asynchronous Mode............................................5-3

S3C2410A MICROPROCESSOR                             xxix
S3C2410A            PRODUCT OVERVIEW

1 PRODUCT OVERVIEW

INTRODUCTION

This manual describes SAMSUNG's S3C2410A 16/32-bit RISC microprocessor. This product is designed to provide
hand-held devices and general applications with cost-effective, low-power, and high-performance micro-controller
solution in small die size. To reduce total system cost, the S3C2410A includes the following components separate
16KB Instruction and 16KB Data Cache, MMU to handle virtual memory management, LCD Controller (STN & TFT),
NAND Flash Boot Loader, System Manager (chip select logic and SDRAM Controller), 3-ch UART, 4-ch DMA, 4-ch
Timers with PWM, I/O Ports, RTC, 8-ch 10-bit ADC and Touch Screen Interface, IIC-BUS Interface, IIS-BUS
Interface, USB Host, USB Device, SD Host & Multi-Media Card Interface, 2-ch SPI and PLL for clock generation.

The S3C2410A was developed using an ARM920T core, 0.18um CMOS standard cells and a memory complier. Its
low-power, simple, elegant and fully static design is particularly suitable for cost- and power-sensitive applications. It
adopts a new bus architecture called Advanced Microcontroller Bus Architecture (AMBA).

The S3C2410A offers outstanding features with its CPU core, a 16/32-bit ARM920T RISC processor designed by
Advanced RISC Machines, Ltd. The ARM920T implements MMU, AMBA BUS, and Harvard cache architecture with
separate 16KB instruction and 16KB data caches, each with an 8-word line length.

By providing a complete set of common system peripherals, the S3C2410A minimizes overall system costs and
eliminates the need to configure additional components. The integrated on-chip functions that are described in this
document include:

1.8V/2.0V int., 3.3V memory, 3.3V external I/O microprocessor with 16KB I-Cache/16KB D-Cache/MMU
External memory controller (SDRAM Control and Chip Select logic)
LCD controller (up to 4K color STN and 256K color TFT) with 1-ch LCD-dedicated DMA
4-ch DMAs with external request pins
3-ch UART (IrDA1.0, 16-Byte Tx FIFO, and 16-Byte Rx FIFO) / 2-ch SPI
1-ch multi-master IIC-BUS/1-ch IIS-BUS controller
SD Host interface version 1.0 & Multi-Media Card Protocol version 2.11 compatible
2-port USB Host /1- port USB Device (ver 1.1)
4-ch PWM timers & 1-ch internal timer
Watch Dog Timer
117-bit general purpose I/O ports / 24-ch external interrupt source
Power control: Normal, Slow, Idle and Power-off mode
8-ch 10-bit ADC and Touch screen interface
RTC with calendar function
On-chip clock generator with PLL

                    1-1
PRODUCT OVERVIEW                                                                                                     S3C2410A

FEATURES                                              NAND Flash Boot Loader
                                                       Supports booting from NAND flash memory
Architecture                                           4KB internal buffer for booting
Integrated system for hand-held devices and          Supports storage memory for NAND flash memory

    general embedded applications                         after booting
16/32-Bit RISC architecture and powerful
                                                      Cache Memory
    instruction set with ARM920T CPU core             64-way set-associative cache with I-Cache (16KB)
Enhanced ARM architecture MMU to support
                                                          and D-Cache (16KB)
    WinCE, EPOC 32 and Linux                           8words length per line with one valid bit and two
Instruction cache, data cache, write buffer and
                                                          dirty bits per line
    Physical address TAG RAM to reduce the effect of   Pseudo random or round robin replacement
    main memory bandwidth and latency on
    performance                                           algorithm
ARM920T CPU core supports the ARM debug             Write-through or write-back cache operation to
    architecture.
Internal Advanced Microcontroller Bus Architecture      update the main memory
    (AMBA) (AMBA2.0, AHB/APB)                         The write buffer can hold 16 words of data and four

System Manager                                            addresses.
Little/Big Endian support
Address space: 128M bytes for each bank (total      Clock & Power Manager
                                                       On-chip MPLL and UPLL:
    1G bytes)
Supports programmable 8/16/32-bit data bus width        UPLL generates the clock to operate USB
                                                          Host/Device.
    for each bank                                         MPLL generates the clock to operate MCU at
Fixed bank start address from bank 0 to bank 6          maximum 266MHz @ 2.0V.
Programmable bank start address and bank size       Clock can be fed selectively to each function block
                                                          by software.
    for bank 7                                        Power mode: Normal, Slow, Idle, and Power-off
Eight memory banks:                                     mode
                                                          Normal mode: Normal operating mode
    Six memory banks for ROM, SRAM, and others.         Slow mode: Low frequency clock without PLL
    Two memory banks for ROM/SRAM/                      Idle mode: The clock for only CPU is stopped.
                                                          Power-off mode: The Core power including all
      Synchronous DRAM                                    peripherals is shut down.
Fully Programmable access cycles for all memory      Woken up by EINT[15:0] or RTC alarm interrupt
                                                          from Power-Off mode
    banks
Supports external wait signals to expend the bus

    cycle
Supports self-refresh mode in SDRAM for power-

    down
Supports various types of ROM for booting

    (NOR/NAND Flash, EEPROM, and others)

1-2
S3C2410A                                                                                               PRODUCT OVERVIEW

FEATURES (Continued)                                    DMA Controller
                                                         4-ch DMA controller
Interrupt Controller                                     Supports memory to memory, IO to memory,
55 Interrupt sources
                                                             memory to IO, and IO to IO transfers
    (One Watch dog timer, 5 timers, 9 UARTs, 24          Burst transfer mode to enhance the transfer rate
    external interrupts, 4 DMA, 2 RTC, 2 ADC, 1 IIC, 2
    SPI, 1 SDI, 2 USB, 1 LCD, and 1 Battery Fault)      A/D Converter & Touch Screen Interface
Level/Edge mode on external interrupt source          8-ch multiplexed ADC
Programmable polarity of edge and level                Max. 500KSPS and 10-bit Resolution
Supports Fast Interrupt request (FIQ) for very
    urgent interrupt request                            LCD Controller STN LCD Displays Feature
                                                         Supports 3 types of STN LCD panels: 4-bit dual
Timer with Pulse Width Modulation (PWM)
4-ch 16-bit Timer with PWM / 1-ch 16-bit internal          scan, 4-bit single scan, 8-bit single scan display
                                                             type
    timer with DMA-based or interrupt-based operation    Supports monochrome mode, 4 gray levels, 16
Programmable duty cycle, frequency, and polarity           gray levels, 256 colors and 4096 colors for STN
Dead-zone generation                                       LCD
Supports external clock sources                        Supports multiple screen size
                                                         Typical actual screen size: 640x480, 320x240,
RTC (Real Time Clock)
Full clock feature: second, minute, hour, date,                160x160, and others
                                                         Maximum virtual screen size is 4 Mbytes.
    day, month, and year                                 Maximum virtual screen size in 256 color
32.768 KHz operation
Alarm interrupt                                            mode: 4096x1024, 2048x2048, 1024x4096,
Time tick interrupt                                        and others

General Purpose Input/Output Ports                      TFT(Thin Film Transistor) Color Displays Feature
24 external interrupt ports                            Supports 1, 2, 4 or 8 bpp (bit-per-pixel) palette
multiplexed input/output ports
                                                             color displays for color TFT
UART                                                    Supports 16 bpp non-palette true-color displays
3-channel UART with DMA-based or interrupt-
                                                             for color TFT
    based operation                                     Supports maximum 16M color TFT at 24 bpp
Supports 5-bit, 6-bit, 7-bit, or 8-bit serial data
                                                             mode
    transmit/receive (Tx/Rx)                            Supports multiple screen size
Supports external clocks for the UART operation       Typical actual screen size: 640x480, 320x240,

    (UEXTCLK)                                                  160x160, and others
Programmable baud rate                                 Maximum virtual screen size is 4Mbytes.
Supports IrDA 1.0                                     Maximum virtual screen size in 64K color mode:
Loopback mode for testing
Each channel has internal 16-byte Tx FIFO and              2048x1024, and others

    16-byte Rx FIFO.

                                                        1-3
PRODUCT OVERVIEW                                                                                                    S3C2410A

FEATURES (Continued)                                 SD Host Interface
                                                      Compatible with SD Memory Card Protocol
Watchdog Timer
16-bit Watchdog Timer                                   version 1.0
Interrupt request or system reset at time-out       Compatible with SDIO Card Protocol version 1.0
                                                      Bytes FIFO for Tx/Rx
IIC-Bus Interface                                     DMA based or Interrupt based operation
1-ch Multi-Master IIC-Bus                           Compatible with Multimedia Card Protocol version
Serial, 8-bit oriented and bi-directional data
                                                          2.11
    transfers can be made at up to 100 Kbit/s in
    Standard mode or up to 400 Kbit/s in Fast mode.  SPI Interface
                                                      Compatible with 2-ch Serial Peripheral Interface
IIS-Bus Interface
1-ch IIS-bus for audio interface with DMA-based         Protocol version 2.11
                                                      2x8 bits Shift register for Tx/Rx
    operation                                        DMA-based or interrupt-based operation
Serial, 8-/16-bit per channel data transfers
128 Bytes (64-Byte + 64-Byte) FIFO for Tx/Rx       Operating Voltage Range
Supports IIS format and MSB-justified data format   Core: 1.8V for 200MHz (S3C2410A-20)

USB Host                                                          2.0V for 266MHz (S3C2410A-26)
2-port USB Host                                     Memory & IO: 3.3V
Complies with OHCI Rev. 1.0
Compatible with USB Specification version 1.1      Operating Frequency
                                                      Up to 266MHz
USB Device
1-port USB Device                                  Package
5 Endpoints for USB Device                         272-FBGA
Compatible with USB Specification version 1.1

1-4
S3C2410A                                                                                             PRODUCT OVERVIEW

BLOCK DIAGRAM

                ARM920T                          IPA[31:0]

                     Instruction                                  Instruction    External
                         MMU                                         CACHE       Coproc
                                                                     (16KB)      Interface
                                            C13
                IV A[31:0]                                  ID[31:0]

          JTAG           ARM9TDMI                                          CP15                      AMBA
                      Processor core                        DD[31:0]                                  Bus
                (Internal Embedded ICE)                                                                I/F

                DV A[31:0]                               DVA[31:0]               Write
                                      C13                                        Buffer
                           Data
                          MMU                                 Data               WriteBack  WBPA[31:0]
                                                            CACHE                  PA Tag
                                                            (16KB)                   RAM

                                                 DPA[31:0]

                                 LCD         LCD                                   BUS CONT.
                                                                                 Arbitor/Decode
                         CONT. DMA                                  A
                                                                                 Interrupt CONT.
                                                                    H
                                                                                       Power
                                 USB Host CONT.                     B              Management

                                      ExtMaster                          B                Memory CONT.
                                                                         U             SRAM/NOR/SDRAM
                                   NAND CONT.                            S
                                NAND Flash Boot
                                                            Bridge & DMA (4Ch)
                                        Loader

          Clock Generator
               (M PLL)

                                 UART 0, 1, 2                                    I2C

                                 USB Device                         A             I2S
                                                                                 GPIO
                                                                    P

                                 SDI/MMC                            B

                                 Watchdog                           B            RTC
                                                                                 ADC
                                      Timer

                                                                    U

                                 BUS CONT.                          S

                                 Arbitor/Decode

                                 SPIS0P,I1                                          Timer/PWM
                                                                                 0 ~ 3, 4(Internal)

                                      Figure 1-1. S3C2410A Block Diagram

                                                                                                            1-5
PRODUCT OVERVIEW                                                                                                                    S3C2410A

PIN ASSIGNMENTS

     U
     T
     R
     P
     N
     M
     L
     K
     J
     H
     G
     F
     E
     D
     C
     B
     A

                1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
                                                                                                                       BOTTOM VIEW

                                 Figure 1-2. S3C2410A Pin Assignments (272-FBGA)

1-6
S3C2410A                                                                PRODUCT OVERVIEW

            Table 1-1. 272-Pin FBGA Pin Assignments Pin Number Order

   Pin    Pin Name      Pin     Pin Name     Pin                        Pin Name
Number               Number               Number

A1 DATA19            B14 ADDR0/GPA0       D10 ADDR19/GPA4

A2 DATA18            B15 nSRAS            D11 VDDi

A3 DATA16            B16 nBE1:nWBE1:DQM1  D12 ADDR10

A4 DATA15            B17 VSSi             D13 ADDR5

A5 DATA11            C1 DATA24            D14 ADDR1

A6 VDDMOP            C2 DATA23            D15 VSSMOP

A7 DATA6             C3 DATA21            D16 SCKE

A8 DATA1             C4 VDDi              D17 nGCS0

A9 ADDR21/GPA6       C5 DATA12            E1 DATA31

A10 ADDR16/GPA1      C6 DATA7             E2 DATA29

A11 ADDR13           C7 DATA4             E3 DATA28

A12 VSSMOP           C8 VDDi              E4 DATA30

A13 ADDR6            C9 ADDR25/GPA10      E5 VDDMOP

A14 ADDR2            C10 VSSMOP           E6 VSSMOP

A15 VDDMOP           C11 ADDR14           E7 DATA3

A16 nBE3:nWBE3:DQM3  C12 ADDR7            E8 ADDR26/GPA11

A17 nBE0:nWBE0:DQM0  C13 ADDR3            E9 ADDR23/GPA8

B1 DATA22            C14 nSCAS            E10 ADDR18/GPA3

B2 DATA20            C15 nBE2:nWBE2:DQM2  E11 VDDMOP

B3 DATA17            C16 nOE              E12 ADDR11

B4 VDDMOP            C17 VDDi             E13 nWE

B5 DATA13            D1 DATA27            E14 nGCS3/GPA14

B6 DATA9             D2 DATA25            E15 nGCS1/GPA12

B7 DATA5             D3 VSSMOP            E16 nGCS2/GPA13

B8 DATA0             D4 DATA26            E17 nGCS4/GPA15

B9 ADDR24/GPA9       D5 DATA14            F1 TOUT1/GPB1

B10 ADDR17/GPA2      D6 DATA10            F2 TOUT0/GPB0

B11 ADDR12           D7 DATA2             F3 VSSMOP

B12 ADDR8            D8 VDDMOP            F4 TOUT2/GPB2

B13 ADDR4            D9 ADDR22/GPA7       F5 VSSOP

                                                                                  1-7
PRODUCT OVERVIEW                                                                       S3C2410A

               Table 1-1. 272-Pin FBGA Pin Assignments Pin Number Order (Continued)

   Pin          Pin Name     Pin      Pin Name              Pin  Pin Name
Number                    Number                         Number

     F6 VSSi              H4 nXDREQ1/GPB8                K13 TXD2/nRTS1/GPH6

     F7 DATA8             H5 nTRST                       K14 RXD1/GPH5

     F8 VSSMOP            H6 TCK                         K15 TXD0/GPH2

     F9 VSSi              H12 CLE/GPA17                  K16 TXD1/GPH4

     F10 ADDR20/GPA5      H13 VSSOP                      K17 RXD0/GPH3

     F11 VSSi             H14 VDDMOP                     L1 VD0/GPC8

     F12 VSSMOP           H15 VSSi                       L2 VD1/GPC9

     F13 SCLK0            H16 XTOpll                     L3 LCDVF2/GPC7

     F14 SCLK1            H17 XTIpll                     L4 VD2/GPC10

     F15 nGCS5/GPA16      J1 TDI                         L5 VDDiarm

     F16 nGCS6:nSCS0      J2 VCLK:LCD_HCLK/GPC1          L6 LCDVF1/GPC6

     F17 nGCS7:nSCS1      J3 TMS                         L7 IICSCL/GPE14

     G1 nXBACK/GPB5       J4 LEND:STH/GPC0               L9 EINT11/nSS1/GPG3

     G2 nXDACK1/GPB7      J5 TDO                         L11 VDDi_UPLL

     G3 TOUT3/GPB3        J6 VLINE:HSYNC:CPV/GPC2        L12 nRTS0/GPH1

     G4 TCLK0/GPB4        J7 VSSiarm                     L13 UPLLCAP

     G5 nXBREQ/GPB6       J11 EXTCLK                     L14 nCTS0/GPH0

     G6 VDDalive          J12 nRESET                     L15 EINT6/GPF6

     G7 VDDiarm           J13 VDDi                       L16 UEXTCLK/GPH8

     G9 VSSMOP            J14 VDDalive                   L17 EINT7/GPF7

     G11 ADDR15           J15 PWREN                      M1 VSSiarm

     G12 ADDR9            J16 nRSTOUT/GPA21              M2 VD5/GPC13

     G13 nWAIT            J17 nBATT_FLT                  M3 VD3/GPC11

     G14 ALE/GPA18        K1 VDDOP                       M4 VD4/GPC12

     G15 nFWE/GPA19       K2 VM:VDEN:TP/GPC4             M5 VSSiarm

     G16 nFRE/GPA20       K3 VDDiarm                     M6 VDDOP

     G17 nFCE/GPA22       K4      VFRAME:VSYNC:STV/GPC3  M7 VDDiarm

     H1 VSSiarm           K5 VSSOP                       M8 IICSDA/GPE15

     H2 nXDACK0/GPB9      K6 LCDVF0/GPC5                 M9 VSSiarm

     H3 nXDREQ0/GPB10     K12 RXD2/nCTS1/GPH7            M10 DP1/PDP0

1-8
S3C2410A                                                         PRODUCT OVERVIEW

          Table 1-1. 272-Pin FBGA Pin Assignments Pin Number Order (Continued)

   Pin    Pin Name         Pin      Pin Name              Pin    Pin Name
Number                  Number                         Number

M11 EINT23/nYPON/GPG15  P8 SPICLK0/GPE13               T5 I2SLRCK/GPE0

M12 RTCVDD              P9      EINT12/LCD_PWREN/GPG4  T6 SDCLK/GPE5

M13 VSSi_MPLL           P10 EINT18/GPG10               T7 SPIMISO0/GPE11

M14 EINT5/GPF5          P11 EINT20/XMON/GPG12          T8 EINT10/nSS0/GPG2

M15 EINT4/GPF4          P12 VSSOP                      T9 VSSOP

M16 EINT2/GPF2          P13 DP0                        T10 EINT17/GPG9

M17 EINT3/GPF3          P14 VDDi_MPLL                  T11 EINT22/YMON/GPG14

N1 VD6/GPC14            P15 VDDA_ADC                   T12 DN0

N2 VD8/GPD0             P16 XTIrtc                     T13 OM3

N3 VD7/GPC15            P17 MPLLCAP                    T14 VSSA_ADC

N4 VD9/GPD1             R1 VDDiarm                     T15 AIN1

N5 VDDiarm              R2 VD14/GPD6                   T16 AIN3

N6 CDCLK/GPE2           R3 VD17/GPD9                   T17 AIN5

N7 SDDAT1/GPE8          R4 VD18/GPD10                  U1 VD15/GPD7

N8 VSSiarm              R5 VSSOP                       U2 VD19/GPD11

N9 VDDOP                R6 SDDAT0/GPE7                 U3 VD21/GPD13

N10 VDDiarm             R7 SDDAT3/GPE10                U4 VSSiarm

N11 DN1/PDN0            R8 EINT8/GPG0                  U5 I2SSDI/nSS0/GPE3

N12 Vref                R9 EINT14/SPIMOSI1/GPG6        U6 I2SSDO/I2SSDI/GPE4

N13 AIN7                R10 EINT15/SPICLK1/GPG7        U7 SPIMOSI0/GPE12

N14 EINT0/GPF0          R11 EINT19/TCLK1/GPG11         U8 EINT9/GPG1

N15 VSSi_UPLL           R12 CLKOUT0/GPH9               U9 EINT13/SPIMISO1/GPG5

N16 VDDOP               R13 R/nB                       U10 EINT16/GPG8

N17 EINT1/GPF1          R14 OM0                        U11 EINT21/nXPON/GPG13

P1 VD10/GPD2            R15 AIN4                       U12 CLKOUT1/GPH10

P2 VD12/GPD4            R16 AIN6                       U13 NCON

P3 VD11/GPD3            R17 XTOrtc                     U14 OM2

P4 VD23/nSS0/GPD15      T1 VD13/GPD5                   U15 OM1

P5 I2SSCLK/GPE1         T2 VD16/GPD8                   U16 AIN0

P6 SDCMD/GPE6           T3 VD20/GPD12                  U17 AIN2

P7 SDDAT2/GPE9          T4 VD22/nSS1/GPD14                                       

                                                                                     1-9
PRODUCT OVERVIEW                                                            S3C2410A

                        Table 1-2. 272-Pin FBGA Pin Assignments

   Pin             Pin   Default   I/O State   I/O State         I/O State  I/O Type
Number            Name  Function  @BUS REQ    @PWR-off           @nRESET
                        DATA21                                                 t12
C3 DATA21               DATA22         Hi-z       Hi-z                 I       t12
                        DATA23         Hi-z       Hi-z                 I       t12
B1 DATA22               VSSMOP         Hi-z       Hi-z                 I       s3o
                        VDDMOP                                         P       d3o
C2 DATA23               DATA24           P          P                  P       t12
                        DATA25           P          P                  I       t12
D3 VSSMOP               DATA26         Hi-z       Hi-z                 I       t12
                        DATA27         Hi-z       Hi-z                 I       t12
E5 VDDMOP               DATA28         Hi-z       Hi-z                 I       t12
                        DATA29         Hi-z       Hi-z                 I       t12
C1 DATA24               DATA30         Hi-z       Hi-z                 I       t12
                        DATA31         Hi-z       Hi-z                 I       t12
D2 DATA25               VSSMOP         Hi-z       Hi-z                 I       s3o
                         VSSOP         Hi-z       Hi-z                 P       s3o
D4 DATA26                                P          P                  P        t8
                          GPB0           P          P                  I        t8
D1 DATA27                 GPB1          /      O(L)/                I        t8
                          GPB2          /      O(L)/                I        t8
E3 DATA28                 GPB3          /      O(L)/                I        t8
                          GPB4          /      O(L)/                I        t8
E2 DATA29                 GPB5          /        /                 I        t8
                          GPB6          /        /                 I        t8
E4 DATA30                 GPB7          /        /                 I        d1i
                        VDDalive        /        /                 P       d1c
E1 DATA31               VDDiarm          P          P                  P        s3i
                        VSSiarm          P          P                  P        t8
      F3 VSSMOP           GPB8           P          P                  I        t8
                          GPB9          /        /                 I        t8
      F5 VSSOP           GPB10          /        /                 I        is
                          nTRST         /        /                 I        is
      F2 TOUT0/GPB0        TCK           I           I                 I        is
                                         I           I                 I        is
      F1 TOUT1/GPB1         TDI          I           I                 I
                           TMS           I           I
      F4 TOUT2/GPB2

G3 TOUT3/GPB3

G4 TCLK0/GPB4

G1 nXBACK/GPB5

G5 nXBREQ/GPB6

G2 nXDACK1/GPB7

G6 VDDalive

G7 VDDiarm

H1 VSSiarm

H4 nXDREQ1/GPB8

H2 nXDACK0/GPB9

H3 nXDREQ0/GPB10

H5 nTRST

H6 TCK

      J1 TDI

      J3 TMS

1-10
S3C2410A                                                             PRODUCT OVERVIEW

                Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin       Pin           Default   I/O State   I/O State           I/O State  I/O Type
Number      Name          Function  @BUS REQ    @PWR-off             @nRESET
                                                                                    ot
J5 TDO                       TDO          O           O                    O        t8
                            GPC0          /      O(L)/                  I        t8
J4 LEND:STH/GPC0            GPC1          /      O(L)/                  I        t8
                            GPC2          /      O(L)/                  I       d1c
J2 VCLK:LCD_HCLK/GPC1     VDDiarm          P                               P        s3i
                          VSSiarm          P          P                    P        t8
J6 VLINE:HSYNC:CPV/GPC2     GPC4          /         P                    I        t8
                            GPC3          /      O(L)/                  I       d3o
K3 VDDiarm                VDDOP            P       O(L)/                  P       s3o
                          VSSOP            P          P                    P        t8
J7 VSSiarm                  GPC5          /         P                    I        t8
                            GPC6          /      O(L)/                  I        t8
K2 VM:VDEN:TP/GPC4          GPC7          /      O(L)/                  I        t8
                            GPC8          /      O(L)/                  I        t8
K4 VFRAME:VSYNC:STV/GPC3    GPC9          /      O(L)/                  I        t8
                           GPC10          /      O(L)/                  I        t8
K1 VDDOP                   GPC11          /      O(L)/                  I       d1c
                          VDDiarm          P       O(L)/                  P        s3i
K5 VSSOP                  VSSiarm          P          P                    P        t8
                           GPC12          /         P                    I        t8
K6 LCDVF0/GPC5             GPC13          /      O(L)/                  I        t8
                           GPC14          /      O(L)/                  I        t8
L6 LCDVF1/GPC6             GPC15          /      O(L)/                  I        t8
                            GPD0          /      O(L)/                  I        t8
L3 LCDVF2/GPC7              GPD1          /      O(L)/                  I        t8
                            GPD2          /      O(L)/                  I        t8
L1 VD0/GPC8                 GPD3          /      O(L)/                  I        t8
                            GPD4          /      O(L)/                  I       d1c
L2 VD1/GPC9               VDDiarm          P       O(L)/                  P        s3i
                          VSSiarm          P          P                    P        t8
L4 VD2/GPC10                GPD5          /         P                    I        t8
                            GPD6          /      O(L)/                  I        t8
M3 VD3/GPC11                GPD7          /      O(L)/                  I
                                                   O(L)/
L5 VDDiarm

M1 VSSiarm

M4 VD4/GPC12

M2 VD5/GPC13

N1 VD6/GPC14

N3 VD7/GPC15

N2 VD8/GPD0

N4 VD9/GPD1

P1 VD10/GPD2

P3 VD11/GPD3

P2 VD12/GPD4

R1 VDDiarm

M5 VSSiarm

T1 VD13/GPD5

R2 VD14/GPD6

U1 VD15/GPD7

                                                                                1-11
PRODUCT OVERVIEW                                                                       S3C2410A

                       Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin             Pin      Default   I/O State   I/O State                 I/O State  I/O Type
Number            Name     Function  @BUS REQ    @PWR-off                   @nRESET
                                                                                           t8
      T2 VD16/GPD8           GPD8          /      O(L)/                        I        t8
                             GPD9          /      O(L)/                        I        t8
R3 VD17/GPD9                GPD10          /      O(L)/                        I        t8
                            GPD11          /      O(L)/                        I        t8
R4 VD18/GPD10               GPD12          /      O(L)/                        I        t8
                            GPD13          /      O(L)/                        I        t8
U2 VD19/GPD11               GPD14          /      O(L)/                        I        t8
                            GPD15          /      O(L)/                        I       d1c
      T3 VD20/GPD12        VDDiarm          P                                     P        s3i
                           VSSiarm          P          P                          P       d3o
U3 VD21/GPD13              VDDOP            P          P                          P       s3o
                           VSSOP            P          P                          P        t8
      T4 VD22/nSS1/GPD14     GPE0          /         P                          I        t8
                             GPE1          /      O(L)/                        I        t8
P4 VD23/nSS0/GPD15           GPE2          /      O(L)/                        I        t8
                             GPE3        //      O(L)/                        I        t8
N5 VDDiarm                   GPE4        //       //                        I        t8
                             GPE5          /     O(L)//                       I        t8
U4 VSSiarm                   GPE6          /      O(L)/                        I        t8
                             GPE7          /      Hi-z/                        I        t8
M6 VDDOP                     GPE8          /      Hi-z/                        I        t8
                             GPE9          /      Hi-z/                        I        t8
R5 VSSOP                    GPE10          /      Hi-z/                        I        t8
                            GPE11          /      Hi-z/                        I        t8
      T5 I2SLRCK/GPE0       GPE12          /      Hi-z/                        I        t8
                            GPE13          /      Hi-z/                        I       d1c
P5 I2SSCLK/GPE1            VDDiarm          P       Hi-z/                        P        s3i
                           VSSiarm          P          P                          P        d8
N6 CDCLK/GPE2               GPE14          /         P                          I        d8
                            GPE15          /      Hi-z/                        I        t8
U5 I2SSDI/nSS0/GPE3          GPG0          /      Hi-z/                        I        t8
                             GPG1          /        /                         I        t8
U6 I2SSDO/I2SSDI/GPE4        GPG2        //        /                         I
                                                     //
      T6 SDCLK/GPE5

P6 SDCMD/GPE6

R6 SDDAT0/GPE7

N7 SDDAT1/GPE8

P7 SDDAT2/GPE9

R7 SDDAT3/GPE10

      T7 SPIMISO0/GPE11

U7 SPIMOSI0/GPE12

P8 SPICLK0/GPE13

M7 VDDiarm

N8 VSSiarm

      L7 IICSCL/GPE14

M8 IICSDA/GPE15

R8 EINT8/GPG0

U8 EINT9/GPG1

      T8 EINT10/nSS0/GPG2

1-12
S3C2410A                                                               PRODUCT OVERVIEW

                  Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin         Pin          Default   I/O State   I/O State            I/O State  I/O Type
Number        Name        Function   @BUS REQ    @PWR-off              @nRESET
                                                                                      t8
L9 EINT11/nSS1/GPG3          GPG3        //       //                   I        t8
                             GPG4        //     /O(L)/                  I        t8
P9 EINT12/LCD_PWREN/GPG4     GPG5        //     /Hi-z/                  I        t8
                             GPG6        //     /Hi-z/                  I       s3o
U9 EINT13/SPIMISO1/GPG5    VSSOP                                             P       d3o
                           VDDOP            P          P                     P       d1c
R9 EINT14/SPIMOSI1/GPG6    VDDiarm          P          P                     P        s3i
                           VSSiarm          P          P                     P        t8
T9 VSSOP                     GPG7           P          P                     I        t6
                             GPG8        //     /Hi-z/                  I        t6
N9 VDDOP                     GPG9          /        /                    I        t6
                            GPG10          /        /                    I       t12
N10 VDDiarm                 GPG11          /        /                    I       t12
                            GPG12        //       //                   I       t12
M9 VSSiarm                  GPG13        //     /O(L)/                  I       t12
                            GPG14        //     /O(L)/                  I       t12
R10 EINT15/SPICLK1/GPG7     GPG15        //     /O(L)/                  I       t12
                             GPH9        //     /O(L)/                  I       t12
U10 EINT16/GPG8             GPH10          /      O(L)/                   I        us
                              DP1          /      O(L)/                  AI        us
T10 EINT17/GPG9               DN1                                         AI        us
                              DP0                                         AI        us
P10 EINT18/GPG10              DN0                                         AI        is
                             NCON                                          I        is
R11 EINT19/TCLK1/GPG11       R/nB                                          I        is
                             OM3                                           I        is
P11 EINT20/XMON/GPG12        OM2                                           I        is
                             OM1                                           I        is
U11 EINT21/nXPON/GPG13       OM0                                           I       s3o
                           VSSOP                                           P       s3t
T11 EINT22/YMON/GPG14     VSSA_ADC          P          P                     P        ia
                                            P          P                    AI       r10
M11 EINT23/nYPON/GPG15        Vref                                        AI
                             AIN0                    
R12 CLKOUT0/GPH9

U12 CLKOUT1/GPH10

M10 DP1/PDP0

N11 DN1/PDN0

P13 DP0

T12 DN0

U13 NCON

R13 R/nB

T13 OM3

U14 OM2

U15 OM1

R14 OM0

P12 VSSOP

T14 VSSA_ADC

N12 Vref

U16 AIN0

                                                                                  1-13
PRODUCT OVERVIEW                                                                  S3C2410A

                  Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin             Pin    Default   I/O State   I/O State              I/O State  I/O Type
Number            Name   Function  @BUS REQ    @PWR-off                @nRESET
                                                                                     r10
T15 AIN1                    AIN1                                          AI       r10
                            AIN2                                          AI       r10
U17 AIN2                    AIN3                                          AI       r10
                            AIN4                                          AI       r10
T16 AIN3                    AIN5                                          AI       r10
                            AIN6                                          AI       r10
R15 AIN4                    AIN7                                          AI       d3t
                        VDDA_ADC          P          P                       P        gp
T17 AIN5                   XTOrtc                                         AO        gp
                           XTIrtc                                         AI        d1i
R16 AIN6                 RTCVDD           P          P                       P       d1c
                        VDDi_MPLL         P          P                       P        s3i
N13 AIN7                VSSi_MPLL         P          P                       P        gp
                        MPLLCAP                                           AI       d1c
P15 VDDA_ADC            VDDi_UPLL         P          P                       P        s3i
                        VSSi_UPLL         P          P                       P        gp
R17 XTOrtc              UPLLCAP                                           AI       d3o
                          VDDOP           P          P                       P        t8
P16 XTIrtc                 GPF0          /        /                      I        t8
                           GPF1          /        /                      I        t8
M12 RTCVDD                 GPF2          /        /                      I        t8
                           GPF3          /        /                      I        t8
P14 VDDi_MPLL              GPF4          /        /                      I        t8
                           GPF5          /        /                      I        t8
M13 VSSi_MPLL              GPF6          /        /                      I        t8
                           GPF7          /        /                      I        t8
P17 MPLLCAP                GPH8          /        /                      I        t8
                           GPH0          /        /                      I        t8
L11 VDDi_UPLL              GPH1          /      O(H)/                     I        t8
                           GPH2          /      O(H)/                     I        t8
N15 VSSi_UPLL              GPH3          /        /                      I        t8
                           GPH4          /      O(H)/                     I        t8
L13 UPLLCAP                GPH5          /        /                      I

N16 VDDOP

N14 EINT0/GPF0

N17 EINT1/GPF1

M16 EINT2/GPF2

M17 EINT3/GPF3

M15 EINT4/GPF4

M14 EINT5/GPF5

L15 EINT6/GPF6

L17 EINT7/GPF7

L16 UEXTCLK/GPH8

L14 nCTS0/GPH0

L12 nRTS0/GPH1

K15 TXD0/GPH2

K17 RXD0/GPH3

K16 TXD1/GPH4

K14 RXD1/GPH5

1-14
S3C2410A                                                              PRODUCT OVERVIEW

                 Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin         Pin     Default   I/O State   I/O State                I/O State  I/O Type
Number        Name    Function  @BUS REQ    @PWR-off                  @nRESET
                                                                                     t8
K13 TXD2/nRTS1/GPH6     GPH6          /      O(H)/                       I        t8
                        GPH7          /        /                        I        is
K12 RXD2/nCTS1/GPH7  nBATT_FLT                                            I        b8
                     nRSTOUT          /                                 O(L)       b8
J17 nBATT_FLT         PWREN          O(H)      O(L)/                     O(H)       is
                      nRESET                   O(L)                        I        d1i
J16 nRSTOUT/GPA21     VDDalive         P                                    P        is
                      EXTCLK                                             AI       d1c
J15 PWREN               VDDi           P          P                         P       m26
                        XTIpll                                           AI       m26
J12 nRESET              XTOpll                   P                        AO        s3i
                        VSSi           P                                   P       s3o
J14 VDDalive           VSSOP           P                                   P       d3o
                     VDDMOP            P          P                         P        b8
J11 EXTCLK              nFCE       O(H)/         P                       O(H)       b8
                        nFRE       O(H)/         P                       O(H)       b8
J13 VDDi                nFWE       O(H)/      O(H)/                     O(H)       b8
                         ALE       O(L)/      O(H)/                     O(L)       b8
H17 XTIpll               CLE       O(L)/      O(H)/                     O(L)       is
                        nWAIT                 O(L)/                       I        ot
H16 XTOpll             nGCS7         Hi-z      O(L)/                     O(H)       ot
                       nGCS6         Hi-z                                O(H)       ot
H15 VSSi               nGCS5         Hi-z       O(H)                      O(H)       ot
                       nGCS4         Hi-z       O(H)                      O(H)       ot
H13 VSSOP              nGCS3         Hi-z      O(H)/                     O(H)       ot
                       nGCS2         Hi-z      O(H)/                     O(H)       ot
H14 VDDMOP             nGCS1         Hi-z      O(H)/                     O(H)       ot
                       nGCS0         Hi-z      O(H)/                     O(H)       ot
G17 nFCE/GPA22          SCKE         Hi-z      O(H)/                     O(H)      s3o
                     VSSMOP            P        O(H)                        P       t16
G16 nFRE/GPA20         SCLK1         Hi-z       O(L)                   O(SCLK)      d1c
                        VDDi           P          P                         P       t16
G15 nFWE/GPA19         SCLK0         Hi-z       O(L)                   O(SCLK)
                                                  P
G14 ALE/GPA18                                   O(L)

H12 CLE/GPA17

G13 nWAIT

F17 nGCS7:nSCS1

F16 nGCS6:nSCS0

F15 nGCS5/GPA16

E17 nGCS4/GPA15

E14 nGCS3/GPA14

E16 nGCS2/GPA13

E15 nGCS1/GPA12

D17 nGCS0

D16 SCKE

D15 VSSMOP

F14 SCLK1

C17 VDDi

F13 SCLK0

                                                                                 1-15
PRODUCT OVERVIEW                                                                  S3C2410A

                  Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin             Pin   Default   I/O State   I/O State               I/O State  I/O Type
Number            Name  Function  @BUS REQ    @PWR-off                 @nRESET
                                                                                      s3i
B17 VSSi                   VSSi          P          P                        P        ot
                           nWE         Hi-z       O(H)                     O(H)       ot
E13 nWE                    nOE         Hi-z       O(H)                     O(H)       ot
                          DQM0         Hi-z       O(H)                     O(H)       ot
C16 nOE                   DQM1         Hi-z       O(H)                     O(H)       ot
                          DQM2         Hi-z       O(H)                     O(H)       ot
A17 nBE0:nWBE0:DQM0       DQM3         Hi-z       O(H)                     O(H)       ot
                         nSRAS         Hi-z       O(H)                     O(H)       ot
B16 nBE1:nWBE1:DQM1      nSCAS         Hi-z       O(H)                     O(H)      d3o
                        VDDMOP                                                       s3o
C15 nBE2:nWBE2:DQM2     VSSMOP           P          P                        P        ot
                         ADDR0           P          P                        P        ot
A16 nBE3:nWBE3:DQM3      ADDR1        Hi-z/     O(L)/                    O(L)       ot
                         ADDR2         Hi-z       O(L)                     O(L)       ot
B15 nSRAS                ADDR3         Hi-z       O(L)                     O(L)       ot
                         ADDR4         Hi-z       O(L)                     O(L)       ot
C14 nSCAS                ADDR5         Hi-z       O(L)                     O(L)       ot
                         ADDR6         Hi-z       O(L)                     O(L)       ot
A15 VDDMOP               ADDR7         Hi-z       O(L)                     O(L)       ot
                         ADDR8         Hi-z       O(L)                     O(L)       ot
F12 VSSMOP               ADDR9         Hi-z       O(L)                     O(L)      s3o
                        VSSMOP         Hi-z       O(L)                     O(L)      d3o
B14 ADDR0/GPA0          VDDMOP           P          P                        P        ot
                        ADDR10           P          P                        P        ot
D14 ADDR1               ADDR11         Hi-z       O(L)                     O(L)      d1c
                           VDDi        Hi-z       O(L)                     O(L)       s3i
A14 ADDR2                  VSSi          P          P                        P        ot
                        ADDR12           P          P                        P        ot
C13 ADDR3               ADDR13         Hi-z       O(L)                     O(L)       ot
                        ADDR14         Hi-z       O(L)                     O(L)       ot
B13 ADDR4               ADDR15         Hi-z       O(L)                     O(L)       ot
                        ADDR16         Hi-z       O(L)                     O(L)       ot
D13 ADDR5               ADDR17         Hi-z      O(L)/                    O(L)
                                       Hi-z      O(L)/                    O(L)
A13 ADDR6

C12 ADDR7

B12 ADDR8

G12 ADDR9

A12 VSSMOP

E11 VDDMOP

D12 ADDR10

E12 ADDR11

D11 VDDi

F11 VSSi

B11 ADDR12

A11 ADDR13

C11 ADDR14

G11 ADDR15

A10 ADDR16/GPA1

B10 ADDR17/GPA2

1-16
S3C2410A                                                              PRODUCT OVERVIEW

                 Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin       Pin   Default   I/O State   I/O State                    I/O State  I/O Type
Number      Name  Function  @BUS REQ    @PWR-off                      @nRESET
                  VSSMOP                                                            s3o
C10 VSSMOP        ADDR18           P          P                             P        ot
                  ADDR19        Hi-z/      O(L)                          O(L)       ot
E10 ADDR18/GPA3   ADDR20        Hi-z/      O(L)                          O(L)       ot
                  ADDR21        Hi-z/      O(L)                          O(L)       ot
D10 ADDR19/GPA4   ADDR22        Hi-z/      O(L)                          O(L)       ot
                  ADDR23        Hi-z/      O(L)                          O(L)       ot
F10 ADDR20/GPA5   ADDR24        Hi-z/      O(L)                          O(L)       ot
                  ADDR25        Hi-z/      O(L)                          O(L)       ot
A9 ADDR21/GPA6    ADDR26        Hi-z/      O(L)                          O(L)       ot
                                Hi-z/      O(L)                          O(L)      d1c
D9 ADDR22/GPA7       VDDi                                                            s3i
                     VSSi          P          P                             P       d3o
E9 ADDR23/GPA8    VDDMOP           P          P                             P       s3o
                  VSSMOP           P          P                             P       t12
B9 ADDR24/GPA9     DATA0           P          P                             P       t12
                   DATA1         Hi-z       Hi-z                          Hi-z      t12
C9 ADDR25/GPA10    DATA2         Hi-z       Hi-z                          Hi-z      t12
                   DATA3         Hi-z       Hi-z                          Hi-z      t12
E8 ADDR26/GPA11    DATA4         Hi-z       Hi-z                          Hi-z      t12
                   DATA5         Hi-z       Hi-z                          Hi-z      t12
C8 VDDi            DATA6         Hi-z       Hi-z                          Hi-z      t12
                   DATA7         Hi-z       Hi-z                          Hi-z      d3o
F9 VSSi           VDDMOP         Hi-z       Hi-z                          Hi-z      s3o
                  VSSMOP           P          P                             P       t12
D8 VDDMOP          DATA8           P          P                             P       t12
                   DATA9         Hi-z       Hi-z                          Hi-z      t12
G9 VSSMOP         DATA10         Hi-z       Hi-z                          Hi-z      t12
                  DATA11         Hi-z       Hi-z                          Hi-z      t12
B8 DATA0          DATA12         Hi-z       Hi-z                          Hi-z      t12
                  DATA13         Hi-z       Hi-z                          Hi-z      t12
A8 DATA1          DATA14         Hi-z       Hi-z                          Hi-z      t12
                  DATA15         Hi-z       Hi-z                          Hi-z      d3o
D7 DATA2          VDDMOP         Hi-z       Hi-z                          Hi-z
                                   P          P                             P
E7 DATA3

C7 DATA4

B7 DATA5

A7 DATA6

C6 DATA7

A6 VDDMOP

F8 VSSMOP

F7 DATA8

B6 DATA9

D6 DATA10

A5 DATA11

C5 DATA12

B5 DATA13

D5 DATA14

A4 DATA15

B4 VDDMOP

                                                                                 1-17
PRODUCT OVERVIEW                                                                                     S3C2410A

                  Table 1-2. 272-Pin FBGA Pin Assignments (Continued)

   Pin             Pin       Default   I/O State   I/O State           I/O State                     I/O Type
Number            Name      Function  @BUS REQ    @PWR-off             @nRESET
                            VSSMOP                                                                      s3o
E6 VSSMOP                                    P          P                    P                          d1c
                               VDDi          P          P                    P                           s3i
C4 VDDi                        VSSi          P          P                    P                          t12
                            DATA16         Hi-z       Hi-z                 Hi-z                         t12
      F6 VSSi               DATA17         Hi-z       Hi-z                 Hi-z                         t12
                            DATA18         Hi-z       Hi-z                 Hi-z                         t12
A3 DATA16                   DATA19         Hi-z       Hi-z                 Hi-z                         t12
                            DATA20         Hi-z       Hi-z                 Hi-z
B3 DATA17

A2 DATA18

A1 DATA19

B2 DATA20

NOTES:
1. The @BUS REQ. shows the pin states at the external bus, which is used by the other bus master.
2. ' ` mark indicates the unchanged pin state at Bus Request mode.
3. Hi-z or Pre means Hi-z or Previous state and it is determined by the setting of MISCCR register.
4. AI/AO means analog input/analog output.
5. P, I, and O mean power, input and output respectively.
6. The I/O state @nRESET shows the pin status in the @nRESET duration below.

                            4FCLK     @nRESET

                  nRESET
                      FCLK

1-18
S3C2410A                                                  PRODUCT OVERVIEW

7. The table below shows I/O types and the descriptions.

               I/O Type                                                     Descriptions
d1i(vdd1ih), s3i(vss3i)         1.8V / 2.0V VDD/VSS for internal logic
d1c(vdd1ih_core), s3i(vss3i)    1.8V / 2.0V VDD/VSS for internal logic without input driver
d3o(vdd3op), s3o(vss3op)        3.3V VDD/VSS for external logic
d3t(vdd3t_abb), s3t(vss3t_abb)  3.3V VDD/VSS for analog circuitry
is(phis)                        Input pad, LVCMOS schmitt-trigger level
us(pbusb)                       USB pad
ot(phot8)                       Output pad, tri-state, Io = 8mA
b8(phob8)                       Output pad, Io = 8mA
t16(phot16sm)                   Output pad, tri-state, medium slew rate, Io = 16mA
r10(phiar10_abb)                Analog input pad with 10 resistor
ia(phia_abb)                    Analog input pad
gp(phgpad_option)               Pad for analog pin
m26(phsoscm26)                  Oscillator cell with enable and feedback resistor
t6(phtbsu100ct6sm)              Bi-directional pad, 5V tolerant LVCMOS schmitt-trigger, 100Kohm pull-up
                                resistor with control, tri-state, Io = 6mA
t8(phbsu100ct8sm)               Bi-directional pad, LVCMOS schmitt-trigger, 100Kohm pull-up resistor with
                                control, tri-state, Io = 8mA
t12(phbsu100ct12sm)             Bi-directional pad, LVCMOS schmitt-trigger, 100Kohm pull-up resistor with
                                control, tri-state, Io = 12mA
d8(phbsu100cd8sm)               Bi-directional pad, LVCMOS schmitt-trigger, 100Kohm pull-up resistor with
                                control, open-drain, Io = 8mA

                                                                                                           1-19
PRODUCT OVERVIEW                                                                               S3C2410A

SIGNAL DESCRIPTIONS

                       Table 1-3. S3C2410A Signal Descriptions

      Signal      I/O                          Descriptions
Bus Controller
OM [1:0]          I OM [1:0] sets S3C2410A in the TEST mode, which is used only at fabrication. Also, it
                         determines the bus width of nGCS0. The pull-up/down resistor determines the logic
ADDR [26:0]              level during the RESET cycle.
DATA [31:0]
                       00:Nand-boot 01:16-bit  10:32-bit  11:Test mode
nGCS [7:0]
                  O ADDR [26:0] (Address Bus) outputs the memory address of the corresponding bank.
nWE
nOE               IO DATA [31:0] (Data Bus) inputs data during memory read and outputs data during
nXBREQ                    memory write. The bus width is programmable among 8/16/32-bit.

nXBACK            O nGCS [7:0] (General Chip Select) are activated when the address of a memory is
                          within the address region of each bank. The number of access cycles and the bank
nWAIT                     size can be programmed.

SDRAM/SRAM        O nWE (Write Enable) indicates that the current bus cycle is a write cycle.
nSRAS
nSCAS             O nOE (Output Enable) indicates that the current bus cycle is a read cycle.
nSCS [1:0]
DQM [3:0]         I nXBREQ (Bus Hold Request) allows another bus master to request control of the local
SCLK [1:0]               bus. BACK active indicates that bus control has been granted.
SCKE
nBE [3:0]         O nXBACK (Bus Hold Acknowledge) indicates that the S3C2410A has surrendered
nWBE [3:0]                control of the local bus to another bus master.

                  I nWAIT requests to prolong a current bus cycle. As long as nWAIT is L, the current
                         bus cycle cannot be completed.

                       If nWAIT signal isn't used in your system, nWAIT signal must be tied on pull-up
                       resistor.

                  O SDRAM Row Address Strobe
                  O SDRAM Column Address Strobe
                  O SDRAM Chip Select
                  O SDRAM Data Mask
                  O SDRAM Clock
                  O SDRAM Clock Enable
                  O Upper Byte/Lower Byte Enable (In case of 16-bit SRAM)
                  O Write Byte Enable

1-20
S3C2410A                PRODUCT OVERVIEW

      Signal      I/O    Table 1-3. S3C2410A Signal Descriptions (Continued)
                                                                         Descriptions
NAND Flash
                        Command Latch Enable
CLE               O     Address Latch Enable
                        NAND Flash Chip Enable
ALE               O     NAND Flash Read Enable
                        NAND Flash Write Enable
nFCE              O     NAND Flash Configuration.
                        If NAND Flash Controller isn't used, it has to be tied on pull-up resistor.
nFRE              O     NAND Flash Ready/Busy.
                        If NAND Flash Controller isn't used, it has to be tied on pull-up resistor.
nFWE              O
                        STN/TFT/SEC TFT: LCD Data Bus
NCON              I     STN/TFT/SEC TFT: LCD panel power enable control signal
                        STN/TFT: LCD clock signal
R/nB              I     STN: LCD Frame signal
                        STN: LCD line signal
LCD Control Unit        STN: VM alternates the polarity of the row and column voltage
                        TFT: Vertical synchronous signal
VD [23:0]         O     TFT: Horizontal synchronous signal
                        TFT: Data enable signal
LCD_PWREN         O     TFT: Line End signal
                        SEC TFT: SEC (Samsung Electronics Company) TFT LCD panel control signal
VCLK              O     SEC TFT: SEC (Samsung Electronics Company) TFT LCD panel control signal
                        SEC TFT: SEC (Samsung Electronics Company) TFT LCD panel control signal
VFRAME            O     SEC TFT: SEC (Samsung Electronics Company) TFT LCD panel control signal
                        SEC TFT: SEC (Samsung Electronics Company) TFT LCD panel control signal
VLINE             O     SEC TFT: Timing control signal for specific TFT LCD (OE/REV/REVB)

VM                O     External Interrupt request

VSYNC             O     External DMA request
                        External DMA acknowledge
HSYNC             O

VDEN              O

LEND              O

STV               O

CPV               O

LCD_HCLK          O

TP                O

STH               O

LCDVF [2:0]       O

Interrupt Control Unit

EINT [23:0]       I

DMA

nXDREQ [1:0]      I

nXDACK [1:0]      O

                                                                                                     1-21
PRODUCT OVERVIEW                                                                                  S3C2410A

                       Table 1-3. S3C2410A Signal Descriptions (Continued)

      Signal      I/O                                   Descriptions
UART
RxD [2:0]         I UART receives data input
TxD [2:0]         O UART transmits data output
nCTS [1:0]        I UART clear to send input signal
nRTS [1:0]        O UART request to send output signal
UEXTCLK           I UART clock signal
ADC
AIN [7:0]         AI ADC input [7:0]. If it isn't used pin, it has to be in Ground.
Vref              AI ADC Vref
IIC-Bus
IICSDA            IO IIC-bus data
IICSCL            IO IIC-bus clock
IIS-Bus
I2SLRCK           IO IIS-bus channel select clock
I2SSDO            O IIS-bus serial data output
I2SSDI             I IIS-bus serial data input
I2SSCLK           IO IIS-bus serial clock
CDCLK             O CODEC system clock
Touch Screen
nXPON             O Plus X-axis on-off control signal
XMON              O Minus X-axis on-off control signal
nYPON             O Plus Y-axis on-off control signal
YMON              O Minus Y-axis on-off control signal
USB Host
DN [1:0]          IO DATA () from USB host. (15Kohm pull-down)
DP [1:0]          IO DATA (+) from USB host. (15Kohm pull-down)
USB Device
PDN0              IO DATA () for USB peripheral. (470Kohm pull-down)
PDP0              IO DATA (+) for USB peripheral. (1.5Kohm pull-up)
SPI
SPIMISO [1:0]     IO SPIMISO is the master data input line, when SPI is configured as a master.
                          When SPI is configured as a slave, these pins reverse its role.
SPIMOSI [1:0]
                  IO SPIMOSI is the master data output line, when SPI is configured as a master.
SPICLK [1:0]              When SPI is configured as a slave, these pins reverse its role.
nSS [1:0]
                  IO SPI clock

                   I SPI chip select (only for slave mode)

1-22
S3C2410A              PRODUCT OVERVIEW

     Signal      I/O   Table 1-3. S3C2410A Signal Descriptions (Continued)

SD                                                                      Description

SDDAT [3:0]      IO   SD receive/transmit data
                      SD receive response/ transmit command
SDCMD            IO   SD clock

SDCLK            O    General input/output ports (some ports are output only)

General Port          Timer Output [3:0]
                      External timer clock input
GPn [116:0]      IO
                      nTRST (TAP Controller Reset) resets the TAP controller at start.
TIMMER/PWM            If debugger is used, A 10K pull-up resistor has to be connected.
                      If debugger (black ICE) is not used, nTRST pin must be issued by a low active pulse
TOUT [3:0]       O    (Typically connected to nRESET).
                      TMS (TAP Controller Mode Select) controls the sequence of the TAP controller's
TCLK [1:0]       I    states. A 10K pull-up resistor has to be connected to TMS pin.
                      TCK (TAP Controller Clock) provides the clock input for the JTAG logic.
JTAG TEST LOGIC       A 10K pull-up resistor must be connected to TCK pin.
                      TDI (TAP Controller Data Input) is the serial input for test instructions and data.
nTRST            I    A 10K pull-up resistor must be connected to TDI pin.
                      TDO (TAP Controller Data Output) is the serial output for test instructions and data.
TMS              I
                      nRESET suspends any operation in progress and places S3C2410A into a known
TCK              I    reset state. For a reset, nRESET must be held to L level for at least 4 FCLK after the
                      processor power has been stabilized.
TDI              I    For external device reset control
                      (nRSTOUT = nRESET & nWDTRST & SW_RESET)
TDO              O    2.0V core power on-off control signal
                      Probe for battery state (Does not wake up at power-off mode in case of low battery
Reset, Clock & Power  state). If it isn't used, it has to be High (3.3V).
                      OM [3:2] determines how the clock is made.
nRESET           ST   OM [3:2] = 00b, Crystal is used for MPLL CLK source and UPLL CLK source.
                      OM [3:2] = 01b, Crystal is used for MPLL CLK source
nRSTOUT          O    and EXTCLK is used for UPLL CLK source.
                      OM [3:2] = 10b, EXTCLK is used for MPLL CLK source
PWREN            O    and Crystal is used for UPLL CLK source.
                      OM [3:2] = 11b, EXTCLK is used for MPLL CLK source and UPLL CLK source.
nBATT_FLT        I

OM [3:2]         I

                      1-23
PRODUCT OVERVIEW                                                                               S3C2410A

                       Table 1-3. S3C2410A Signal Descriptions (Continued)

      Signal      I/O                                       Description

Reset, Clock & Power (Continued)

EXTCLK            I External clock source.
                         When OM [3:2] = 11b, EXTCLK is used for MPLL CLK source and UPLL CLK source.
                         When OM [3:2] = 10b, EXTCLK is used for MPLL CLK source only.
                         When OM [3:2] = 01b, EXTCLK is used for UPLL CLK source only.
                         If it isn't used, it has to be High (3.3V).

XTIpll            AI Crystal Input for internal osc circuit.
                          When OM [3:2] = 00b, XTIpll is used for MPLL CLK source and UPLL CLK source.
                          When OM [3:2] = 01b, XTIpll is used for MPLL CLK source only.
                          When OM [3:2] = 10b, XTIpll is used for UPLL CLK source only.
                          If it isn't used, XTIpll has to be High (3.3V).

XTOpll            AO Crystal Output for internal osc circuit.
                           When OM [3:2] = 00b, XTIpll is used for MPLL CLK source and UPLL CLK source.
                           When OM [3:2] = 01b, XTIpll is used for MPLL CLK source only.
                           When OM [3:2] = 10b, XTIpll is used for UPLL CLK source only.
                           If it isn't used, it has to be a floating pin.

MPLLCAP           AI Loop filter capacitor for main clock.

UPLLCAP           AI Loop filter capacitor for USB clock.

XTIrtc            AI 32.768 kHz crystal input for RTC. If it isn't used, it has to be in High (RTCVDD = 1.8V).

XTOrtc            AO 32.768 kHz crystal output for RTC. If it isn't used, it has to be Float.

CLKOUT [1:0]      O Clock output signal. The CLKSEL of MISCCR register configures the clock output
                          mode among the MPLL CLK, UPLL CLK, FCLK, HCLK and PCLK.

1-24
S3C2410A                                                                PRODUCT OVERVIEW

                   Table 1-3. S3C2410A Signal Descriptions (Continued)

      Signal  I/O                           Description
Power
VDDalive      P S3C2410A reset block and port status register VDD (1.8V / 2.0V).
                     It should be always supplied whether in normal mode or in power-off mode.
VDDi/VDDiarm
VSSi/VSSiarm  P S3C2410A core logic VDD (1.8V / 2.0V) for CPU.
VDDi_MPLL     P S3C2410A core logic VSS
VSSi_MPLL     P S3C2410A MPLL analog and digital VDD (1.8V / 2.0V).
VDDOP         P S3C2410A MPLL analog and digital VSS.
VDDMOP        P S3C2410A I/O port VDD (3.3V)
              P S3C2410A Memory I/O VDD
VSSMOP
VSSOP                3.3V: SCLK up to 133MHz
RTCVDD        P S3C2410A Memory I/O VSS
              P S3C2410A I/O port VSS
VDDi_UPLL     P RTC VDD (1.8 V, Not support 2.0 and 3.3V)
VSSi_UPLL
VDDA_ADC             (This pin must be connected to power properly if RTC isn't used)
VSSA_ADC      P S3C2410A UPLL analog and digital VDD (1.8V / 2.0V)
              P S3C2410A UPLL analog and digital VSS
              P S3C2410A ADC VDD (3.3V)
              P S3C2410A ADC VSS

NOTES:
1. I/O means input/output.
2. AI/AO means analog input/analog output.
3. ST means schmitt-trigger.
4. P means power.

                                                                                                1-25
PRODUCT OVERVIEW                                                                 S3C2410A

S3C2410A SPECIAL REGISTERS

                                Table 1-4. S3C2410A Special Registers

      Register       Address      Address    Acc.  Read/               Function
       Name        (B. Endian)  (L. Endian)  Unit  Write

Memory Controller                             W

BWSCON             0x48000000                      R/W    Bus Width & Wait Status Control
                                                          Boot ROM Control
BANKCON0           0x48000004                             BANK1 Control
                                                          BANK2 Control
BANKCON1           0x48000008                             BANK3 Control
                                                          BANK4 Control
BANKCON2          0x4800000C                              BANK5 Control
                                                          BANK6 Control
BANKCON3           0x48000010                             BANK7 Control
                                                          DRAM/SDRAM Refresh Control
BANKCON4           0x48000014                             Flexible Bank Size
                                                          Mode register set for SDRAM
BANKCON5           0x48000018                             Mode register set for SDRAM

BANKCON6          0x4800001C

BANKCON7           0x48000020

REFRESH            0x48000024

BANKSIZE           0x48000028

MRSRB6            0x4800002C

MRSRB7             0x48000030

1-26
S3C2410A                                                                 PRODUCT OVERVIEW

                      Table 1-4. S3C2410A Special Registers (Continued)

      Register Name     Address      Address    Acc.  Read/              Function
                      (B. Endian)  (L. Endian)  Unit  Write
USB Host Controller
HcRevision            0x49000000                W            Control and Status Group
HcControl                                                    Memory Pointer Group
HcCommonStatus        0x49000004                             Frame Counter Group
HcInterruptStatus                                            Root Hub Group
HcInterruptEnable     0x49000008
HcInterruptDisable
HcHCCA                0x4900000C
HcPeriodCuttentED
HcControlHeadED       0x49000010
HcControlCurrentED
HcBulkHeadED          0x49000014
HcBulkCurrentED
HcDoneHead            0x49000018
HcRmInterval
HcFmRemaining         0x4900001C
HcFmNumber
HcPeriodicStart       0x49000020
HcLSThreshold
HcRhDescriptorA       0x49000024
HcRhDescriptorB
HcRhStatus            0x49000028
HcRhPortStatus1
HcRhPortStatus2       0x4900002C
Interrupt Controller
SRCPND                0x49000030
INTMOD
INTMSK                0x49000034
PRIORITY
INTPND                0x49000038
INTOFFSET
SUBSRCPND             0x4900003C
INTSUBMSK
                      0x49000040

                      0x49000044

                      0x49000048

                      0x4900004C

                      0x49000050

                      0x49000054

                      0x49000058

                      0X4A000000                W     R/W Interrupt Request Status

                      0X4A000004                      W Interrupt Mode Control

                      0X4A000008                      R/W Interrupt Mask Control

                      0X4A00000C                      W IRQ Priority Control

                      0X4A000010                      R/W Interrupt Request Status

                      0X4A000014                      R Interrupt request source offset

                      0X4A000018                      R/W Sub source pending

                      0X4A00001C                      R/W Interrupt sub mask

                                                                                       1-27
PRODUCT OVERVIEW                                                                       S3C2410A

                  Table 1-4. S3C2410A Special Registers (Continued)

     Register       Address      Address    Acc.  Read/                 Function
       Name       (B. Endian)  (L. Endian)  Unit  Write

DMA               0x4B000000                W     R/W DMA 0 Initial Source
DISRC0
DISRCC0           0x4B000004                             DMA 0 Initial Source Control
DIDST0
DIDSTC0           0x4B000008                             DMA 0 Initial Destination
DCON0
DSTAT0            0x4B00000C                             DMA 0 Initial Destination Control
DCSRC0
DCDST0            0x4B000010                             DMA 0 Control
DMASKTRIG0
DISRC1            0x4B000014                      R DMA 0 Count
DISRCC1
DIDST1            0x4B000018                             DMA 0 Current Source
DIDSTC1
DCON1             0x4B00001C                             DMA 0 Current Destination
DSTAT1
DCSRC1            0x4B000020                W     R/W DMA 0 Mask Trigger
DCDST1
DMASKTRIG1        0x4B000040                             DMA 1 Initial Source
DISRC2
DISRCC2           0x4B000044                             DMA 1 Initial Source Control
DIDST2
DIDSTC2           0x4B000048                             DMA 1 Initial Destination
DCON2
DSTAT2            0x4B00004C                             DMA 1 Initial Destination Control
DCSRC2
DCDST2            0x4B000050                             DMA 1 Control
DMASKTRIG2
DISRC3            0x4B000054                      R DMA 1 Count
DISRCC3
DIDST3            0x4B000058                             DMA 1 Current Source
DIDSTC3
DCON3             0x4B00005C                W            DMA 1 Current Destination
DSTAT3
DCSRC3            0x4B000060                      R/W DMA 1 Mask Trigger
DCDST3
DMASKTRIG3        0x4B000080                             DMA 2 Initial Source

                  0x4B000084                             DMA 2 Initial Source Control

                  0x4B000088                             DMA 2 Initial Destination

                  0x4B00008C                             DMA 2 Initial Destination Control

                  0x4B000090                             DMA 2 Control

                  0x4B000094                      R DMA 2 Count

                  0x4B000098                W            DMA 2 Current Source

                  0x4B00009C                             DMA 2 Current Destination

                  0x4B0000A0                      R/W DMA 2 Mask Trigger

                  0x4B0000C0                W     R/W DMA 3 Initial Source

                  0x4B0000C4                             DMA 3 Initial Source Control

                  0x4B0000C8                             DMA 3 Initial Destination

                  0x4B0000CC                             DMA 3 Initial Destination Control

                  0x4B0000D0                             DMA 3 Control

                  0x4B0000D4                      R DMA 3 Count

                  0x4B0000D8                             DMA 3 Current Source

                  0x4B0000DC                             DMA 3 Current Destination

                  0x4B0000E0                      R/W DMA 3 Mask Trigger

1-28
S3C2410A                                                           PRODUCT OVERVIEW

                Table 1-4. S3C2410A Special Registers (Continued)

Register          Address      Address    Acc.  Read/              Function
Name           (B. Endian)  (L. Endian)  Unit  Write
                                           W
Clock & Power Management                   W
                                   
LOCKTIME        0x4C000000                 W    R/W    PLL Lock Time Counter
                                                       MPLL Control
MPLLCON         0x4C000004                             UPLL Control
                                                       Clock Generator Control
UPLLCON         0x4C000008                             Slow Clock Control
                                                       Clock divider Control
CLKCON          0x4C00000C

CLKSLOW         0x4C000010

CLKDIVN         0x4C000014

LCD Controller

LCDCON1         0X4D000000                      R/W    LCD Control 1
                                                       LCD Control 2
LCDCON2         0X4D000004                             LCD Control 3
                                                       LCD Control 4
LCDCON3         0X4D000008                             LCD Control 5
                                                       STN/TFT: Frame Buffer Start Address1
LCDCON4         0X4D00000C                             STN/TFT: Frame Buffer Start Address2
                                                       STN/TFT: Virtual Screen Address Set
LCDCON5         0X4D000010                             STN: Red Lookup Table
                                                       STN: Green Lookup Table
LCDSADDR1       0X4D000014                             STN: Blue Lookup Table
                                                       STN: Dithering Mode
LCDSADDR2       0X4D000018                             TFT: Temporary Palette
                                                       LCD Interrupt Pending
LCDSADDR3       0X4D00001C                             LCD Interrupt Source
                                                       LCD Interrupt Mask
REDLUT          0X4D000020                             LPC3600 Control

GREENLUT        0X4D000024

BLUELUT         0X4D000028

DITHMODE        0X4D00004C

TPAL            0X4D000050

LCDINTPND       0X4D000054

LCDSRCPND       0X4D000058

LCDINTMSK       0X4D00005C

LPCSEL          0X4D000060

NAND Flash

NFCONF          0x4E000000                      R/W    NAND Flash Configuration
                                                       NAND Flash Command
NFCMD           0x4E000004                        R    NAND Flash Address
                                                R/W    NAND Flash Data
NFADDR          0x4E000008                             NAND Flash Operation Status
                                                       NAND Flash ECC
NFDATA          0x4E00000C

NFSTAT          0x4E000010

NFECC           0x4E000014

                                                                                    1-29
PRODUCT OVERVIEW                                                                   S3C2410A

                  Table 1-4. S3C2410A Special Registers (Continued)

     Register       Address      Address    Acc.  Read/              Function
       Name       (B. Endian)  (L. Endian)  Unit  Write

UART              0x50000000                W     R/W    UART 0 Line Control
ULCON0                                                   UART 0 Control
UCON0             0x50000004                        R    UART 0 FIFO Control
UFCON0                                                   UART 0 Modem Control
UMCON0            0x50000008                       W     UART 0 Tx/Rx Status
UTRSTAT0                                            R    UART 0 Rx Error Status
UERSTAT0          0x5000000C                      R/W    UART 0 FIFO Status
UFSTAT0                                           R/W    UART 0 Modem Status
UMSTAT0           0x50000010                             UART 0 Transmission Hold
UTXH0                                               R    UART 0 Receive Buffer
URXH0             0x50000014                             UART 0 Baud Rate Divisor
UBRDIV0                                            W     UART 1 Line Control
ULCON1            0x50000018                        R    UART 1 Control
UCON1                                             R/W    UART 1 FIFO Control
UFCON1            0x5000001C                      R/W    UART 1 Modem Control
UMCON1                                                   UART 1 Tx/Rx Status
UTRSTAT1          0x50000023 0x50000020     B       R    UART 1 Rx Error Status
UERSTAT1                                                 UART 1 FIFO Status
UFSTAT1           0x50000027 0x50000024            W     UART 1 Modem Status
UMSTAT1                                             R    UART 1 Transmission Hold
UTXH1             0x50000028                W     R/W    UART 1 Receive Buffer
URXH1                                                    UART 1 Baud Rate Divisor
UBRDIV1           0x50004000                W            UART 2 Line Control
ULCON2                                                   UART 2 Control
UCON2             0x50004004                             UART 2 FIFO Control
UFCON2                                                   UART 2 Tx/Rx Status
UTRSTAT2          0x50004008                             UART 2 Rx Error Status
UERSTAT2                                                 UART 2 FIFO Status
UFSTAT2           0x5000400C                             UART 2 Transmission Hold
UTXH2                                                    UART 2 Receive Buffer
URXH2             0x50004010                             UART 2 Baud Rate Divisor
UBRDIV2
                  0x50004014

                  0x50004018

                  0x5000401C

                  0x50004023 0x50004020     B

                  0x50004027 0x50004024

                  0x50004028                W

                  0x50008000                W

                  0x50008004

                  0x50008008

                  0x50008010

                  0x50008014

                  0x50008018

                  0x50008023 0x50008020     B

                  0x50008027 0x50008024

                  0x50008028                W

1-30
S3C2410A                                                                   PRODUCT OVERVIEW

               Table 1-4. S3C2410A Special Registers (Continued)

     Register    Address      Address    Acc.  Read/                 Function
       Name    (B. Endian)  (L. Endian)  Unit  Write

PWM Timer      0x51000000                W     R/W Timer Configuration
TCFG0
TCFG1          0x51000004                             Timer Configuration
TCON
TCNTB0         0x51000008                             Timer Control
TCMPB0
TCNTO0         0x5100000C                             Timer Count Buffer 0
TCNTB1
TCMPB1         0x51000010                             Timer Compare Buffer 0
TCNTO1
TCNTB2         0x51000014                      R Timer Count Observation 0
TCMPB2
TCNTO2         0x51000018                      R/W Timer Count Buffer 1
TCNTB3
TCMPB3         0x5100001C                             Timer Compare Buffer 1
TCNTO3
TCNTB4         0x51000020                      R Timer Count Observation 1
TCNTO4
               0x51000024                      R/W Timer Count Buffer 2

               0x51000028                             Timer Compare Buffer 2

               0x5100002C                      R Timer Count Observation 2

               0x51000030                      R/W Timer Count Buffer 3

               0x51000034                             Timer Compare Buffer 3

               0x51000038                      R Timer Count Observation 3

               0x5100003C                      R/W Timer Count Buffer 4

               0x51000040                      R Timer Count Observation 4

                                                                               1-31
PRODUCT OVERVIEW                                                                  S3C2410A

                     Table 1-4. S3C2410A Special Registers (Continued)

      Register Name    Address      Address    Acc. Read/               Function
                     (B. Endian)  (L. Endian)  Unit Write
USB Device
FUNC_ADDR_REG        0x52000143 0x52000140     B  R/W Function Address
PWR_REG                                                     Power Management
EP_INT_REG           0x52000147 0x52000144                  EP Interrupt Pending and Clear
USB_INT_REG                                                 USB Interrupt Pending and Clear
EP_INT_EN_REG        0x5200014B 0x52000148                  Interrupt Enable
USB_INT_EN_REG                                              Interrupt Enable
FRAME_NUM1_REG       0x5200015B 0x52000158
INDEX_REG                                          R Frame Number Lower Byte
EP0_CSR              0x5200015F 0x5200015C        R/W Register Index
IN_CSR1_REG
IN_CSR2_REG          0x5200016F 0x5200016C                  Endpoint 0 Status
MAXP_REG                                                    In Endpoint Control Status
OUT_CSR1_REG         0x52000173 0x52000170                  In Endpoint Control Status
OUT_CSR2_REG                                                Endpoint Max Packet
OUT_FIFO_CNT1_REG    0x5200017B 0x52000178                  Out Endpoint Control Status
OUT_FIFO_CNT2_REG                                           Out Endpoint Control Status
EP0_FIFO             0x52000187 0x52000184         R Endpoint Out Write Count
EP1_FIFO                                                    Endpoint Out Write Count
EP2_FIFO             0x52000187 0x52000184        R/W Endpoint 0 FIFO
EP3_FIFO                                                    Endpoint 1 FIFO
EP4_FIFO             0x5200018B 0x52000188                  Endpoint 2 FIFO
EP1_DMA_CON                                                 Endpoint 3 FIFO
EP1_DMA_UNIT         0x52000183 0x52000180                  Endpoint 4 FIFO
EP1_DMA_FIFO                                                EP1 DMA Interface Control
EP1_DMA_TTC_L        0x52000193 0x52000190                  EP1 DMA Tx Unit Counter
EP1_DMA_TTC_M                                               EP1 DMA Tx FIFO Counter
EP1_DMA_TTC_H        0x52000197 0x52000194                  EP1 DMA Total Tx Counter
                                                            EP1 DMA Total Tx Counter
                     0x5200019B 0x52000198                  EP1 DMA Total Tx Counter

                     0x5200019F 0x5200019C

                     0x520001C3 0x520001C0

                     0x520001C7 0x520001C4

                     0x520001CB 0x520001C8

                     0x520001CF 0x520001CC

                     0x520001D3 0x520001D0

                     0x52000203 0x52000200

                     0x52000207 0x52000204

                     0x5200020B 0x52000208

                     0x5200020F 0x5200020C

                     0x52000213 0x52000210

                     0x52000217 0x52000214

1-32
S3C2410A                                                                     PRODUCT OVERVIEW

                        Table 1-4. S3C2410A Special Registers (Continued)

     Register Name        Address        Address    Acc. Read/W              Function
                        (B. Endian)    (L. Endian)
                                                    Unit  rite
                                       0x52000218
USB Device (Continued)                 0x5200021C
                                       0x52000220
EP2_DMA_CON             0x5200021B     0x52000224   B     R/W EP2 DMA Interface Control
                                       0x52000228
EP2_DMA_UNIT            0x5200021F     0x5200022C                EP2 DMA Tx Unit Counter
                                       0x52000240
EP2_DMA_FIFO            0x52000223     0x52000244                EP2 DMA Tx FIFO Counter
                                       0x52000248
EP2_DMA_TTC_L           0x52000227     0x5200024C                EP2 DMA Total Tx Counter
                                       0x52000250
EP2_DMA_TTC_M           0x5200022B     0x52000254                EP2 DMA Total Tx Counter
                                       0x52000258
EP2_DMA_TTC_H           0x5200022F     0x5200025C                EP2 DMA Total Tx Counter
                                       0x52000260
EP3_DMA_CON             0x52000243     0x52000264                EP3 DMA Interface Control
                                       0x52000268
EP3_DMA_UNIT            0x52000247     0x5200026C                EP3 DMA Tx Unit Counter

EP3_DMA_FIFO            0x5200024B                               EP3 DMA Tx FIFO Counter

EP3_DMA_TTC_L           0x5200024F                               EP3 DMA Total Tx Counter

EP3_DMA_TTC_M           0x52000253     0x55000000                EP3 DMA Total Tx Counter
                                       0x55000004
EP3_DMA_TTC_H           0x52000257     0x55000008                EP3 DMA Total Tx Counter
                                       0x5500000C
EP4_DMA_CON             0x5200025B     0x55000010                EP4 DMA Interface Control

EP4_DMA_UNIT            0x5200025F                               EP4 DMA Tx Unit Counter

EP4_DMA_FIFO            0x52000263                               EP4 DMA Tx FIFO Counter

EP4_DMA_TTC_L           0x52000267                               EP4 DMA Total Tx Counter

EP4_DMA_TTC_M           0x5200026B                               EP4 DMA Total Tx Counter

EP4_DMA_TTC_H           0x5200026F                               EP4 DMA Total Tx Counter

Watchdog Timer

WTCON                   0x53000000                  W     R/W Watchdog Timer Mode

WTDAT                   0x53000004                               Watchdog Timer Data

WTCNT                   0x53000008                               Watchdog Timer Count

IIC

IICCON                  0x54000000                  W     R/W IIC Control

IICSTAT                 0x54000004                               IIC Status

IICADD                  0x54000008                               IIC Address

IICDS                   0x5400000C                               IIC Data Shift

IIS

IISCON                  0x55000000,02               HW,W  R/W    IIS Control
                                                    HW,W         IIS Mode
IISMOD                  0x55000004,06               HW,W         IIS Prescaler
                                                    HW,W         IIS FIFO Control
IISPSR                  0x55000008,0A                            IIS FIFO Entry
                                                     HW
IISFCON                 0x5500000C,0E

IISFIFO                 0x55000012

                                                                                            1-33
PRODUCT OVERVIEW                                                                        S3C2410A

                        Table 1-4. S3C2410A Special Registers (Continued)

  Register  Address     Address  Acc.     Read/                            Function
    Name                                  Write
            (B. Endian) (L. Endian) Unit
I/O port
GPACON      0x56000000           W        R/W Port A Control
GPADAT
GPBCON      0x56000004                           Port A Data
GPBDAT
GPBUP       0x56000010                           Port B Control
GPCCON
GPCDAT      0x56000014                           Port B Data
GPCUP
GPDCON      0x56000018                           Pull-up Control B
GPDDA1T
GPDUP       0x56000020                           Port C Control
GPECON
GPEDAT      0x56000024                           Port C Data
GPEUP
GPFCON      0x56000028                           Pull-up Control C
GPFDAT
GPFUP       0x56000030                           Port D Control
GPGCON
GPGDAT      0x56000034                           Port D Data
GPGUP
GPHCON      0x56000038                           Pull-up Control D
GPHDAT
GPHUP       0x56000040                           Port E Control
MISCCR
DCLKCON     0x56000044                           Port E Data
EXTINT0
EXTINT1     0x56000048                           Pull-up Control E
EXTINT2
EINTFLT0    0x56000050                           Port F Control
EINTFLT1
EINTFLT2    0x56000054                           Port F Data
EINTFLT3
EINTMASK    0x56000058                           Pull-up Control F
EINTPEND
GSTATUS0    0x56000060                           Port G Control
GSTATUS1
            0x56000064                           Port G Data

            0x56000068                           Pull-up Control G

            0x56000070                           Port H Control

            0x56000074                           Port H Data

            0x56000078                           Pull-up Control H

            0x56000080           W        R/W Miscellaneous Control

            0x56000084                           DCLK0/1 Control

            0x56000088                           External Interrupt Control Register 0

            0x5600008C                           External Interrupt Control Register 1

            0x56000090                           External Interrupt Control Register 2

            0x56000094                           Reserved

            0x56000098                           Reserved

            0x5600009C                           External Interrupt Filter Control Register 2

            0x560000A0                           External Interrupt Filter Control Register 3

            0x560000A4                           External Interrupt Mask

            0x560000A8                           External Interrupt Pending

            0x560000AC                           External Pin Status

            0x560000B0                           External Pin Status

1-34
S3C2410A                                                              PRODUCT OVERVIEW

               Table 1-4. S3C2410A Special Registers (Continued)

     Register    Address        Address    Acc.  Read/               Function
       Name    (B. Endian)    (L. Endian)  Unit  Write

RTC            0x57000043     0x57000040   B     R/W    RTC Control
RTCCON                                                  Tick time count
TICNT          0x57000047     0x57000044                RTC Alarm Control
RTCALM                                                  Alarm Second
ALMSEC         0x57000053     0x57000050                Alarm Minute
ALMMIN                                                  Alarm Hour
ALMHOUR        0x57000057     0x57000054                Alarm Day
ALMDATE                                                 Alarm Month
ALMMON         0x5700005B     0x57000058                Alarm Year
ALMYEAR                                                 RTC Round Reset
RTCRST         0x5700005F 0x5700005C                    BCD Second
BCDSEC                                                  BCD Minute
BCDMIN         0x57000063     0x57000060                BCD Hour
BCDHOUR                                                 BCD Day
BCDDATE        0x57000067     0x57000064                BCD Date
BCDDAY                                                  BCD Month
BCDMON         0x5700006B     0x57000068                BCD Year
BCDYEAR
A/D converter  0x5700006F 0x5700006C
ADCCON
ADCTSC         0x57000073     0x57000070
ADCDLY
ADCDAT0        0x57000077     0x57000074
ADCDAT1
SPI            0x5700007B     0x57000078
SPCON0,1
SPSTA0,1       0x5700007F 0x5700007C
SPPIN0,1
SPPRE0,1       0x57000083     0x57000080
SPTDAT0,1
SPRDAT0,1      0x57000087     0x57000084

               0x5700008B     0x57000088

               0x58000000                  W     R/W ADC Control

               0x58000004                               ADC Touch Screen Control

               0x58000008                               ADC Start or Interval Delay

               0x5800000C                        R ADC Conversion Data

               0x58000010                               ADC Conversion Data

               0x59000000,20               W     R/W SPI Control

               0x59000004,24                     R SPI Status

               0x59000008,28                     R/W SPI Pin Control

               0x5900000C,2C                            SPI Baud Rate Prescaler

               0x59000010,30                            SPI Tx Data

               0x59000014,34                     R SPI Rx Data

                                                                                     1-35
PRODUCT OVERVIEW                                                               S3C2410A

                  Table 1-4. S3C2410A Special Registers (Continued)

Register Name       Address      Address    Acc.  Read/              Function
                  (B. Endian)  (L. Endian)  Unit  Write
SD interface
SDICON            0x5A000000                W     R/W    SDI Control
SDIPRE                                                   SDI Baud Rate Prescaler
SDICmdArg         0x5A000004                      R/(C)  SDI Command Argument
SDICmdCon                                           R    SDI Command Control
SDICmdSta         0x5A000008                             SDI Command Status
SDIRSP0                                           R/W    SDI Response
SDIRSP1           0x5A00000C                             SDI Response
SDIRSP2                                             R    SDI Response
SDIRSP3           0x5A000010                      R/(C)  SDI Response
SDIDTimer                                                SDI Data / Busy Timer
SDIBSize          0x5A000014                        R    SDI Block Size
SDIDatCon                                         R/W    SDI Data control
SDIDatCnt         0x5A000018                             SDI Data Remain Counter
SDIDatSta                                                SDI Data Status
SDIFSTA           0x5A00001C                             SDI FIFO Status
SDIDAT                                                   SDI Data
SDIIntMsk         0x5A000020                             SDI Interrupt Mask

                  0x5A000024

                  0x5A000028

                  0x5A00002C

                  0x5A000030

                  0x5A000034

                  0x5A000038

                  0x5A00003F   0x5A00003C   B

                  0x5A000040                W

Cautions on S3C2410A Special Registers

1. In the little endian mode, L. endian address must be used. In the big endian mode, B. endian address must be
     used.

2. The special registers have to be accessed for each recommended access unit.

3. All registers except ADC registers, RTC registers and UART registers must be read/written in word unit (32-bit)
     at little/big endian.

4. Make sure that the ADC registers, RTC registers and UART registers be read/written by the specified access
     unit and the specified address. Moreover, one must carefully consider which endian mode is used.

5. W : 32-bit register, which must be accessed by LDR/STR or int type pointer(int *).
     HW : 16-bit register, which must be accessed by LDRH/STRH or short int type pointer(short int *).
     B : 8-bit register, which must be accessed by LDRB/STRB or char type pointer(char int *).

1-36
S3C2410A                      PROGRAMMER'S MODEL

2         PROGRAMMER'S MODEL

OVERVIEW

S3C2410A has been developed using the advanced ARM920T core, which has been designed by Advanced RISC
Machines, Ltd.

PROCESSOR OPERATING STATES
From the programmer's point of view, the ARM920T can be in one of two states:
ARM state which executes 32-bit, word-aligned ARM instructions.
THUMB state which can execute 16-bit, halfword-aligned THUMB instructions. In this state, the PC uses bit 1 to

     select between alternate halfwords.

                                                                          NOTE
     Transition between these two states does not affect the processor mode or the contents of the registers.

SWITCHING STATE
Entering THUMB State
Entry into THUMB state can be achieved by executing a BX instruction with the state bit (bit 0) set in the operand
register.
Transition to THUMB state will also occur automatically on return from an exception (IRQ, FIQ, UNDEF, ABORT,
SWI etc.), if the exception was entered with the processor in THUMB state.
Entering ARM State
Entry into ARM state happens:
On execution of the BX instruction with the state bit clear in the operand register.
On the processor taking an exception (IRQ, FIQ, RESET, UNDEF, ABORT, SWI etc.). In this case, the PC is

     placed in the exception mode's link register, and execution commences at the exception's vector address.

MEMORY FORMATS
ARM920T views memory as a linear collection of bytes numbered upwards from zero. Bytes 0 to 3 hold the first
stored word, bytes 4 to 7 the second and so on. ARM920T can treat words in memory as being stored either in Big-
Endian or Little-Endian format.

                              2-1
PROGRAMMER'S MODEL                                                                   S3C2410A

BIG-ENDIAN FORMAT

In Big-Endian format, the most significant byte of a word is stored at the lowest numbered byte and the least
significant byte at the highest numbered byte. Byte 0 of the memory system is therefore connected to data lines 31
through 24.

     Higher Address                24 23      16 15      87            Word Address
                               31         9          10       11  0
                                          5          6        7
                               8          1          2        3        8
                               4                                       4
                               0                                       0

     Lower Address  Most significant byte is at lowest address.
                    Word is addressed by byte address of most significant byte.

                    Figure 2-1. Big-Endian Addresses of Bytes within Words

LITTLE-ENDIAN FORMAT

In Little-Endian format, the lowest numbered byte in a word is considered the word's least significant byte, and the
highest numbered byte the most significant. Byte 0 of the memory system is therefore connected to data lines 7
through 0.

     Higher Address                24 23      16 15      87            Word Address
                               31         10         9        8   0
                                          6          5        4
                               11         2          1        0        8
                               7                                       4
                               3                                       0

     Lower Address  Least significant byte is at lowest address.
                    Word is addressed by byte address of least significant byte.

                    Figure 2-2. Little-Endian Addresses of Bytes within Words

INSTRUCTION LENGTH

Instructions are either 32 bits long (in ARM state) or 16 bits long (in THUMB state).

Data Types
ARM920T supports byte (8-bit), halfword (16-bit) and word (32-bit) data types. Words must be aligned to four-byte
boundaries and half words to two-byte boundaries.

2-2
S3C2410A     PROGRAMMER'S MODEL

OPERATING MODES

ARM920T supports seven modes of operation:

User (usr): The normal ARM program execution state
FIQ (fiq): Designed to support a data transfer or channel process
IRQ (irq): Used for general-purpose interrupt handling
Supervisor (svc): Protected mode for the operating system
Abort mode (abt): Entered after a data or instruction prefetch abort
System (sys): A privileged user mode for the operating system
Undefined (und): Entered when an undefined instruction is executed

Mode changes may be made under software control, or may be brought about by external interrupts or exception
processing. Most application programs will execute in User mode. The non-user modes' known as privileged modes-
are entered in order to service interrupts or exceptions, or to access protected resources.

REGISTERS

ARM920T has a total of 37 registers - 31 general-purpose 32-bit registers and six status registers - but these cannot
all be seen at once. The processor state and operating mode dictate which registers are available to the programmer.

The ARM State Register Set
In ARM state, 16 general registers and one or two status registers are visible at any one time. In privileged (non-
User) modes, mode-specific banked registers are switched in. Figure 2-3 shows which registers are available in each
mode: the banked registers are marked with a shaded triangle.

The ARM state register set contains 16 directly accessible registers: R0 to R15. All of these except R15 are general-
purpose, and may be used to hold either data or address values. In addition to these, there is a seventeenth register
used to store status information.

Register 14  is used as the subroutine link register. This receives a copy of R15 when a Branch and
             Link (BL) instruction is executed. At all other times it may be treated as a general-
Register 15  purpose register. The corresponding banked registers R14_svc, R14_irq, R14_fiq,
Register 16  R14_abt and R14_und are similarly used to hold the return values of R15 when
             interrupts and exceptions arise, or when Branch and Link instructions are executed
             within interrupt or exception routines.

             holds the Program Counter (PC). In ARM state, bits [1:0] of R15 are zero and bits
             [31:2] contain the PC. In THUMB state, bit [0] is zero and bits [31:1] contain the PC.

             is the CPSR (Current Program Status Register). This contains condition code flags
             and the current mode bits.

FIQ mode has seven banked registers mapped to R8-14 (R8_fiq-R14_fiq). In ARM state, many FIQ handlers do not
need to save any registers. User, IRQ, Supervisor, Abort and Undefined each have two banked registers mapped to
R13 and R14, allowing each of these modes to have a private stack pointer and link registers.

             2-3
PROGRAMMER'S MODEL                                                               S3C2410A

                    ARM State General Registers and Program Counter

     System & User   FIQ      Supervisor  Abort      IRQ             Undefined
          R0                    R0        R0        R0                 R0
          R1        R0          R1        R1        R1                 R1
          R2        R1          R2        R2        R2                 R2
          R3        R2          R3        R3        R3                 R3
          R4        R3          R4        R4        R4                 R4
          R5        R4          R5        R5        R5                 R5
          R6        R5          R6        R6        R6                 R6
          R7        R6          R7        R7        R7                 R7
          R8        R7          R8        R8        R8                 R8
          R9        R8_fiq      R9        R9        R9                 R9
          R10       R9_fiq      R10       R10       R10                R10
          R11       R10_fiq     R11       R11       R11                R11
          R12       R11_fiq     R12       R12       R12                R12
          R13       R12_fiq     R13_svc   R13_abt   R13_irq            R13_und
          R14       R13_fiq     R14_svc   R14_abt   R14_irq            R14_und
          R15 (PC)  R14_fiq     R15 (PC)  R15 (PC)  R15 (PC)           R15 (PC)
                    R15 (PC)

                        ARM State Program Status Registers

     CPSR            CPSR      CPSR        CPSR      CPSR             CPSR
                    SPSR_fiq  SPSR_svc    SPSR_abt  SPSR_irq         SPSR_und

     = banked register

                    Figure 2-3. Register Organization in ARM State

2-4
S3C2410A                                                                   PROGRAMMER'S MODEL

The THUMB State Register Set

The THUMB state register set is a subset of the ARM state set. The programmer has direct access to eight general
registers, R0-R7, as well as the Program Counter (PC), a stack pointer register (SP), a link register (LR), and the
CPSR. There are banked Stack Pointers, Link Registers and Saved Process Status Registers (SPSRs) for each
privileged mode. This is shown in Figure 2-4.

                THUMB State General Registers and Program Counter

          System & User   FIQ      Supervisor  Abort      IRQ              Undefined
               R0                    R0        R0        R0                  R0
               R1        R0          R1        R1        R1                  R1
               R2        R1          R2        R2        R2                  R2
               R3        R2          R3        R3        R3                  R3
               R4        R3          R4        R4        R4                  R4
               R5        R4          R5        R5        R5                  R5
               R6        R5          R6        R6        R6                  R6
               R7        R6          R7        R7        R7                  R7
               SP        R7          SP_svc    SP_abt    SP_und              SP_fiq
               LR        SP_fiq      LR_svc    LR_abt    LR_und              LR_fiq
               PC        LR_fiq      PC        PC        PC                  PC
                         PC

                             THUMB State Program Status Registers

          CPSR            CPSR      CPSR        CPSR      CPSR              CPSR
                         SPSR_fiq  SPSR_svc    SPSR_abt  SPSR_irq          SPSR_und

          = banked register

                         Figure 2-4. Register Organization in THUMB state

                                                                                      2-5
PROGRAMMER'S MODEL                                                                               S3C2410A

The relationship between ARM and THUMB state registers
The THUMB state registers relate to the ARM state registers in the following way:
THUMB state R0-R7 and ARM state R0-R7 are identical
THUMB state CPSR and SPSRs and ARM state CPSR and SPSRs are identical
THUMB state SP maps onto ARM state R13
THUMB state LR maps onto ARM state R14
The THUMB state Program Counter maps onto the ARM state Program Counter (R15)

This relationship is shown in Figure 2-5.

           THUMB state              ARM state                                      Lo-registers
                  R0
                  R1                     R0                                        Hi-registers
                  R2                     R1
                  R3                     R2
                  R4                     R3
                  R5                     R4
                  R6                     R5
                  R7                     R6
                                         R7
       Stack Pointer (SP)                R8
        Link register (LR)               R9
     Program Counter (PC)                R10
                                         R11
               CPSR                      R12
                SPSR          Stack Pointer (R13)
                               Link register (R14)
                            Program Counter (R15)
                                       CPSR
                                       SPSR

     Figure 2-5. Mapping of THUMB State Registers onto ARM State Registers

2-6
S3C2410A                                                           PROGRAMMER'S MODEL

Accessing Hi-Registers in THUMB State
In THUMB state, registers R8-R15 (the Hi registers) are not part of the standard register set. However, the assembly
language programmer has limited access to them, and can use them for fast temporary storage.

A value may be transferred from a register in the range R0-R7 (a Lo register) to a Hi register, and from a Hi register to
a Lo register, using special variants of the MOV instruction. Hi register values can also be compared against or
added to Lo register values with the CMP and ADD instructions. For more information, refer to Figure 3-34.

THE PROGRAM STATUS REGISTERS

The ARM920T contains a Current Program Status Register (CPSR), plus five Saved Program Status Registers
(SPSRs) for use by exception handlers. These register's functions are:

Hold information about the most recently performed ALU operation
Control the enabling and disabling of interrupts
Set the processor operating mode

The arrangement of bits is shown in Figure 2-6.

Condition Code Flags  (Reserved)                                            Control Bits

31 30 29 28 27 26 25 24 23                 ~~ ~~  876543210
NZ CV                                                    I F T M4 M3 M2 M1 M0

                      Overflow                                                                     Mode bits
                      Carry/Borrow/Extend                                                          State bit
                      Zero                                                                         FIQ disable
                      Negative/Less Than                                                           IRQ disable

                      Figure 2-6. Program Status Register Formats

                                                                                                                2-7
PROGRAMMER'S MODEL  S3C2410A

The Condition Code Flags
The N, Z, C and V bits are the condition code flags. These may be changed as a result of arithmetic and logical
operations, and may be tested to determine whether an instruction should be executed.

In ARM state, all instructions may be executed conditionally: see Table 3-2 for details.

In THUMB state, only the Branch instruction is capable of conditional execution: see Figure 3-46 for details.

The Control Bits
The bottom 8 bits of a PSR (incorporating I, F, T and M[4:0]) are known collectively as the control bits. These will be
changed when an exception arises. If the processor is operating in a privileged mode, they can also be manipulated
by software.

The T bit          This reflects the operating state. When this bit is set, the processor is executing in THUMB
                   state, otherwise it is executing in ARM state. This is reflected on the TBIT external signal.
Interrupt disable
bits               Note that the software must never change the state of the TBIT in the CPSR. If this
The mode bits      happens, the processor will enter an unpredictable state.

Reserved bits      The I and F bits are the interrupt disable bits. When set, these disable the IRQ and FIQ
                   interrupts respectively.

                   The M4, M3, M2, M1 and M0 bits (M[4:0]) are the mode bits. These determine the
                   processor's operating mode, as shown in Table 2-1. Not all combinations of the mode bits
                   define a valid processor mode. Only those explicitly described shall be used. The user
                   should be aware that if any illegal value is programmed into the mode bits, M[4:0], then the
                   processor will enter an unrecoverable state. If this occurs, reset should be applied.

                   The remaining bits in the PSRs are reserved. When changing a PSR's flag or control bits,
                   you must ensure that these unused bits are not altered. Also, your program should not rely
                   on them containing specific values, since in future processors they may read as one or zero.

2-8
S3C2410A                                                      PROGRAMMER'S MODEL

                            Table 2-1. PSR Mode Bit Values

       M[4:0]         Mode     Visible THUMB state registers       Visible ARM state registers
10000          User
10001          FIQ          R7..R0,                           R14..R0,
10010          IRQ          LR, SP                            PC, CPSR
10011          Supervisor   PC, CPSR
10111          Abort                                          R7..R0,
11011          Undefined    R7..R0,                           R14_fiq..R8_fiq,
11111          System       LR_fiq, SP_fiq                    PC, CPSR, SPSR_fiq
                            PC, CPSR, SPSR_fiq
                                                              R12..R0,
                            R7..R0,                           R14_irq, R13_irq,
                            LR_irq, SP_irq                    PC, CPSR, SPSR_irq
                            PC, CPSR, SPSR_irq
                                                              R12..R0,
                            R7..R0,                           R14_svc, R13_svc,
                            LR_svc, SP_svc,                   PC, CPSR, SPSR_svc
                            PC, CPSR, SPSR_svc
                                                              R12..R0,
                            R7..R0,                           R14_abt, R13_abt,
                            LR_abt, SP_abt,                   PC, CPSR, SPSR_abt
                            PC, CPSR, SPSR_abt
                                                              R12..R0,
                            R7..R0                            R14_und, R13_und,
                            LR_und, SP_und,                   PC, CPSR
                            PC, CPSR, SPSR_und
                                                              R14..R0,
                            R7..R0,                           PC, CPSR
                            LR, SP
                            PC, CPSR

Reserved bits  The remaining bits in the PSR's are reserved. When changing a PSR's flag or control bits,
               you must ensure that these unused bits are not altered. Also, your program should not rely
               on them containing specific values, since in future processors they may read as one or
               zero.

                                                                                                           2-9
PROGRAMMER'S MODEL  S3C2410A

EXCEPTIONS

Exceptions arise whenever the normal flow of a program has to be halted temporarily, for example to service an
interrupt from a peripheral. Before an exception can be handled, the current processor state must be preserved so
that the original program can resume when the handler routine has finished.

It is possible for several exceptions to arise at the same time. If this happens, they are dealt with in a fixed order.
See Exception Priorities on page 2-14.

Action on Entering an Exception
When handling an exception, the ARM920T:

1. Preserves the address of the next instruction in the appropriate Link Register. If the exception has been entered
     from ARM state, then the address of the next instruction is copied into the Link Register (that is, current PC + 4
     or PC + 8 depending on the exception. See Table 2-2 on for details). If the exception has been entered from
     THUMB state, then the value written into the Link Register is the current PC offset by a value such that the
     program resumes from the correct place on return from the exception. This means that the exception handler
     need not determine which state the exception was entered from. For example, in the case of SWI, MOVS PC,
     R14_svc will always return to the next instruction regardless of whether the SWI was executed in ARM or
     THUMB state.

2. Copies the CPSR into the appropriate SPSR
3. Forces the CPSR mode bits to a value which depends on the exception
4. Forces the PC to fetch the next instruction from the relevant exception vector

It may also set the interrupt disable flags to prevent otherwise unmanageable nestings of exceptions.

If the processor is in THUMB state when an exception occurs, it will automatically switch into ARM state when the
PC is loaded with the exception vector address.

Action on Leaving an Exception
On completion, the exception handler:
1. Moves the Link Register, minus an offset where appropriate, to the PC. (The offset will vary depending on the

     type of exception.)
2. Copies the SPSR back to the CPSR
3. Clears the interrupt disable flags, if they were set on entry

                                                                          NOTE
     An explicit switch back to THUMB state is never needed, since restoring the CPSR from the SPSR
     automatically sets the T bit to the value it held immediately prior to the exception.

2-10
S3C2410A                                                            PROGRAMMER'S MODEL

Exception Entry/Exit Summary

Table 2-2 summarizes the PC value preserved in the relevant R14 on exception entry, and the recommended
instruction for exiting the exception handler.

                                Table 2-2. Exception Entry/Exit

                Return Instruction          Previous State                                                    Notes

                                    ARM R14_x                    THUMB R14_x                                     1
                                                                                                                 1
BL        MOV PC, R14               PC + 4                       PC + 2                                          1
SWI       MOVS PC, R14_svc                                                                                       2
UDEF      MOVS PC, R14_und          PC + 4                       PC + 2                                          2
FIQ       SUBS PC, R14_fiq, #4                                                                                   1
IRQ       SUBS PC, R14_irq, #4      PC + 4                       PC + 2                                          3
PABT      SUBS PC, R14_abt, #4                                                                                   4
DABT      SUBS PC, R14_abt, #8      PC + 4                       PC + 4
RESET     NA
                                    PC + 4                       PC + 4

                                    PC + 4                       PC + 4

                                    PC + 8                       PC + 8

                                                               

NOTES:
1. Where PC is the address of the BL/SWI/Undefined Instruction fetch which had the prefetch abort.
2. Where PC is the address of the instruction which did not get executed since the FIQ or IRQ took priority.
3. Where PC is the address of the Load or Store instruction which generated the data abort.
4. The value saved in R14_svc upon reset is unpredictable.

FIQ

The FIQ (Fast Interrupt Request) exception is designed to support a data transfer or channel process, and in ARM
state has sufficient private registers to remove the need for register saving (thus minimizing the overhead of context
switching).

FIQ is externally generated by taking the nFIQ input LOW. This input can except either synchronous or
asynchronous transitions, depending on the state of the ISYNC input signal. When ISYNC is LOW, nFIQ and nIRQ
are considered asynchronous, and a cycle delay for synchronization is incurred before the interrupt can affect the
processor flow.

Irrespective of whether the exception was entered from ARM or Thumb state, a FIQ handler should leave the interrupt
by executing

          SUBS  PC,R14_fiq,#4

FIQ may be disabled by setting the CPSR's F flag (but note that this is not possible from User mode). If the F flag is
clear, ARM920T checks for a LOW level on the output of the FIQ synchronizer at the end of each instruction.

                                                                                                              2-11
PROGRAMMER'S MODEL                                                            S3C2410A

IRQ

The IRQ (Interrupt Request) exception is a normal interrupt caused by a LOW level on the nIRQ input. IRQ has a
lower priority than FIQ and is masked out when a FIQ sequence is entered. It may be disabled at any time by setting
the I bit in the CPSR, though this can only be done from a privileged (non-User) mode.

Irrespective of whether the exception was entered from ARM or Thumb state, an IRQ handler should return from the
interrupt by executing

      SUBS          PC,R14_irq,#4

Abort
An abort indicates that the current memory access cannot be completed. It can be signaled by the external ABORT
input. ARM920T checks for the abort exception during memory access cycles.

There are two types of abort:

Prefetch abort: occurs during an instruction prefetch.
Data abort: occurs during a data access.

If a prefetch abort occurs, the prefetched instruction is marked as invalid, but the exception will not be taken until the
instruction reaches the head of the pipeline. If the instruction is not executed - for example because a branch occurs
while it is in the pipeline - the abort does not take place.

If a data abort occurs, the action taken depends on the instruction type:

Single data transfer instructions (LDR, STR) write back modified base registers: the Abort handler must be aware
     of this.

The swap instruction (SWP) is aborted as though it had not been executed.

Block data transfer instructions (LDM, STM) complete. If write-back is set, the base is updated. If the instruction
     would have overwritten the base with data (ie it has the base in the transfer list), the overwriting is prevented. All
     register overwriting is prevented after an abort is indicated, which means in particular that R15 (always the last
     register to be transferred) is preserved in an aborted LDM instruction.

The abort mechanism allows the implementation of a demand paged virtual memory system. In such a system the
processor is allowed to generate arbitrary addresses. When the data at an address is unavailable, the Memory
Management Unit (MMU) signals an abort. The abort handler must then work out the cause of the abort, make the
requested data available, and retry the aborted instruction. The application program needs no knowledge of the
amount of memory available to it, nor is its state in any way affected by the abort.

After fixing the reason for the abort, the handler should execute the following irrespective of the state (ARM or
Thumb):

      SUBS          PC,R14_abt,#4  ; for a prefetch abort, or
      SUBS          PC,R14_abt,#8  ; for a data abort

This restores both the PC and the CPSR, and retries the aborted instruction.

2-12
S3C2410A                                                                                    PROGRAMMER'S MODEL

Software Interrupt

The software interrupt instruction (SWI) is used for entering Supervisor mode, usually to request a particular
supervisor function. A SWI handler should return by executing the following irrespective of the state (ARM or Thumb):

          MOV         PC,R14_svc

This restores the PC and CPSR, and returns to the instruction following the SWI.
                                                                          NOTE

     nFIQ, nIRQ, ISYNC, LOCK, BIGEND, and ABORT pins exist only in the ARM920T CPU core.

Undefined Instruction

When ARM920T comes across an instruction which it cannot handle, it takes the undefined instruction trap. This
mechanism may be used to extend either the THUMB or ARM instruction set by software emulation.

After emulating the failed instruction, the trap handler should execute the following irrespective of the state (ARM or
Thumb):

          MOVS        PC,R14_und

This restores the CPSR and returns to the instruction following the undefined instruction.
Exception Vectors
The following table shows the exception vector addresses.

                                  Table 2-3. Exception Vectors

            Address                      Exception                              Mode in Entry
          0x00000000  Reset                                     Supervisor
          0x00000004  Undefined instruction                     Undefined
          0x00000008  Software Interrupt                        Supervisor
          0x0000000C  Abort (prefetch)                          Abort
          0x00000010  Abort (data)                              Abort
          0x00000014  Reserved                                  Reserved
          0x00000018  IRQ                                       IRQ
          0x0000001C  FIQ                                       FIQ

                                                                                               2-13
PROGRAMMER'S MODEL  S3C2410A

Exception Priorities
When multiple exceptions arise at the same time, a fixed priority system determines the order in which they are
handled:

Highest priority:

1. Reset
2. Data abort
3. FIQ
4. IRQ
5. Prefetch abort

Lowest priority:

6. Undefined Instruction, Software interrupt.

Not All Exceptions Can Occur at Once:
Undefined Instruction and Software Interrupt are mutually exclusive, since they each correspond to particular (non-
overlapping) decodings of the current instruction.

If a data abort occurs at the same time as a FIQ, and FIQs are enabled (ie the CPSR's F flag is clear), ARM920T
enters the data abort handler and then immediately proceeds to the FIQ vector. A normal return from FIQ will cause
the data abort handler to resume execution. Placing data abort at a higher priority than FIQ is necessary to ensure
that the transfer error does not escape detection. The time for this exception entry should be added to worst-case
FIQ latency calculations.

2-14
S3C2410A  PROGRAMMER'S MODEL

INTERRUPT LATENCIES

The worst case latency for FIQ, assuming that it is enabled, consists of the longest time the request can take to
pass through the synchronizer (Tsyncmax if asynchronous), plus the time for the longest instruction to complete
(Tldm, the longest instruction is an LDM which loads all the registers including the PC), plus the time for the data
abort entry (Texc), plus the time for FIQ entry (Tfiq). At the end of this time ARM920T will be executing the
instruction at 0x1C.

Tsyncmax is 3 processor cycles, Tldm is 20 cycles, Texc is 3 cycles, and Tfiq is 2 cycles. The total time is
therefore 28 processor cycles. This is just over 1.4 microseconds in a system which uses a continuous 20 MHz
processor clock. The maximum IRQ latency calculation is similar, but must allow for the fact that FIQ has higher
priority and could delay entry into the IRQ handling routine for an arbitrary length of time. The minimum latency for
FIQ or IRQ consists of the shortest time the request can take through the synchronizer (Tsyncmin) plus Tfiq. This is
4 processor cycles.

RESET

When the nRESET signal goes LOW, ARM920T abandons the executing instruction and then continues to fetch
instructions from incrementing word addresses.

When nRESET goes HIGH again, ARM920T:

1. Overwrites R14_svc and SPSR_svc by copying the current values of the PC and CPSR into them. The value of
     the saved PC and SPSR is not defined.

2. Forces M[4:0] to 10011 (Supervisor mode), sets the I and F bits in the CPSR, and clears the CPSR's T bit.
3. Forces the PC to fetch the next instruction from address 0x00.
4. Execution resumes in ARM state.

          2-15
PROGRAMMER'S MODEL         S3C2410A

                    NOTES

2-16
S3C2410A                                                                               ARM INSTRUCTION SET

3         ARM INSTRUCTION SET

INSTRUCTION SET SUMMAY

This chapter describes the ARM instruction set in the ARM920T core.

FORMAT SUMMARY
The ARM instruction set formats are shown below.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Cond      0 0 I Opcode S Rn           Rd           Operand2                            Data/Processing/
                                                                                       PSR Transfer
Cond      0 0 0 0 0 0 A S Rd          Rn           Rs 1 0 0 1 Rm                       Multiply
Cond                                                                                   Multiply Long
Cond      0 0 0 0 1 U A S RdHi        RdLo         Rn 1 0 0 1 Rm                       Single Data Swap
Cond                                                                                   Branch and Exchange
Cond      0 0 0 1 0 B 0 0 Rn          Rd 0 0 0 0 1 0 0 1 Rm                            Halfword Data Transfer:
                                                                                       register offset
Cond      0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 Rn                           Halfword Data Transfer:
                                                                                       immendiate offset
Cond      0 0 0 P U 0 W L Rn          Rd 0 0 0 0 1 S H 1 Rm                            Single Data Transfer
Cond                                                                                   Undefined
Cond      0 0 0 P U 1 W L Rn          Rd    Offset 1 S H 1 Offset                      Block Data Transfer
Cond                                                                                   Branch
Cond      0 1 I P U B W L Rn          Rd                    Offset                     Coprocessor Data Transfer
          01 I
          1 0 0 P U B W L Rn                                         1
          1 01L
          1 1 0 P U B W L Rn                       Register List

                                           Offset

                                      CRd          CP#               Offset

Cond 1 1 1 0 CP Opc CRn               CRd          CP#      CP 0 CRm Coprocessor Data Operation

Cond 1 1 1 0 CP L                CRn  Rd           CP#      CP 1 CRm                   Coprocessor Register Transfer
                            Opc                                                        Software Interrupt
                                      Ignored by processor
Cond 1 1 1 1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

                                 Figure 3-1. ARM Instruction Set Format

                                                                                                                  3-1
ARM INSTRUCTION SET                                                                   S3C2410A

                                                                         NOTE

     Some instruction codes are not defined but do not cause the Undefined instruction trap to be taken, for
     instance a Multiply instruction with bit 6 changed to a 1. These instructions should not be used, as their
     action may change in future ARM implementations.

INSTRUCTION SUMMARY

                     Table 3-1. The ARM Instruction Set

         Mnemonic                        Instruction                          Action
ADC                  Add with carry                    Rd: = Rn + Op2 + Carry
ADD                  Add                               Rd: = Rn + Op2
AND                  AND                               Rd: = Rn AND Op2
B                    Branch                            R15: = address
BIC                  Bit Clear                         Rd: = Rn AND NOT Op2
BL                   Branch with Link                  R14: = R15, R15: = address
BX                   Branch and Exchange               R15: = Rn, T bit: = Rn[0]
CDP                  Coprocessor Data Processing       (Coprocessor-specific)
CMN                  Compare Negative                  CPSR flags: = Rn + Op2
CMP                  Compare                           CPSR flags: = Rn - Op2
EOR                  Exclusive OR                      Rd: = (Rn AND NOT Op2)
                                                       OR (Op2 AND NOT Rn)
LDC                  Load coprocessor from memory      Coprocessor load
LDM                  Load multiple registers           Stack manipulation (Pop)
LDR                  Load register from memory         Rd: = (address)
MCR                  Move CPU register to coprocessor  cRn: = rRn {cRm}
                     register
MLA                  Multiply Accumulate               Rd: = (Rm Rs) + Rn
MOV                  Move register or constant         Rd: = Op2

3-2
S3C2410A                                                           ARM INSTRUCTION SET

                   Table 3-1. The ARM Instruction Set (Continued)

         Mnemonic                      Instruction                              Action
MRC                Move from coprocessor register to     Rn: = cRn {cRm}
                   CPU register
MRS                Move PSR status/flags to register     Rn: = PSR
MSR                Move register to PSR status/flags     PSR: = Rm
MUL                Multiply                              Rd: = Rm Rs
MVN                Move negative register                Rd: = 0 FFFFFFFF EOR Op2
ORR                OR                                    Rd: = Rn OR Op2
RSB                Reverse Subtract                      Rd: = Op2 - Rn
RSC                Reverse Subtract with Carry           Rd: = Op2 - Rn - 1 + Carry
SBC                Subtract with Carry                   Rd: = Rn - Op2 - 1 + Carry
STC                Store coprocessor register to memory  address: = CRn
STM                Store Multiple                        Stack manipulation (Push)
STR                Store register to memory              
: = Rd
SUB                Subtract                              Rd: = Rn - Op2
SWI                Software Interrupt                    OS call
SWP                Swap register with memory             Rd: = [Rn], [Rn] := Rm
TEQ                Test bitwise equality                 CPSR flags: = Rn EOR Op2
TST                Test bits                             CPSR flags: = Rn AND Op2

                                                                                        3-3
ARM INSTRUCTION SET                                                                      S3C2410A

THE CONDITION FIELD

In ARM state, all instructions are conditionally executed according to the state of the CPSR condition codes and the
instruction's condition field. This field (bits 31:28) determines the circumstances under which an instruction is to be
executed. If the state of the C, N, Z and V flags fulfils the conditions encoded by the field, the instruction is
executed, otherwise it is ignored.

There are sixteen possible conditions, each represented by a two-character suffix that can be appended to the
instruction's mnemonic. For example, a Branch (B in assembly language) becomes BEQ for "Branch if Equal", which
means the Branch will only be taken if the Z flag is set.

In practice, fifteen different conditions may be used: these are listed in Table 3-2. The sixteenth (1111) is reserved,
and must not be used.

In the absence of a suffix, the condition field of most instructions is set to "Always" (suffix AL). This means the
instruction will always be executed regardless of the CPSR condition codes.

                             Table 3-2. Condition Code Summary

     Code            Suffix                    Flags                            Meaning
     0000              EQ    Z set                              equal
     0001              NE    Z clear                            not equal
     0010              CS    C set                              unsigned higher or same
     0011              CC    C clear                            unsigned lower
     0100              MI    N set                              negative
     0101              PL    N clear                            positive or zero
     0110              VS    V set                              overflow
     0111              VC    V clear                            no overflow
     1000              HI    C set and Z clear                  unsigned higher
     1001              LS    C clear or Z set                   unsigned lower or same
     1010              GE    N equals V                         greater or equal
     1011              LT    N not equal to V                   less than
     1100              GT    Z clear AND (N equals V)           greater than
     1101              LE    Z set OR (N not equal to V)        less than or equal
     1110              AL    (ignored)                          always

3-4
S3C2410A                                                                    ARM INSTRUCTION SET

BRANCH AND EXCHANGE (BX)

This instruction is only executed if the condition is true. The various conditions are defined in Table 3-2.

This instruction performs a branch by copying the contents of a general register, Rn, into the program counter, PC.
The branch causes a pipeline flush and refill from the address specified by Rn. This instruction also permits the
instruction set to be exchanged. When the instruction is executed, the value of Rn[0] determines whether the
instruction stream will be decoded as ARM or THUMB instructions.

31            28 27        24 23  20 19                   16 15  12 11  87  43                     0

          Cond 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1                                 Rn

                     [3:0] Operand Register
                     If bit0 of Rn = 1, subsequent instructions decoded as THUMB instructions
                     If bit0 of Rn =0, subsequent instructions decoded as ARM instructions

                     [31:28] Condition Field

                                            Figure 3-2. Branch and Exchange Instructions

INSTRUCTION CYCLE TIMES
The BX instruction takes 2S + 1N cycles to execute, where S and N are defined as sequential (S-cycle) and non-
sequential (N-cycle), respectively.

ASSEMBLER SYNTAX

BX - branch and exchange.

BX {cond} Rn  Two character condition mnemonic. See Table 3-2.
{cond}        is an expression evaluating to a valid register number.
Rn

USING R15 AS AN OPERAND
If R15 is used as an operand, the behavior is undefined.

                                                                                                                3-5
ARM INSTRUCTION SET                        S3C2410A

Examples               R0, Into_THUMB + 1  ; Generate branch target address
                  ADR                      ; and set bit 0 high - hence
                                           ; arrive in THUMB state.
     BX                R0                  ; Branch and change to THUMB
                                           ; state.
     CODE16                                ; Assemble subsequent code as
     Into_THUMB                            ; THUMB instructions

                                          ; Generate branch target to word aligned address
                                          ; - hence bit 0 is low and so change back to ARM state.
                                          ; Branch and change back to ARM state.

     ADR R5, Back_to_ARM                   ; Word align
                                           ; Assemble subsequent code as ARM instructions
     BX R5

     
     
     

     ALIGN
     CODE32
     Back_to_ARM

3-6
S3C2410A                                                              ARM INSTRUCTION SET

BRANCH AND BRANCH WITH LINK (B, BL)

The instruction is only executed if the condition is true. The various conditions are defined Table 3-2. The instruction
encoding is shown in Figure 3-3, below.

31              28 27 25 24 23                                        0

          Cond  101 L                           Offset

                       [24] Link bit            1 = Branch with link
                       0 = Branch

                       [31:28] Condition Field

                                                        Figure 3-3. Branch Instructions

Branch instructions contain a signed 2's complement 24-bit offset. This is shifted left two bits, sign extended to 32
bits, and added to the PC. The instruction can therefore specify a branch of +/- 32Mbytes. The branch offset must
take account of the prefetch operation, which causes the PC to be 2 words (8 bytes) ahead of the current instruction.

Branches beyond +/- 32Mbytes must use an offset or absolute destination which has been previously loaded into a
register. In this case the PC should be manually saved in R14 if a Branch with Link type operation is required.

THE LINK BIT

Branch with Link (BL) writes the old PC into the link register (R14) of the current bank. The PC value written into R14
is adjusted to allow for the prefetch, and contains the address of the instruction following the branch and link
instruction. Note that the CPSR is not saved with the PC and R14[1:0] are always cleared.

To return from a routine called by Branch with Link use MOV PC,R14 if the link register is still valid or LDM
Rn!,{..PC} if the link register has been saved onto a stack pointed to by Rn.

INSTRUCTION CYCLE TIMES

Branch and Branch with Link instructions take 2S + 1N incremental cycles, where S and N are defined as sequential
(S-cycle) and internal (I-cycle).

                                                                         3-7
ARM INSTRUCTION SET                                     S3C2410A

ASSEMBLER SYNTAX

Items in {} are optional. Items in <> must be present.

B{L}{cond}

{L}                      Used to request the Branch with Link form of the instruction. If absent, R14 will not be
{cond}                   affected by the instruction.

                         A two-character mnemonic as shown in Table 3-2. If absent then AL (ALways) will be
                         used.

                         The destination. The assembler calculates the offset.

Examples      BAL        here                           ; Assembles to 0xEAFFFFFE (note effect of PC offset).
here          B          there                          ; Always condition used as default.
              CMP        R1,#0                          ; Compare R1 with zero and branch to fred
                                                        ; if R1 was zero, otherwise continue.
              BEQ        fred                           ; Continue to next instruction.
              BL         sub+ROM                        ; Call subroutine at computed address.
              ADDS       R1,#1                          ; Add 1 to register 1, setting CPSR flags
                                                        ; on the result then call subroutine if
              BLCC       sub                            ; the C flag is clear, which will be the
                                                        ; case unless R1 held 0xFFFFFFFF.

3-8
S3C2410A                                                                             ARM INSTRUCTION SET

DATA PROCESSING

The data processing instruction is only executed if the condition is true. The conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-4.

31              28 27 26 25 24  21 20 19          16 15      12 11                            0

          Cond  00 L OpCode S               Rn           Rd                    Operand2

                [15:12] Destination register             1 = Branch with link
                0 = Branch

                [19:16] 1st operand register             1 = Branch with link
                0 = Branch

                [20] Set condition codes                 1 = Set condition codes
                0 = Do not after condition codes

                [24:21] Operation codes
                0000 = AND-Rd: = Op1 AND Op2
                0001 = EOR-Rd: = Op1 EOR Op2
                0010 = SUB-Rd: = Op1-Op2
                0011 = RSB-Rd: = Op2-Op1
                0100 = ADD-Rd: = Op1+Op2
                0101 = ADC-Rd: = Op1+Op2+C
                0110 = SBC-Rd: = OP1-Op2+C-1
                0111 = RSC-Rd: = Op2-Op1+C-1
                1000 = TST-set condition codes on Op1 AND Op2
                1001 = TEO-set condition codes on OP1 EOR Op2
                1010 = CMP-set condition codes on Op1-Op2
                1011 = SMN-set condition codes on Op1+Op2
                1100 = ORR-Rd: = Op1 OR Op2
                1101 = MOV-Rd: =Op2
                1110 = BIC-Rd: = Op1 AND NOT Op2
                1111 = MVN-Rd: = NOT Op2

                [25] Immediate operand                   1 = Operand 2 is an immediate value
                0 = Operand 2 is a register

                [11:0] Operand 2 type selection

                11                          34        0

                                Shift             Rm

                [3:0] 2nd operand register               [11:4] Shift applied to Rm

                11 8 7                                0

                Rotate                 Imm

                [7:0] Unsigned 8 bit immediate value [11:8] Shift applied to Imm

                [31:28] Condition field

                                Figure 3-4. Data Processing Instructions

                                                                                                 3-9
ARM INSTRUCTION SET  S3C2410A

The instruction produces a result by performing a specified arithmetic or logical operation on one or two operands.
The first operand is always a register (Rn).

The second operand may be a shifted register (Rm) or a rotated 8 bit immediate value (Imm) according to the value of
the I bit in the instruction. The condition codes in the CPSR may be preserved or updated as a result of this
instruction, according to the value of the S bit in the instruction.

Certain operations (TST, TEQ, CMP, CMN) do not write the result to Rd. They are used only to perform tests and to
set the condition codes on the result and always have the S bit set. The instructions and their effects are listed in
Table 3-3.

3-10
S3C2410A                                                         ARM INSTRUCTION SET

CPSR FLAGS

The data processing operations may be classified as logical or arithmetic. The logical operations (AND, EOR, TST,
TEQ, ORR, MOV, BIC, MVN) perform the logical action on all corresponding bits of the operand or operands to
produce the result. If the S bit is set (and Rd is not R15, see below) the V flag in the CPSR will be unaffected, the C
flag will be set to the carry out from the barrel shifter (or preserved when the shift operation is LSL #0), the Z flag will
be set if and only if the result is all zeros, and the N flag will be set to the logical value of bit 31 of the result.

                    Table 3-3. ARM Data Processing Instructions

Assembler Mnemonic  OP Code                                    Action
            AND        0000  Operand1 AND operand2
            EOR        0001  Operand1 EOR operand2
            WUB        0010  Operand1 - operand2
            RSB        0011  Operand2 operand1
            ADD        0100  Operand1 + operand2
            ADC        0101  Operand1 + operand2 + carry
            SBC        0110  Operand1 - operand2 + carry - 1
            RSC        0111  Operand2 - operand1 + carry - 1
             TST       1000  As AND, but result is not written
            TEQ        1001  As EOR, but result is not written
            CMP        1010  As SUB, but result is not written
            CMN        1011  As ADD, but result is not written
            ORR        1100  Operand1 OR operand2
            MOV        1101  Operand2 (operand1 is ignored)
             BIC       1110  Operand1 AND NOT operand2 (Bit clear)
            MVN        1111  NOT operand2 (operand1 is ignored)

The arithmetic operations (SUB, RSB, ADD, ADC, SBC, RSC, CMP, CMN) treat each operand as a 32 bit integer
(either unsigned or 2's complement signed, the two are equivalent). If the S bit is set (and Rd is not R15) the V flag in
the CPSR will be set if an overflow occurs into bit 31 of the result; this may be ignored if the operands were
considered unsigned, but warns of a possible error if the operands were 2's complement signed. The C flag will be
set to the carry out of bit 31 of the ALU, the Z flag will be set if and only if the result was zero, and the N flag will be
set to the value of bit 31 of the result (indicating a negative result if the operands are considered to be 2's
complement signed).

                                                                       3-11
ARM INSTRUCTION SET                                                                                S3C2410A

SHIFTS

When the second operand is specified to be a shifted register, the operation of the barrel shifter is controlled by the
Shift field in the instruction. This field indicates the type of shift to be performed (logical left or right, arithmetic right or
rotate right). The amount by which the register should be shifted may be contained in an immediate field in the
instruction, or in the bottom byte of another register (other than R15). The encoding for the different shift types is
shown in Figure 3-5.

          11         7654                             11                  87654

                                  0                                   RS  0  1

          [6:5] Shift type        01 = logical right  [6:5] Shift type       01 = logical right
          00 = logical left       11 = rotate right   00 = logical left      11 = rotate right
          10 = arithmetic right                       10 = arithmetic right

          [11:7] Shift amount                         [11:8] Shift register
          5 bit unsigned integer                      Shift amount specified in bottom-byte of Rs

                                     Figure 3-5. ARM Shift Operations

Instruction specified shift amount

When the shift amount is specified in the instruction, it is contained in a 5-bit field which may take any value from 0
to 31. A logical shift left (LSL) takes the contents of Rm and moves each bit by the specified amount to a more
significant position. The least significant bits of the result are filled with zeros, and the high bits of Rm which do not
map into the result are discarded, except that the least significant discarded bit becomes the shifter carry output
which may be latched into the C bit of the CPSR when the ALU operation is in the logical class (see above). For
example, the effect of LSL #5 is shown in Figure 3-6.

      31             27 26                                                                         0

                                                      Contents of Rm

      carry out

                                     Value of Operand 2                          00000

                                                   Figure 3-6. Logical Shift Left

                                                                    NOTE
LSL #0 is a special case, where the shifter carry out is the old value of the CPSR C flag. The contents of Rm
are used directly as the second operand. A logical shift right (LSR) is similar, but the contents of Rm are
moved to less significant positions in the result. LSR #5 has the effect shown in Figure 3-7.

3-12
S3C2410A                          ARM INSTRUCTION SET

31                            54  0
00000
            Contents of Rm        carry out
          Value of Operand 2

                                                        Figure 3-7. Logical Shift Right

The form of the shift field which might be expected to correspond to LSR #0 is used to encode LSR #32, which has a
zero result with bit 31 of Rm as the carry output. Logical shift right zero is redundant as it is the same as logical shift
left zero, so the assembler will convert LSR #0 (and ASR #0 and ROR #0) into LSL #0, and allow LSR #32 to be
specified.

An arithmetic shift right (ASR) is similar to logical shift right, except that the high bits are filled with bit 31 of Rm
instead of zeros. This preserves the sign in 2's complement notation. For example, ASR #5 is shown in Figure
3-8.

31 30                         54  0

            Contents of Rm        carry out
          Value of Operand 2

                                                      Figure 3-8. Arithmetic Shift Right

The form of the shift field which might be expected to give ASR #0 is used to encode ASR #32. Bit 31 of Rm is again
used as the carry output, and each bit of operand 2 is also equal to bit 31 of Rm. The result is therefore all ones or
all zeros, according to the value of bit 31 of Rm.

                                             3-13
ARM INSTRUCTION SET                                          S3C2410A

Rotate right (ROR) operations reuse the bits which "overshoot" in a logical shift right operation by reintroducing them
at the high end of the result, in place of the zeros used to fill the high end in logical right operations. For example,
ROR #5 is shown in Figure 3-9.

       31                                                54  0

                     Contents of Rm

                                                             carry out

                     Value of Operand 2

                                                             Figure 3-9. Rotate Right

The form of the shift field which might be expected to give ROR #0 is used to encode a special function of the barrel
shifter, rotate right extended (RRX). This is a rotate right by one bit position of the 33 bit quantity formed by
appending the CPSR C flag to the most significant end of the contents of Rm as shown in Figure 3-10.

   31                  Contents of Rm                        10
                     Value of Operand 2                              carry out
C
in

                     Figure 3-10. Rotate Right Extended

3-14
S3C2410A  ARM INSTRUCTION SET

Register Specified Shift Amount
Only the least significant byte of the contents of Rs is used to determine the shift amount. Rs can be any general
register other than R15.

If this byte is zero, the unchanged contents of Rm will be used as the second operand, and the old value of the
CPSR C flag will be passed on as the shifter carry output.

If the byte has a value between 1 and 31, the shifted result will exactly match that of an instruction specified shift
with the same value and shift operation.

If the value in the byte is 32 or more, the result will be a logical extension of the shift described above:

1. LSL by 32 has result zero, carry out equal to bit 0 of Rm.
2. LSL by more than 32 has result zero, carry out zero.
3. LSR by 32 has result zero, carry out equal to bit 31 of Rm.
4. LSR by more than 32 has result zero, carry out zero.
5. ASR by 32 or more has result filled with and carry out equal to bit 31 of Rm.
6. ROR by 32 has result equal to Rm, carry out equal to bit 31 of Rm.
7. ROR by n where n is greater than 32 will give the same result and carry out as ROR by n-32; therefore

     repeatedly subtract 32 from n until the amount is in the range 1 to 32 and see above.

                                                                          NOTE
     The zero in bit 7 of an instruction with a register controlled shift is compulsory; a one in this bit will cause
     the instruction to be a multiply or undefined instruction.

          3-15
ARM INSTRUCTION SET                                                                S3C2410A

IMMEDIATE OPERAND ROTATES

The immediate operand rotate field is a 4-bit unsigned integer which specifies a shift operation on the 8-bit immediate
value. This value is zero extended to 32 bits, and then subject to a rotate right by twice the value in the rotate field.
This enables many common constants to be generated, for example all powers of 2.

WRITING TO R15

When Rd is a register other than R15, the condition code flags in the CPSR may be updated from the ALU flags as
described above.

When Rd is R15 and the S flag in the instruction is not set the result of the operation is placed in R15 and the CPSR
is unaffected.

When Rd is R15 and the S flag is set the result of the operation is placed in R15 and the SPSR corresponding to the
current mode is moved to the CPSR. This allows state changes which atomically restore both PC and CPSR. This
form of instruction should not be used in User mode.

USING R15 AS AN OPERANDY

If R15 (the PC) is used as an operand in a data processing instruction the register is used directly.

The PC value will be the address of the instruction, plus 8 or 12 bytes due to instruction prefetching. If the shift
amount is specified in the instruction, the PC will be 8 bytes ahead. If a register is used to specify the shift amount
the PC will be 12 bytes ahead.

TEQ, TST, CMP AND CMN OPCODES

                                                                          NOTE
     TEQ, TST, CMP and CMN do not write the result of their operation but do set flags in the CPSR. An
     assembler should always set the S flag for these instructions even if this is not specified in the mnemonic.

The TEQP form of the TEQ instruction used in earlier ARM processors must not be used: the PSR transfer
operations should be used instead.

The action of TEQP in the ARM920T is to move SPSR_ to the CPSR if the processor is in a privileged mode
and to do nothing if in User mode.

INSTRUCTION CYCLE TIMES

Data Processing instructions vary in the number of incremental cycles taken as follows:

                     Table 3-4. Incremental Cycle Times

                                  Processing Type                          Cycles
Normal data processing
Data processing with register specified shift                 1S
Data processing with PC written                               1S + 1I
Data processing with register specified shift and PC written  2S + 1N
                                                              2S + 1N +1I

NOTE: S, N and I are as defined sequential (S-cycle), non-sequential (N-cycle), and internal (I-cycle) respectively.

3-16
S3C2410A                                                                                     ARM INSTRUCTION SET

ASSEMBLER SYNTAX

MOV,MVN (single operand instructions).
     {cond}{S} Rd,

CMP,CMN,TEQ,TST (instructions which do not produce a result).
     {cond} Rn,

AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BIC
     {cond}{S} Rd,Rn,

where:

                    Rm{,} or,<#expression>

{cond}                   A two-character condition mnemonic. See Table 3-2.

{S}                      Set condition codes if S present (implied for CMP, CMN, TEQ, TST).

Rd, Rn and Rm Expressions evaluating to a register number.

<#expression>            If this is used, the assembler will attempt to generate a shifted immediate 8-bit field to
                         match the expression. If this is impossible, it will give an error.

                   or #expression, or RRX (rotate right one bit with
                         extend).

s             ASL, LSL, LSR, ASR, ROR. (ASL is a synonym for LSL, they assemble to the same
                         code.)

EXAMPLES                 R2,R4,R5                       ; If the Z flag is set make R2:=R4+R5
                         R4,#3                          ; Test R4 for equality with 3.
                  ADDEQ                                 ; (The S is in fact redundant as the
                  TEQS                                  ; assembler inserts it automatically.)
                                                        ; Logical right shift R7 by the number in
              SUB        R4,R5,R7,LSR R2                ; the bottom byte of R2, subtract result
                                                        ; from R5, and put the answer into R4.
              MOV        PC,R14                         ; Return from subroutine.
              MOVS       PC,R14                         ; Return from exception and restore CPSR
                                                        ; from SPSR_mode.

                                                                                                                     3-17
ARM INSTRUCTION SET  S3C2410A

PSR TRANSFER (MRS, MSR)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2.

The MRS and MSR instructions are formed from a subset of the Data Processing operations and are implemented
using the TEQ, TST, CMN and CMP instructions without the S flag set. The encoding is shown in Figure 3-11.

These instructions allow access to the CPSR and SPSR registers. The MRS instruction allows the contents of the
CPSR or SPSR_ to be moved to a general register. The MSR instruction allows the contents of a general
register to be moved to the CPSR or SPSR_ register.

The MSR instruction also allows an immediate value or register contents to be transferred to the condition code flags
(N,Z,C and V) of CPSR or SPSR_ without affecting the control bits. In this case, the top four bits of the
specified register contents or 32 bit immediate value are written to the top four bits of the relevant PSR.

OPERAND RESTRICTIONS

In user mode, the control bits of the CPSR are protected from change, so only the condition code flags of the
     CPSR can be changed. In other (privileged) modes the entire CPSR can be changed.

Note that the software must never change the state of the T bit in the CPSR. If this happens, the processor will
     enter an unpredictable state.

The SPSR register which is accessed depends on the mode at the time of execution. For example, only
     SPSR_fiq is accessible when the processor is in FIQ mode.

You must not specify R15 as the source or destination register.
Also, do not attempt to access an SPSR in User mode, since no such register exists.

3-18
S3C2410A                                                                             ARM INSTRUCTION SET

MRS (transfer PSR contents to a register)

31              28 27         23 22 21             16 15            12 11                       0

          Cond         00010  Ps         001111           Rd                000000000000

                              [15:12] Destination Register

                              [22] Source PSR

                              0 = CPSR             1 = SPSR_

                              [31:28] Condition Field

MSR (transfer register contents to PSR)

31              28 27         23 22 21                              12 11            43         0

          Cond         00010  Pd          101001111                        00000000         Rm

                              [3:0] Source Register

                              [22] Destination PSR

                              0 = CPSR             1 = SPSR_

                              [31:28] Condition Field

MSR (transfer register contents or immediate value to PSR flag bits only)

31              28 27 26 25 24 23 22 21                             12 11                       0

          Cond  00 I 10 Pd                101001111                         Source operand

                              [22] Destination PSR

                              0 = CPSR             1 = SPSR_

                              [25] Immediate Operand
                              0 = Source operand is a register
                              1 = SPSR_

                              [11:0] Source Operand

                              11                     43             0

                                         00000000               Rm

                              [3:0] Source Register
                              [11:4] Source operand is an immediate value

                              11          87                        0

                                  Rotate             Imm

                              [7:0] Unsigned 8 bit immediate value
                              [11:8] Shift applied to Imm

                              [31:28] Condition Field

                                         Figure 3-11. PSR Transfer

                                                                                                   3-19
ARM INSTRUCTION SET                                                                    S3C2410A

RESERVED BITS

Only twelve bits of the PSR are defined in ARM920T (N,Z,C,V,I,F, T & M[4:0]); the remaining bits are reserved for use
in future versions of the processor. Refer to Figure 2-6 for a full description of the PSR bits.

To ensure the maximum compatibility between ARM920T programs and future processors, the following rules should
be observed:

The reserved bits should be preserved when changing the value in a PSR.
Programs should not rely on specific values from the reserved bits when checking the PSR status, since they

     may read as one or zero in future processors.

A read-modify-write strategy should therefore be used when altering the control bits of any PSR register; this involves
transferring the appropriate PSR register to a general register using the MRS instruction, changing only the relevant
bits and then transferring the modified value back to the PSR register using the MSR instruction.

EXAMPLES

The following sequence performs a mode change:

          MRS        R0,CPSR                    ; Take a copy of the CPSR.
          BIC        R0,R0,#0x1F                ; Clear the mode bits.
          ORR        R0,R0,#new_mode            ; Select new mode
          MSR        CPSR,R0                    ; Write back the modified CPSR.

When the aim is simply to change the condition code flags in a PSR, a value can be written directly to the flag bits
without disturbing the control bits. The following instruction sets the N,Z,C and V flags:

MSR       CPSR_flg,#0xF0000000                  ; Set all the flags regardless of their previous state
                                                ; (does not affect any control bits).

No attempt should be made to write an 8-bit immediate value into the whole PSR since such an operation cannot
preserve the reserved bits.

INSTRUCTION CYCLE TIMES
PSR transfers take 1S incremental cycles, where S is defined as Sequential (S-cycle).

3-20
S3C2410A                                                       ARM INSTRUCTION SET

ASSEMBLY SYNTAX

      MRS - transfer PSR contents to a register
           MRS{cond} Rd,

      MSR - transfer register contents to PSR
           MSR{cond} ,Rm

      MSR - transfer register contents to PSR flag bits only
           MSR{cond} ,Rm

The most significant four bits of the register contents are written to the N,Z,C & V flags respectively.

      MSR - transfer immediate value to PSR flag bits only
           MSR{cond} ,<#expression>

The expression should symbolise a 32-bit value of which the most significant four bits are written to the N,Z,C and V
flags respectively.

Key:                Two-character condition mnemonic. See Table 3-2..
     {cond}
     Rd and Rm      Expressions evaluating to a register number other than R15
     
                    CPSR, CPSR_all, SPSR or SPSR_all. (CPSR and CPSR_all are synonyms as are SPSR
              and SPSR_all)
     <#expression>
                    CPSR_flg or SPSR_flg

                    Where this is used, the assembler will attempt to generate a shifted immediate 8-bit field
                    to match the expression. If this is impossible, it will give an error.

EXAMPLES

In User mode the instructions behave as follows:

          MSR       CPSR_all,Rm                          ; CPSR[31:28] <- Rm[31:28]
          MSR       CPSR_flg,Rm                          ; CPSR[31:28] <- Rm[31:28]
          MSR       CPSR_flg,#0xA0000000                 ; CPSR[31:28] <- 0xA (set N,C; clear Z,V)
          MRS       Rd,CPSR                              ; Rd[31:0] <- CPSR[31:0]

In privileged modes the instructions behave as follows:

          MSR       CPSR_all,Rm                          ; CPSR[31:0] <- Rm[31:0]
          MSR       CPSR_flg,Rm                          ; CPSR[31:28] <- Rm[31:28]
          MSR       CPSR_flg,#0x50000000                 ; CPSR[31:28] <- 0x5 (set Z,V; clear N,C)
          MSR       SPSR_all,Rm                          ; SPSR_[31:0]<- Rm[31:0]
          MSR       SPSR_flg,Rm                          ; SPSR_[31:28] <- Rm[31:28]
          MSR       SPSR_flg,#0xC0000000                 ; SPSR_[31:28] <- 0xC (set N,Z; clear C,V)
          MRS       Rd,SPSR                              ; Rd[31:0] <- SPSR_[31:0]

                                                                                                           3-21
ARM INSTRUCTION SET                                                                  S3C2410A

MULTIPLY AND MULTIPLY-ACCUMULATE (MUL, MLA)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-12.
The multiply and multiply-accumulate instructions use an 8-bit Booth's algorithm to perform integer multiplication.

      31         28 27  22 21 20 19      16 15                12 11      87  43      0

           Cond  000000 AS           Rd                   Rn         Rs  1001    Rm

                                [15:12][11:8][3:0] Operand Registers
                                [19:16] Destination Register

                                [20] Set Condition Code
                                0 = Do not after condition codes
                                1 = Set condition codes

                                [21] Accumulate
                                0 = Multiply only
                                1 = Multiply and accumulate

                                [31:28] Condition Field

                                Figure 3-12. Multiply Instructions

The multiply form of the instruction gives Rd:=Rm*Rs. Rn is ignored, and should be set to zero for compatibility with
possible future upgrades to the instruction set. The multiply-accumulate form gives Rd:=Rm*Rs+Rn, which can save
an explicit ADD instruction in some circumstances. Both forms of the instruction work on operands which may be
considered as signed (2's complement) or unsigned integers.

The results of a signed multiply and of an unsigned multiply of 32-bit operands differ only in the upper 32 bits - the
low 32 bits of the signed and unsigned results are identical. As these instructions only produce the low 32 bits of a
multiply, they can be used for both signed and unsigned multiplies.

For example consider the multiplication of the operands:

Operand A  Operand B    Result

0xFFFFFFF6 0x0000001 0xFFFFFF38

3-22
S3C2410A  ARM INSTRUCTION SET

If the Operands Are Interpreted as Signed
Operand A has the value -10, operand B has the value 20, and the result is -200 which is correctly represented as
0xFFFFFF38.

If the Operands Are Interpreted as Unsigned
Operand A has the value 4294967286, operand B has the value 20 and the result is 85899345720, which is
represented as 0x13FFFFFF38, so the least significant 32 bits are 0xFFFFFF38.

Operand Restrictions
The destination register Rd must not be the same as the operand register Rm. R15 must not be used as an operand
or as the destination register.

All other register combinations will give correct results, and Rd, Rn and Rs may use the same register when
required.

          3-23
ARM INSTRUCTION SET                                                                           S3C2410A

CPSR FLAGS

Setting the CPSR flags is optional, and is controlled by the S bit in the instruction. The N (Negative) and Z (Zero)
flags are set correctly on the result (N is made equal to bit 31 of the result, and Z is set if and only if the result is
zero). The C (Carry) flag is set to a meaningless value and the V (oVerflow) flag is unaffected.

INSTRUCTION CYCLE TIMES

MUL takes 1S + mI and MLA 1S + (m+1)I cycles to execute, where S and I are defined as sequential (S-cycle) and
internal (I-cycle), respectively.

m                         The number of 8-bit multiplier array cycles is required to complete the multiply,

                          which is controlled by the value of the multiplier operand specified by Rs. Its

                          possible values are as follows

1                         If bits [32:8] of the multiplier operand are all zero or all one.

2                         If bits [32:16] of the multiplier operand are all zero or all one.

3                         If bits [32:24] of the multiplier operand are all zero or all one.

4                         In all other cases.

ASSEMBLER SYNTAX

MUL{cond}{S} Rd,Rm,Rs
MLA{cond}{S} Rd,Rm,Rs,Rn

{cond}                    Two-character condition mnemonic. See Table 3-2..

{S}                       Set condition codes if S present

Rd, Rm, Rs and Rn Expressions evaluating to a register number other than R15.

EXAMPLES                  R1,R2,R3             ; R1:=R2*R3
                          R1,R2,R3,R4          ; Conditionally R1:=R2*R3+R4, Setting condition codes.
                  MUL
                  MLAEQS

3-24
S3C2410A                                                         ARM INSTRUCTION SET

MULTIPLY LONG AND MULTIPLY-ACCUMULATE LONG (MULL, MLAL)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-13.

The multiply long instructions perform integer multiplication on two 32-bit operands and produce 64-bit results.
Signed and unsigned multiplication each with optional accumulate give rise to four variations.

31        28 27  23 22 21 20 19      16 15        12 11      87  43      0

          Cond 0 0 0 0 1 U A S RdHi         RdLo         Rs   1001   Rm

                 [11:8][3:0] Operand Registers
                 [19:16][15:12] Source Destination Registers

                 [20] Set Condition Code
                 0 = Do not alter condition codes
                 1 = Set condition codes

                 [21] Accumulate
                 0 = Multiply only
                 1 = Multiply and accumulate

                 [22] Unsigned
                 0 = Unsigned
                 1 = Signed

                 [31:28] Condition Field

                                                  Figure 3-13. Multiply Long Instructions

The multiply forms (UMULL and SMULL) take two 32-bit numbers and multiply them to produce a 64-bit result of the
form RdHi,RdLo := Rm * Rs. The lower 32 bits of the 64-bit result are written to RdLo, the upper 32 bits of the result
are written to RdHi.

The multiply-accumulate forms (UMLAL and SMLAL) take two 32-bit numbers, multiply them and add a 64 bit
number to produce a 64-bit result of the form RdHi,RdLo := Rm * Rs + RdHi,RdLo. The lower 32 bits of the 64-bit
number to add is read from RdLo. The upper 32 bits of the 64 bit number to add is read from RdHi. The lower 32 bits
of the 64-bit result are written to RdLo. The upper 32 bits of the 64 bit result are written to RdHi.

The UMULL and UMLAL instructions treat all of their operands as unsigned binary numbers and write an unsigned 64
bit result. The SMULL and SMLAL instructions treat all of their operands as two's-complement signed numbers and
write a two's-complement signed 64-bit result.

                                                                                                                  3-25
ARM INSTRUCTION SET  S3C2410A

OPERAND RESTRICTIONS
R15 must not be used as an operand or as a destination register.
RdHi, RdLo, and Rm must all specify different registers.

CPSR FLAGS
Setting the CPSR flags is optional, and is controlled by the S bit in the instruction. The N and Z flags are set
correctly on the result (N is equal to bit 63 of the result, Z is set if and only if all 64 bits of the result are zero). Both
the C and V flags are set to meaningless values.

INSTRUCTION CYCLE TIMES
MULL takes 1S + (m+1)I and MLAL 1S + (m+2)I cycles to execute, where m is the number of 8 bit multiplier array
cycles required to complete the multiply, which is controlled by the value of the multiplier operand specified by Rs.
Its possible values are as follows:
For Signed INSTRUCTIONS SMULL, SMLAL:
If bits [31:8] of the multiplier operand are all zero or all one.
If bits [31:16] of the multiplier operand are all zero or all one.
If bits [31:24] of the multiplier operand are all zero or all one.
In all other cases.

For Unsigned Instructions UMULL, UMLAL:
If bits [31:8] of the multiplier operand are all zero.
If bits [31:16] of the multiplier operand are all zero.
If bits [31:24] of the multiplier operand are all zero.
In all other cases.

S and I are defined as sequential (S-cycle) and internal (I-cycle), respectively.

3-26
S3C2410A                                                                               ARM INSTRUCTION SET

ASSEMBLER SYNTAX

                          Table 3-5. Assembler Syntax Descriptions

                    Mnemonic                               Description                 Purpose
UMULL{cond}{S} RdLo,RdHi,Rm,Rs         Unsigned Multiply Long               32 x 32 = 64
UMLAL{cond}{S} RdLo,RdHi,Rm,Rs         Unsigned Multiply & Accumulate Long  32 x 32 + 64 = 64
SMULL{cond}{S} RdLo,RdHi,Rm,Rs         Signed Multiply Long                 32 x 32 = 64
SMLAL{cond}{S} RdLo,RdHi,Rm,Rs         Signed Multiply & Accumulate Long    32 x 32 + 64 = 64

where:                    Two-character condition mnemonic. See Table 3-2.
{cond}                    Set condition codes if S present
{S}                       Expressions evaluating to a register number other than R15.
RdLo, RdHi, Rm, Rs

EXAMPLES                  R1,R4,R2,R3  ; R4,R1:=R2*R3
                          R1,R5,R2,R3  ; R5,R1:=R2*R3+R5,R1 also setting condition codes
                  UMULL
                  UMLALS

                                                                                                3-27
ARM INSTRUCTION SET                                                            S3C2410A

SINGLE DATA TRANSFER (LDR, STR)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-14.

The single data transfer instructions are used to load or store single bytes or words of data. The memory address
used in the transfer is calculated by adding an offset to or subtracting an offset from a base register.

The result of this calculation may be written back into the base register if auto-indexing is required.

      31        28 27 26 25 24 23 22 21 20 19      16 15      12 11            0

          Cond       01 I P U B W L            Rn         Rd           Offset

                     [15:12] Source/Destination Registers

                     [19:16] Base Register

                     [20] Load/Store Bit
                     0 = Store to memory
                     1 = Load from memory

                     [21] Write-back Bit
                     0 = No write-back
                     1 = Write address into base

                     [22] Byte/Word Bit
                     0 = Transfer word quantity
                     1 = Transfer byte quantity

                     [23] Up/Down Bit
                     0 = Down: subtract offset from base
                     1 = Up: add offset to base

                     [24] Pre/Post Indexing Bit
                     0 = Post: add offset after transfer
                     1 = Pre: add offset before transfer

                     [25] Immediate Offset
                     0 = Offset is an immediate value

                     [11:0] Offset

                     11                                           0

                                               Immediate

                     [11:0] Unsigned 12-bit immediate offset

                     11                            43             0

                                     Shift                    Rm

                     [3:0] Offset register [11:4] Shift applied to Rm

                     [31:28] Condition Field

                     Figure 3-14. Single Data Transfer Instructions

3-28
S3C2410A  ARM INSTRUCTION SET

OFFSETS AND AUTO-INDEXING

The offset from the base may be either a 12-bit unsigned binary immediate value in the instruction, or a second
register (possibly shifted in some way). The offset may be added to (U = 1) or subtracted from (U = 0) the base
register Rn. The offset modification may be performed either before (pre-indexed, P = 1) or after (post-indexed, P = 0)
the base is used as the transfer address.

The W bit gives optional auto increment and decrement addressing modes. The modified base value may be written
back into the base (W = 1), or the old base value may be kept (W = 0). In the case of post-indexed addressing, the
write back bit is redundant and is always set to zero, since the old base value can be retained by setting the offset to
zero. Therefore post-indexed data transfers always write back the modified base. The only use of the W bit in a post-
indexed data transfer is in privileged mode code, where setting the W bit forces non-privileged mode for the transfer,
allowing the operating system to generate a user address in a system where the memory management hardware
makes suitable use of this hardware.

SHIFTED REGISTER OFFSET

The 8 shift control bits are described in the data processing instructions section. However, the register specified shift
amounts are not available in this instruction class. See Figure 3-5.

BYTES AND WORDS

This instruction class may be used to transfer a byte (B = 1) or a word (B = 0) between an ARM920T register and
memory.

The action of LDR(B) and STR(B) instructions is influenced by the BIGEND control signal of ARM920T core. The two
possible configurations are described below.

Little-Endian Configuration

A byte load (LDRB) expects the data on data bus inputs 7 through 0 if the supplied address is on a word boundary,
on data bus inputs 15 through 8 if it is a word address plus one byte, and so on. The selected byte is placed in the
bottom 8 bits of the destination register, and the remaining bits of the register are filled with zeros. Please see Figure
2-2.

A byte store (STRB) repeats the bottom 8 bits of the source register four times across data bus outputs 31 through
0. The external memory system should activate the appropriate byte subsystem to store the data.

A word load (LDR) will normally use a word aligned address. However, an address offset from a word boundary will
cause the data to be rotated into the register so that the addressed byte occupies bits 0 to 7. This means that half-
words accessed at offsets 0 and 2 from the word boundary will be correctly loaded into bits 0 through 15 of the
register. Two shift operations are then required to clear or to sign extend the upper 16 bits.

A word store (STR) should generate a word aligned address. The word presented to the data bus is not affected if the
address is not word aligned. That is, bit 31 of the register being stored always appears on data bus output 31.

          3-29
ARM INSTRUCTION SET                                                 S3C2410A

                        memory   register

                          A                                A

                     A+3  B  24                                 24
                                                           B
                     A+2  C  16
                                                                16
                     A+1     8                             C

                          D                                      8
                                                           D
                     A       0
                                                                 0

                             LDR from word aligned address

                        memory   register

                     A+3  A  24                            A
                                                                24
                     A+2  B  16
                                                           B
                     A+1  C  8                                  16

                          D                                C
                                                                 8
                     A       0
                                                           D
                                                                 0

                             LDR from address offset by 2

                                              Figure 3-15. Little-Endian Offset Addressing

Big-Endian Configuration

A byte load (LDRB) expects the data on data bus inputs 31 through 24 if the supplied address is on a word
boundary, on data bus inputs 23 through 16 if it is a word address plus one byte, and so on. The selected byte is
placed in the bottom 8 bits of the destination register and the remaining bits of the register are filled with zeros.
Please see Figure 2-1.

A byte store (STRB) repeats the bottom 8 bits of the source register four times across data bus outputs 31 through
0. The external memory system should activate the appropriate byte subsystem to store the data.

A word load (LDR) should generate a word aligned address. An address offset of 0 or 2 from a word boundary will
cause the data to be rotated into the register so that the addressed byte occupies bits 31 through 24. This means
that half-words accessed at these offsets will be correctly loaded into bits 16 through 31 of the register. A shift
operation is then required to move (and optionally sign extend) the data into the bottom 16 bits. An address offset of
1 or 3 from a word boundary will cause the data to be rotated into the register so that the addressed byte occupies
bits 15 through 8.

A word store (STR) should generate a word aligned address. The word presented to the data bus is not affected if the
address is not word aligned. That is, bit 31 of the register being stored always appears on data bus output 31.

3-30
S3C2410A                           ARM INSTRUCTION SET

USE OF R15

Write-back must not be specified if R15 is specified as the base register (Rn). When using R15 as the base register
you must remember it contains an address 8 bytes on from the address of the current instruction.

R15 must not be specified as the register offset (Rm).

When R15 is the source register (Rd) of a register store (STR) instruction, the stored value will be address of the
instruction plus 12.

Restriction on the use of base register

When configured for late aborts, the following example code is difficult to unwind as the base register, Rn, gets
updated before the abort handler starts. Sometimes it may be impossible to calculate the initial value.

After an abort, the following example code is difficult to unwind as the base register, Rn, gets updated before the
abort handler starts. Sometimes it may be impossible to calculate the initial value.

EXAMPLE:               R0,[R1],R1
                  LDR

Therefore a post-indexed LDR or STR where Rm is the same register as Rn should not be used.

DATA ABORTS

A transfer to or from a legal address may cause problems for a memory management system. For instance, in a
system which uses virtual memory the required data may be absent from main memory. The memory manager can
signal a problem by taking the processor ABORT input HIGH whereupon the Data Abort trap will be taken. It is up to
the system software to resolve the cause of the problem, then the instruction can be restarted and the original
program continued.

INSTRUCTION CYCLE TIMES

Normal LDR instructions take 1S + 1N + 1I and LDR PC take 2S + 2N +1I incremental cycles, where S,N and I are
defined as sequential (S-cycle), non-sequential (N-cycle), and internal (I-cycle), respectively. STR instructions take
2N incremental cycles to execute.

                                                                                             3-31
ARM INSTRUCTION SET                                                                           S3C2410A

ASSEMBLER SYNTAX

{cond}{B}{T} Rd,


where:

LDR                  Load from memory into a register
STR
{cond}               Store from a register into memory
{B}
{T}                  Two-character condition mnemonic. See Table 3-2.

Rd                   If B is present then byte transfer, otherwise word transfer
Rn and Rm
                     If T is present the W bit will be set in a post-indexed instruction, forcing non-
                     privileged mode for the transfer cycle. T is not allowed when a pre-indexed
                     addressing mode is specified or implied.

                     An expression evaluating to a valid register number.

                     Expressions evaluating to a register number. If Rn is R15 then the assembler will
                     subtract 8 from the offset value to allow for ARM920T pipelining. In this case base write-
                     back should not be specified.

can be:     An expression which generates an address:
1                    The assembler will attempt to generate an instruction using the PC as a base and a
                     corrected immediate offset to address the location given by evaluating the expression.
2                    This will be a PC relative, pre-indexed address. If the address is out of range, an error
                     will be generated.
3
              A pre-indexed addressing specification:
{!}
                     [Rn]                       offset of zero

                     [Rn,<#expression>]{!}                      offset of bytes
                                                                offset of +/- contents of index register, shifted
                     [Rn,{+/-}Rm{,}]{!}                  by

                     A post-indexed addressing specification:

                     [Rn],<#expression>                         offset of bytes

                     [Rn],{+/-}Rm{,}                     offset of +/- contents of index register, shifted as

                                                                by .

                     General shift operation (see data processing instructions) but you cannot specify the shift
                     amount by a register.

                     Writes back the base register (set the W bit) if! is present.

3-32
S3C2410A                                    ARM INSTRUCTION SET

EXAMPLES                  R1,[R2,R4]!       ; Store R1 at R2+R4 (both of which are registers)
                                            ; and write back address to R2.
                  STR     R1,[R2],R4        ; Store R1 at R2 and write back R2+R4 to R2.
                          R1,[R2,#16]       ; Load R1 from contents of R2+16, but don't write back.
                  STR     R1,[R2,R3,LSL#2]  ; Load R1 from contents of R2+R3*4.
                  LDR     R1,[R6,#5]        ; Conditionally load byte at R6+5 into
                  LDR                       ; R1 bits 0 to 7, filling bits 8 to 31 with zeros.
                  LDREQB  R1,PLACE          ; Generate PC relative offset to address PLACE.

                  STR
                  PLACE

                                            3-33
ARM INSTRUCTION SET                                                                      S3C2410A

HALFWORD AND SIGNED DATA TRANSFER (LDRH/STRH/LDRSB/LDRSH)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-16.

These instructions are used to load or store half-words of data and also load sign-extended bytes or half-words of
data. The memory address used in the transfer is calculated by adding an offset to or subtracting an offset from a
base register. The result of this calculation may be written back into the base register if auto-indexing is required.

      31        28 27 25 24 23 22 21 20 19      16 15      12 11   876543                0

          Cond       000 P U 0 W L          Rn         Rd         0000 1 S H 1       Rm

                     [3:0] Offset Register

                     [6][5] S H
                     0 0 = SWP instruction
                     0 1 = Unsigned halfword
                     1 1 = Signed byte
                     1 1 = Signed halfword

                     [15:12] Source/Destination Register

                     [19:16] Base Register

                     [20] Load/Store
                     0 = Store to memory
                     1 = Load from memory

                     [21] Write-back
                     0 = No write-back
                     1 = Write address into base

                     [23] Up/Down
                     0 = Down: subtract offset from base
                     1 = Up: add offset to base

                     [24] Pre/Post Indexing
                     0 = Post: add/subtract offset after transfer
                     1 = Pre: add/subtract offset bofore transfer

                     [31:28] Condition Field

                Figure 3-16. Halfword and Signed Data Transfer with Register Offset

3-34
S3C2410A                                                          ARM INSTRUCTION SET

31              28 27 25 24 23 22 21 20 19      16 15      12 11  876543                 0

          Cond  000 P U 1 W L               Rn         Rd         Offset 1 S H 1 Offset

                                                   [3:0] Immediate Offset (Low Nibble)

                                                   [6][5] S H
                                                         0 0 = SWP instruction
                                                         0 1 = Unsigned halfword
                                                         1 1 = Signed byte
                                                         1 1 = Signed halfword

                                                   [11:8] Immediate Offset (High Nibble)

                                                   [15:12] Source/Destination Register

                                                   [19:16] Base Register

                                                   [20] Load/Store
                                                        0 = Store to memory
                                                        1 = Load from memory

                                                   [21] Write-back
                                                        0 = No write-back
                                                        1 = Write address into base

                                                   [23] Up/Down
                                                        0 = Down: subtract offset from base
                                                        1 = Up: add offset to base

                                                   [24] Pre/Post Indexing
                                                        0 = Post: add/subtract offset after transfer
                                                        1 = Pre: add/subtract offset bofore transfer

                                                   [31:28] Condition Field

            Figure 3-17. Halfword and Signed Data Transfer with Immediate Offset and Auto-Indexing

OFFSETS AND AUTO-INDEXING

The offset from the base may be either a 8-bit unsigned binary immediate value in the instruction, or a second
register. The 8-bit offset is formed by concatenating bits 11 to 8 and bits 3 to 0 of the instruction word, such that bit
11 becomes the MSB and bit 0 becomes the LSB. The offset may be added to (U = 1) or subtracted from (U = 0) the
base register Rn. The offset modification may be performed either before (pre-indexed, P = 1) or after (post-indexed,
P = 0) the base register is used as the transfer address.

The W bit gives optional auto-increment and decrement addressing modes. The modified base value may be written
back into the base (W = 1), or the old base may be kept (W = 0). In the case of post-indexed addressing, the write
back bit is redundant and is always set to zero, since the old base value can be retained if necessary by setting the
offset to zero. Therefore post-indexed data transfers always write back the modified base.

The Write-back bit should not be set high (W = 1) when post-indexed addressing is selected.

                                                                                            3-35
ARM INSTRUCTION SET  S3C2410A

HALFWORD LOAD AND STORES

Setting S=0 and H=1 may be used to transfer unsigned Half-words between an ARM920T register and memory.

The action of LDRH and STRH instructions is influenced by the BIGEND control signal. The two possible
configurations are described in the section below.

Signed byte and halfword loads

The S bit controls the loading of sign-extended data. When S = 1 the H bit selects between Bytes (H=0) and Half-
words (H = 1). The L bit should not be set low (Store) when Signed (S = 1) operations have been selected.

The LDRSB instruction loads the selected Byte into bits 7 to 0 of the destination register and bits 31 to 8 of the
destination register are set to the value of bit 7, the sign bit.

The LDRSH instruction loads the selected Half-word into bits 15 to 0 of the destination register and bits 31 to 16 of
the destination register are set to the value of bit 15, the sign bit.

The action of the LDRSB and LDRSH instructions is influenced by the BIGEND control signal. The two possible
configurations are described in the following section.

Endianness and byte/halfword selection

Little-Endian Configuration
A signed byte load (LDRSB) expects data on data bus inputs 7 through to 0 if the supplied address is on a word
boundary, on data bus inputs 15 through to 8 if it is a word address plus one byte, and so on. The selected byte is
placed in the bottom 8 bit of the destination register, and the remaining bits of the register are filled with the sign bit,
bit 7 of the byte. Please see Figure 2-2.

A halfword load (LDRSH or LDRH) expects data on data bus inputs 15 through to 0 if the supplied address is on a
word boundary and on data bus inputs 31 through to 16 if it is a halfword boundary, (A[1] = 1).The supplied address
should always be on a halfword boundary. If bit 0 of the supplied address is HIGH then the ARM920T will load an
unpredictable value. The selected halfword is placed in the bottom 16 bits of the destination register. For unsigned
half-words (LDRH), the top 16 bits of the register are filled with zeros and for signed half-words (LDRSH) the top 16
bits are filled with the sign bit, bit 15 of the halfword.

A halfword store (STRH) repeats the bottom 16 bits of the source register twice across the data bus outputs 31
through to 0. The external memory system should activate the appropriate halfword subsystem to store the data.
Note that the address must be halfword aligned, if bit 0 of the address is HIGH this will cause unpredictable
behaviour.

3-36
S3C2410A  ARM INSTRUCTION SET

Big-Endian Configuration
A signed byte load (LDRSB) expects data on data bus inputs 31 through to 24 if the supplied address is on a word
boundary, on data bus inputs 23 through to 16 if it is a word address plus one byte, and so on. The selected byte is
placed in the bottom 8 bit of the destination register, and the remaining bits of the register are filled with the sign bit,
bit 7 of the byte. Please see Figure 2-1.

A halfword load (LDRSH or LDRH) expects data on data bus inputs 31 through to 16 if the supplied address is on a
word boundary and on data bus inputs 15 through to 0 if it is a halfword boundary, (A[1]=1). The supplied address
should always be on a halfword boundary. If bit 0 of the supplied address is HIGH then the ARM920T will load an
unpredictable value. The selected halfword is placed in the bottom 16 bits of the destination register. For unsigned
half-words (LDRH), the top 16 bits of the register are filled with zeros and for signed half-words (LDRSH) the top 16
bits are filled with the sign bit, bit 15 of the halfword.

A halfword store (STRH) repeats the bottom 16 bits of the source register twice across the data bus outputs 31
through to 0. The external memory system should activate the appropriate halfword subsystem to store the data.
Note that the address must be halfword aligned, if bit 0 of the address is HIGH this will cause unpredictable
behaviour.

USE OF R15

Write-back should not be specified if R15 is specified as the base register (Rn). When using R15 as the base
register you must remember it contains an address 8 bytes on from the address of the current instruction.

R15 should not be specified as the register offset (Rm).

When R15 is the source register (Rd) of a Half-word store (STRH) instruction, the stored address will be address of
the instruction plus 12.

DATA ABORTS

A transfer to or from a legal address may cause problems for a memory management system. For instance, in a
system which uses virtual memory the required data may be absent from the main memory. The memory manager
can signal a problem by taking the processor ABORT input HIGH whereupon the Data Abort trap will be taken. It is
up to the system software to resolve the cause of the problem, then the instruction can be restarted and the original
program continued.

INSTRUCTION CYCLE TIMES

Normal LDR(H,SH,SB) instructions take 1S + 1N + 1I. LDR(H,SH,SB) PC take 2S + 2N + 1I incremental cycles.
S,N and I are defined as sequential (S-cycle), non-sequential (N-cycle), and internal (I-cycle), respectively. STRH
instructions take 2N incremental cycles to execute.

          3-37
ARM INSTRUCTION SET                                                                                       S3C2410A

ASSEMBLER SYNTAX

{cond} Rd,


LDR                  Load from memory into a register
STR                  Store from a register into memory
{cond}               Two-character condition mnemonic. See Table 3-2..
H                    Transfer halfword quantity
SB                   Load sign extended byte (Only valid for LDR)
SH                   Load sign extended halfword (Only valid for LDR)
Rd                   An expression evaluating to a valid register number.

can be:    An expression which generates an address:
1                    The assembler will attempt to generate an instruction using the PC as a base and a
                     corrected immediate offset to address the location given by evaluating the expression.
2                    This will be a PC relative, pre-indexed address. If the address is out of range, an error will
3                    be generated.
4
{!}                  A pre-indexed addressing specification:   offset of zero
                     [Rn]                                      offset of bytes
                     [Rn,<#expression>]{!}                     offset of +/- contents of index register
                     [Rn,{+/-}Rm]{!}

                     A post-indexed addressing specification:

                     [Rn],<#expression>                        offset of bytes

                     [Rn],{+/-}Rm                              offset of +/- contents of index register.

                     Rn and Rm are expressions evaluating to a register number. If Rn is R15 then the
                     assembler will subtract 8 from the offset value to allow for ARM920T pipelining. In this
                     case base write-back should not be specified.

                     Writes back the base register (set the W bit) if ! is present.

3-38
S3C2410A                                                          ARM INSTRUCTION SET

EXAMPLES

          LDRH     R1,[R2,-R3]!   ; Load R1 from the contents of the halfword address

          STRH                    ; contained in R2-R3 (both of which are registers)
          LDRSB
                                  ; and write back address to R2
          LDRNESH
                   R3,[R4,#14]    ; Store the halfword in R3 at R14+14 but don't write back.
          HERE
          STRH     R8,[R2],#-223  ; Load R8 with the sign extended contents of the byte
          FRED
                                  ; address contained in R2 and write back R2-223 to R2.

                   R11,[R0]       ; Conditionally load R11 with the sign extended contents

                                  ; of the halfword address contained in R0.

                                  ; Generate PC relative offset to address FRED.

                   R5,[PC,#(FRED-HERE-8)] ; Store the halfword in R5 at address FRED

                                                                                         3-39
ARM INSTRUCTION SET                                                   S3C2410A

BLOCK DATA TRANSFER (LDM, STM)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-18.

Block data transfer instructions are used to load (LDM) or store (STM) any subset of the currently visible registers.
They support all possible stacking modes, maintaining full or empty stacks which can grow up or down memory, and
are very efficient instructions for saving or restoring context, or for moving large blocks of data around main memory.

THE REGISTER LIST

The instruction can cause the transfer of any registers in the current bank (and non-user mode programs can also
transfer to and from the user bank, see below). The register list is a 16-bit field in the instruction, with each bit
corresponding to a register. A 1 in bit 0 of the register field will cause R0 to be transferred, a 0 will cause it not to be
transferred; similarly bit 1 controls the transfer of R1, and so on.

Any subset of the registers, or all the registers, may be specified. The only restriction is that the register list should
not be empty.

Whenever R15 is stored to memory the stored value is the address of the STM instruction plus 12.

      31        28 27 25 24 23 22 21 20 19      16 15                 0

          Cond       100 P U S W L          Rn         Register list

                              [19:16] Base Register

                              [20] Load/Store Bit
                               0 = Store to memory
                               1 = Load from memory

                              [21] Write-back Bit
                               0 = No write-back
                               1 = Write address into base

                              [22] PSR & Force User Bit
                               0 = Do not load PSR or user mode
                               1 = Load PSR or force user mode

                              [23] Up/Down Bit
                               0 = Down: subtract offset from base
                               1 = Up: add offset to base

                              [24] Pre/Post Indexing Bit
                               0 = Post: add offset after transfer
                               1 = Pre: add offset bofore transfer

                              [31:28] Condition Field

                     Figure 3-18. Block Data Transfer Instructions

3-40
S3C2410A                                                      ARM INSTRUCTION SET

ADDRESSING MODES

The transfer addresses are determined by the contents of the base register (Rn), the pre/post bit (P) and the up/
down bit (U). The registers are transferred in the order lowest to highest, so R15 (if in the list) will always be
transferred last. The lowest register also gets transferred to/from the lowest memory address. By way of illustration,
consider the transfer of R1, R5 and R7 in the case where Rn = 0x1000 and write back of the modified base is
required (W = 1). Figure 3.19-22 show the sequence of register transfers, the addresses used, and the value of Rn
after the instruction has completed.

In all cases, had write back of the modified base not been required (W = 0), Rn would have retained its initial value of
0x1000 unless it was also in the transfer list of a load multiple register instruction, when it would have been
overwritten with the loaded value.

ADDRESS ALIGNMENT

The address should normally be a word aligned quantity and non-word aligned addresses do not affect the
instruction. However, the bottom 2 bits of the address will appear on A[1:0] and might be interpreted by the memory
system.

                  0x100C                              0x100C

          Rn      0x1000            R1                0x1000

                            0x0FF4                0x0FF4
              1                     2

                  0x100C Rn                           0x100C

                                    R7

              R5                    R5

              R1  0x1000            R1                0x1000

                            0x0FF4                0x0FF4
              3                     4

              Figure 3-19. Post-Increment Addressing

                                                              3-41
ARM INSTRUCTION SET                                                       S3C2410A

                             0x100C                              0x100C

                                                   R1

                     Rn      0x1000                              0x1000

                                        0x0FF4                   0x0FF4
                         1                         2

                                        0x100C Rn  R7            0x100C
                         R5
                         R1                        R5

                                        0x1000     R1

                                                                 0x1000

                                       0x0FF4                    0x0FF4
                         3                         4

                         Figure 3-20. Pre-Increment Addressing

                             0x100C                              0x100C

                     Rn      0x1000                               0x1000

                                       0x0FF4      R1
                         1                                        0x0FF4

                                       0x100C      2

                                                                  0x100C

                             0x1000                R7            0x1000

                         R5                        R5
                         R1                        R1

                             0x0FF4            Rn                0x0FF4

                         3                         4

                         Figure 3-21. Post-Decrement Addressing

3-42
S3C2410A                                            ARM INSTRUCTION SET

                  0x100C                    0x100C

          Rn      0x1000                    0x1000

                            0x0FF4      R1  0x0FF4
              1
                                        2
                            0x100C
                                            0x100C

                  0x1000                    0x1000

                                        R7

              R5                        R5

              R1  0x0FF4            Rn  R1  0x0FF4

              3                         4

                                                 Figure 3-22. Pre-Decrement Addressing

USE OF THE S BIT

When the S bit is set in a LDM/STM instruction its meaning depends on whether or not R15 is in the transfer list and
on the type of instruction. The S bit should only be set if the instruction is to execute in a privileged mode.

LDM with R15 in Transfer List and S Bit Set (Mode Changes)
If the instruction is a LDM then SPSR_ is transferred to CPSR at the same time as R15 is loaded.

STM with R15 in Transfer List and S Bit Set (User Bank Transfer)
The registers transferred are taken from the User bank rather than the bank corresponding to the current mode. This
is useful for saving the user state on process switches. Base write-back should not be used when this mechanism is
employed.

R15 not in List and S Bit Set (User Bank Transfer)
For both LDM and STM instructions, the User bank registers are transferred rather than the register bank
corresponding to the current mode. This is useful for saving the user state on process switches. Base write-back
should not be used when this mechanism is employed.

When the instruction is LDM, care must be taken not to read from a banked register during the following cycle
(inserting a dummy instruction such as MOV R0, R0 after the LDM will ensure safety).

USE OF R15 AS THE BASE

R15 should not be used as the base register in any LDM or STM instruction.

                                                    3-43
ARM INSTRUCTION SET  S3C2410A

INCLUSION OF THE BASE IN THE REGISTER LIST

When write-back is specified, the base is written back at the end of the second cycle of the instruction. During a
STM, the first register is written out at the start of the second cycle. A STM which includes storing the base, with the
base as the first register to be stored, will therefore store the unchanged value, whereas with the base second or
later in the transfer order, will store the modified value. A LDM will always overwrite the updated base if the base is in
the list.

DATA ABORTS

Some legal addresses may be unacceptable to a memory management system, and the memory manager can
indicate a problem with an address by taking the ABORT signal HIGH. This can happen on any transfer during a
multiple register load or store, and must be recoverable if ARM920T is to be used in a virtual memory system.

Abort during STM Instructions
If the abort occurs during a store multiple instruction, ARM920T takes little action until the instruction completes,
whereupon it enters the data abort trap. The memory manager is responsible for preventing erroneous writes to the
memory. The only change to the internal state of the processor will be the modification of the base register if write-
back was specified, and this must be reversed by software (and the cause of the abort resolved) before the
instruction may be retried.

Aborts during LDM Instructions
When ARM920T detects a data abort during a load multiple instruction, it modifies the operation of the instruction to
ensure that recovery is possible.

Overwriting of registers stops when the abort happens. The aborting load will not take place but earlier ones may
     have overwritten registers. The PC is always the last register to be written and so will always be preserved.

The base register is restored, to its modified value if write-back was requested. This ensures recoverability in the
     case where the base register is also in the transfer list, and may have been overwritten before the abort occurred.

The data abort trap is taken when the load multiple has completed, and the system software must undo any base
modification (and resolve the cause of the abort) before restarting the instruction.

INSTRUCTION CYCLE TIMES

Normal LDM instructions take nS + 1N + 1I and LDM PC takes (n+1)S + 2N + 1I incremental cycles, where S,N and
I are defined as sequential (S-cycle), non-sequential (N-cycle), and internal (I-cycle), respectively. STM instructions
take (n-1)S + 2N incremental cycles to execute, where n is the number of words transferred.

3-44
S3C2410A                                                          ARM INSTRUCTION SET

ASSEMBLER SYNTAX

{cond} Rn{!},{^}

where:

{cond}                Two character condition mnemonic. See Table 3-2.
Rn                    An expression evaluating to a valid register number
               A list of registers and register ranges enclosed in {} (e.g. {R0,R2-R7,R10}).
{!}                   If present requests write-back (W = 1), otherwise W = 0.
{^}                   If present set S bit to load the CPSR along with the PC, or force transfer of user bank
                      when in privileged mode.

Addressing Mode Names

There are different assembler mnemonics for each of the addressing modes, depending on whether the instruction is
being used to support stacks or for other purposes. The equivalence between the names and the values of the bits in
the instruction are shown in the following table 3-6.

                      Table 3-6. Addressing Mode Names

                Name   Stack   Other                       L bit  P bit  U bit
Pre-Increment Load    LDMED   LDMIB                          1      1      1
Post-Increment Load   LDMFD   LDMIA                          1      0      1
Pre-Decrement Load    LDMEA   LDMDB                          1      1      0
Post-Decrement Load   LDMFA   LDMDA                          1      0      0
Pre-Increment Store   STMFA   STMIB                          0      1      1
Post-Increment Store  STMEA   STMIA                          0      0      1
Pre-Decrement Store   STMFD   STMDB                          0      1      0
Post-Decrement Store  STMED   STMDA                          0      0      0

FD, ED, FA, EA define pre/post indexing and the up/down bit by reference to the form of stack required. The F and E
refer to a "full" or "empty" stack, i.e. whether a pre-index has to be done (full) before storing to the stack. The A and
D refer to whether the stack is ascending or descending. If ascending, a STM will go up and LDM down, if
descending, vice-versa.

IA, IB, DA, DB allow control when LDM/STM are not being used for stacks and simply mean Increment After,
Increment Before, Decrement After, Decrement Before.

                                                                                                               3-45
ARM INSTRUCTION SET                                                              S3C2410A

EXAMPLES                 SP!,{R0,R1,R2}   ; Unstack 3 registers.
                         R0,{R0-R15}      ; Save all registers.
                  LDMFD  SP!,{R15}        ; R15  (SP), CPSR unchanged.
                  STMIA  SP!,{R15}^       ; R15  (SP), CPSR <- SPSR_mode
                  LDMFD                   ; (allowed only in privileged modes).
                  LDMFD  R13,{R0-R14}^    ; Save user mode regs on stack
                                          ; (allowed only in privileged modes).
                  STMFD

These instructions may be used to save state on subroutine entry, and restore it efficiently on return to the calling
routine:

      STMED              SP!,{R0-R3,R14}  ; Save R0 to R3 to use as workspace
                                          ; and R14 for returning.
      BL                 somewhere        ; This nested call will overwrite R14
      LDMED              SP!,{R0-R3,R15}  ; Restore workspace and return.

3-46
S3C2410A                                                                   ARM INSTRUCTION SET

SINGLE DATA SWAP (SWP)

31        28 27  23 22 21 20 19      16 15      12 11            87        43      0

    Cond         00010 B 00      Rn         Rd             0000      1001      Rm

                             [3:0] Source Register

                             [15:12] Destination Register

                             [19:16] Base Register

                             [22] Byte/Word Bit
                             0 = Swap word quantity
                             1 = Swap word quantity

                             [31:28] Condition Field

                                                         Figure 3-23. Swap Instruction

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-23.

The data swap instruction is used to swap a byte or word quantity between a register and external memory. This
instruction is implemented as a memory read followed by a memory write which are "locked" together (the processor
cannot be interrupted until both operations have completed, and the memory manager is warned to treat them as
inseparable). This class of instruction is particularly useful for implementing software semaphores.

The swap address is determined by the contents of the base register (Rn). The processor first reads the contents of
the swap address. Then it writes the contents of the source register (Rm) to the swap address, and stores the old
memory contents in the destination register (Rd). The same register may be specified as both the source and
destination.

The LOCK output goes HIGH for the duration of the read and write operations to signal to the external memory
manager that they are locked together, and should be allowed to complete without interruption. This is important in
multi-processor systems where the swap instruction is the only indivisible instruction which may be used to
implement semaphores; control of the memory must not be removed from a processor while it is performing a locked
operation.

BYTES AND WORDS

This instruction class may be used to swap a byte (B = 1) or a word (B = 0) between an ARM920T register and
memory. The SWP instruction is implemented as a LDR followed by a STR and the action of these is as described
in the section on single data transfers. In particular, the description of Big and Little Endian configuration applies to
the SWP instruction.

                                                                                      3-47
ARM INSTRUCTION SET                                                               S3C2410A

USE OF R15
Do not use R15 as an operand (Rd, Rn or Rs) in a SWP instruction.

DATA ABORTS
If the address used for the swap is unacceptable to a memory management system, the memory manager can flag
the problem by driving ABORT HIGH. This can happen on either the read or the write cycle (or both), and in either
case, the Data Abort trap will be taken. It is up to the system software to resolve the cause of the problem, then the
instruction can be restarted and the original program continued.

INSTRUCTION CYCLE TIMES
Swap instructions take 1S + 2N +1I incremental cycles to execute, where S,N and I are defined as sequential
(S-cycle), non-sequential, and internal (I-cycle), respectively.

ASSEMBLER SYNTAX

{cond}{B} Rd,Rm,[Rn]

{cond}               Two-character condition mnemonic. See Table 3-2.
{B}                  If B is present then byte transfer, otherwise word transfer
Rd,Rm,Rn             Expressions evaluating to valid register numbers

Examples

          SWP        R0,R1,[R2]  ; Load R0 with the word addressed by R2, and
                     R2,R3,[R4]  ; store R1 at R2.
          SWPB       R0,R0,[R1]  ; Load R2 with the byte addressed by R4, and
                                 ; store bits 0 to 7 of R3 at R4.
          SWPEQ                  ; Conditionally swap the contents of the
                                 ; word addressed by R1 with R0.

3-48
S3C2410A                                                                  ARM INSTRUCTION SET

SOFTWARE INTERRUPT (SWI)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-24, below.

31              28 27        24 23                                        0

          Cond         1111         Comment Field (Ignored by Processor)

                                    [31:28] Condition Field

                                               Figure 3-24. Software Interrupt Instruction

The software interrupt instruction is used to enter Supervisor mode in a controlled manner. The instruction causes
the software interrupt trap to be taken, which effects the mode change. The PC is then forced to a fixed value (0x08)
and the CPSR is saved in SPSR_svc. If the SWI vector address is suitably protected (by external memory
management hardware) from modification by the user, a fully protected operating system may be constructed.

RETURN FROM THE SUPERVISOR

The PC is saved in R14_svc upon entering the software interrupt trap, with the PC adjusted to point to the word after
the SWI instruction. MOVS PC,R14_svc will return to the calling program and restore the CPSR.

Note that the link mechanism is not re-entrant, so if the supervisor code wishes to use software interrupts within
itself it must first save a copy of the return address and SPSR.

COMMENT FIELD

The bottom 24 bits of the instruction are ignored by the processor, and may be used to communicate information to
the supervisor code. For instance, the supervisor may look at this field and use it to index into an array of entry
points for routines which perform the various supervisor functions.

INSTRUCTION CYCLE TIMES

Software interrupt instructions take 2S + 1N incremental cycles to execute, where S and N are defined as sequential
(S-cycle) and non-sequential (N-cycle).

                                                                                                                 3-49
ARM INSTRUCTION SET                                                                                 S3C2410A

ASSEMBLER SYNTAX

SWI{cond}

{cond}                    Two character condition mnemonic, Table 3-2.
              Evaluated and placed in the comment field (which is ignored by ARM920T).

Examples

              SWI          ReadC              ; Get next character from read stream.
              SWI          WriteI+"k"         ; Output a "k" to the write stream.
              SWINE        0                  ; Conditionally call supervisor with 0 in comment field.

Supervisor code
The previous examples assume that suitable supervisor code exists, for instance:

              0x08 B Supervisor               ; SWI entry point
                                              ; Addresses of supervisor routines
              EntryTable

              DCD ZeroRtn

              DCD ReadCRtn

              DCD WriteIRtn

                        EQU 0

              Zero

ReadC         EQU 256
WriteI
              EQU 512

              Supervisor                      ; SWI has routine required in bits 8-23 and data (if any) in
                                              ; bits 0-7. Assumes R13_svc points to a suitable stack
              STMFD        R13,{R0-R2,R14}    ; Save work registers and return address.
              LDR          R0,[R14,#-4]       ; Get SWI instruction.
              BIC          R0,R0,#0xFF000000  ; Clear top 8 bits.
              MOV          R1,R0,LSR#8        ; Get routine offset.
              ADR          R2,EntryTable      ; Get start address of entry table.
              LDR          R15,[R2,R1,LSL#2]  ; Branch to appropriate routine.
              WriteIRtn                       ; Enter with character in R0 bits 0-7.
                           R13,{R0-R2,R15}^
                                           ; Restore workspace and return,
                                              ; restoring processor mode and flags.
              LDMFD

3-50
S3C2410A                                                                      ARM INSTRUCTION SET

COPROCESSOR DATA OPERATIONS (CDP)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-25.

This class of instruction is used to tell a coprocessor to perform some internal operation. No result is communicated
back to ARM920T, and it will not wait for the operation to complete. The coprocessor could contain a queue of such
instructions awaiting execution, and their execution can overlap other activity, allowing the coprocessor and
ARM920T to perform independent tasks in parallel.

COPROCESSOR INSTRUCTIONS

The S3C2410A, unlike some other ARM-based processors, does not have an external coprocessor interface. It does
not have a on-chip coprocessor also.

So then all coprocessor instructions will cause the undefined instruction trap to be taken on the S3C2410A. These
coprocessor instructions can be emulated by the undefined trap handler. Even though external coprocessor can not
be connected to the S3C2410A, the coprocessor instructions are still described here in full for completeness.
(Remember that any external coprocessor described in this section is a software emulation.)

31              28 27        24 23   20 19       16 15       12 11            87 543    0

          Cond         1110  CP Opc         CRn         CRd         Cp#       Cp 0 CRm

                                    [3:0] Coprocessor operand register
                                    [7:5] Coprocessor information
                                    [11:8] Coprocessor number
                                    [15:12] Coprocessor destination register
                                    [19:16] Coprocessor operand register
                                    [23:20] Coprocessor operation code
                                    [31:28] Condition Field

                                        Figure 3-25. Coprocessor Data Operation Instruction

Only bit 4 and bits 24 to 31 The coprocessor fields are significant to ARM920T. The remaining bits are used by
coprocessors. The above field names are used by convention, and particular coprocessors may redefine the use of
all fields except CP# as appropriate. The CP# field is used to contain an identifying number (in the range 0 to 15) for
each coprocessor, and a coprocessor will ignore any instruction which does not contain its number in the CP# field.

The conventional interpretation of the instruction is that the coprocessor should perform an operation specified in the
CP Opc field (and possibly in the CP field) on the contents of CRn and CRm, and place the result in CRd.

                                                                                           3-51
ARM INSTRUCTION SET                                                  S3C2410A

INSTRUCTION CYCLE TIMES

Coprocessor data operations take 1S + bI incremental cycles to execute, where b is the number of cycles spent in
the coprocessor busy-wait loop.

S and I are defined as sequential (S-cycle) and internal (I-cycle).

Assembler syntax

CDP{cond} p#,,cd,cn,cm{,}

{cond}                   Two character condition mnemonic. See Table 3-2.
p#                       The unique number of the required coprocessor
            Evaluated to a constant and placed in the CP Opc field
cd, cn and cm            Evaluate to the valid coprocessor register numbers CRd, CRn and CRm respectively
            Where present is evaluated to a constant and placed in the CP field

EXAMPLES                 p1,10,c1,c2,c3   ; Request coproc 1 to do operation 10
                  CDP    p2,5,c1,c2,c3,2  ; on CR2 and CR3, and put the result in CR1.
                  CDPEQ                   ; If Z flag is set request coproc 2 to do operation 5 (type 2)
                                          ; on CR2 and CR3, and put the result in CR1.

3-52
S3C2410A                                                                    ARM INSTRUCTION SET

COPROCESSOR DATA TRANSFERS (LDC, STC)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction encoding is shown in Figure 3-26.

This class of instruction is used to load (LDC) or store (STC) a subset of a coprocessors's registers directly to
memory. ARM920T is responsible for supplying the memory address, and the coprocessor supplies or accepts the
data and controls the number of words transferred.

31              28 27 25 24 23 22 21 20 19      16 15       12 11       87          0

          Cond  110 P U N W L               Rn         CRd         CP#      Offset

                    [7:0] Unsigned 8 Bit Immediate Offset

                    [11:8] Coprocessor Number

                    [15:12] Coprocessor Source/Destination Register

                    [19:16] Base Register

                    [20] Load/Store Bit
                    0 = Store to memory
                    1 = Load from memory

                    [21] Write-back Bit
                    0 = No write-back
                    1 = Write address into base

                    [22] Transfer Length

                    [23] Up/Down Bit
                    0 = Down: subtract offset from base
                    1 = Up: add offset to base

                    [24] Pre/Post Indexing Bit
                    0 = Post: add offset after transfer
                    1 = Pre: add offset before transfer

                    [31:28] Condition Field

                Figure 3-26. Coprocessor Data Transfer Instructions

                                                                                       3-53
ARM INSTRUCTION SET                                                                                 S3C2410A

THE COPROCESSOR FIELDS

The CP# field is used to identify the coprocessor which is required to supply or accept the data, and a coprocessor
will only respond if its number matches the contents of this field.

The CRd field and the N bit contain information for the coprocessor which may be interpreted in different ways by
different coprocessors, but by convention CRd is the register to be transferred (or the first register where more than
one is to be transferred), and the N bit is used to choose one of two transfer length options. For instance N=0 could
select the transfer of a single register, and N = 1 could select the transfer of all the registers for context switching.

ADDRESSING MODES

ARM920T is responsible for providing the address used by the memory system for the transfer, and the addressing
modes available are a subset of those used in single data transfer instructions. Note, however, that the immediate
offsets are 8 bits wide and specify word offsets for coprocessor data transfers, whereas they are 12 bits wide and
specify byte offsets for single data transfers.

The 8-bit unsigned immediate offset is shifted left 2 bits and either added to (U = 1) or subtracted from (U = 0) the
base register (Rn); this calculation may be performed either before (P = 1) or after (P = 0) the base is used as the
transfer address. The modified base value may be overwritten back into the base register (if W = 1), or the old value
of the base may be preserved (W = 0). Note that post-indexed addressing modes require explicit setting of the W bit,
unlike LDR and STR which always write-back when post-indexed.

The value of the base register, modified by the offset in a pre-indexed instruction, is used as the address for the
transfer of the first word. The second word (if more than one is transferred) will go to or come from an address one
word (4 bytes) higher than the first transfer, and the address will be incremented by one word for each subsequent
transfer.

ADDRESS ALIGNMENT

The base address should normally be a word aligned quantity. The bottom 2 bits of the address will appear on A[1:0]
and might be interpreted by the memory system.

Use of R15

If Rn is R15, the value used will be the address of the instruction plus 8 bytes. Base write-back to R15 must not be
specified.

DATA ABORTS

If the address is legal but the memory manager generates an abort, the data trap will be taken. The write-back of the
modified base will take place, but all other processor state will be preserved. The coprocessor is partly responsible
for ensuring that the data transfer can be restarted after the cause of the abort has been resolved, and must ensure
that any subsequent actions it undertakes can be repeated when the instruction is retried.

Instruction cycle times

Coprocessor data transfer instructions take (n-1)S + 2N + bI incremental cycles to execute, where:

n                        The number of words transferred.

b                        The number of cycles spent in the coprocessor busy-wait loop.

S, N and I are defined as sequential (S-cycle), non-sequential (N-cycle), and internal (I-cycle), respectively.

3-54
S3C2410A                                                                       ARM INSTRUCTION SET

ASSEMBLER SYNTAX

{cond}{L} p#,cd,


LDC                       Load from memory to coprocessor
STC                       Store from coprocessor to memory
{L}                       When present perform long transfer (N = 1), otherwise perform short transfer (N = 0)
{cond}                    Two character condition mnemonic. See Table 3-2..
p#                        The unique number of the required coprocessor
cd                        An expression evaluating to a valid coprocessor register number that is placed in the
                          CRd field

                 can be:
1
                          An expression which generates an address:
2                         The assembler will attempt to generate an instruction using the PC as a base and a
3                         corrected immediate offset to address the location given by evaluating the expression.
                          This will be a PC relative, pre-indexed address. If the address is out of range, an error
                          will be generated

                          A pre-indexed addressing specification:

                          [Rn]                   offset of zero

                          [Rn,<#expression>]{!}  offset of bytes

                          A post-indexed addressing specification:

                          [Rn],<#expression      offset of bytes

                          {!}                    write back the base register (set the W bit) if! is present

                          Rn                     is an expression evaluating to a valid

                                                 ARM920T register number.

                                                                    NOTE
If Rn is R15, the assembler will subtract 8 from the offset value to allow for ARM920T pipelining.

EXAMPLES                       p1,c2,table       ; Load c2 of coproc 1 from address
                  LDC          p2,c3,[R5,#24]!   ; table, using a PC relative address.
                  STCEQL                         ; Conditionally store c3 of coproc 2
                                                 ; into an address 24 bytes up from R5,
                                                 ; write this address back to R5, and use
                                                 ; long transfer option (probably to store multiple words).

                                                                    NOTE

Although the address offset is expressed in bytes, the instruction offset field is in words. The assembler will
adjust the offset appropriately.

                                                                                                                     3-55
ARM INSTRUCTION SET                                                        S3C2410A

COPROCESSOR REGISTER TRANSFERS (MRC, MCR)

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2.. The
instruction encoding is shown in Figure 3-27.

This class of instruction is used to communicate information directly between ARM920T and a coprocessor. An
example of a coprocessor to ARM920T register transfer (MRC) instruction would be a FIX of a floating point value
held in a coprocessor, where the floating point number is converted into a 32-bit integer within the coprocessor, and
the result is then transferred to ARM920T register. A FLOAT of a 32 bit value in ARM920T register into a floating
point value within the coprocessor illustrates the use of ARM920T register to coprocessor transfer (MCR).

An important use of this instruction is to communicate control information directly from the coprocessor into the
ARM920T CPSR flags. As an example, the result of a comparison of two floating point values within a coprocessor
can be moved to the CPSR to control the subsequent flow of execution.

      31        28 27  24 23 21 20 19     16 15      12 11       87 543    0

          Cond         1110 CP Opc L CRn         Rd         CP#  CP 1 CRm

                       [3:0] Coprocessor Operand Register
                       [7:5] Coprocessor Information
                       [11:8] Coprocessor Number

                       [15:12] ARM Source/Destination Register
                       [19:16] Coprocessor Source/Destination Register
                       [20] Load/Store Bit
                       0 = Store to coprocessor
                       1 = Load from coprocessor
                       [21] Coprocessor Operation Mode
                       [31:28] Condition Field

                                      Figure 3-27. Coprocessor Register Transfer Instructions

THE COPROCESSOR FIELDS

The CP# field is used, as for all coprocessor instructions, to specify which coprocessor is being called upon.

The CP Opc, CRn, CP and CRm fields are used only by the coprocessor, and the interpretation presented here is
derived from convention only. Other interpretations are allowed where the coprocessor functionality is incompatible
with this one. The conventional interpretation is that the CP Opc and CP fields specify the operation the coprocessor
is required to perform, CRn is the coprocessor register which is the source or destination of the transferred
information, and CRm is a second coprocessor register which may be involved in some way which depends on the
particular operation specified.

3-56
S3C2410A                                                   ARM INSTRUCTION SET

TRANSFERS TO R15

When a coprocessor register transfer to ARM920T has R15 as the destination, bits 31, 30, 29 and 28 of the
transferred word are copied into the N, Z, C and V flags respectively. The other bits of the transferred word are
ignored, and the PC and other CPSR bits are unaffected by the transfer.

TRANSFERS FROM R15
A coprocessor register transfer from ARM920T with R15 as the source register will store the PC+12.

INSTRUCTION CYCLE TIMES

MRC instructions take 1S + (b+1)I +1C incremental cycles to execute, where S, I and C are defined as sequential
(S-cycle), internal (I-cycle), and coprocessor register transfer (C-cycle), respectively. MCR instructions take 1S + bI
+1C incremental cycles to execute, where b is the number of cycles spent in the coprocessor busy-wait loop.

ASSEMBLER SYNTAX

{cond} p#,,Rd,cn,cm{,}

MRC                    Move from coprocessor to ARM920T register (L=1)
MCR                    Move from ARM920T register to coprocessor (L=0)
{cond}                 Two character condition mnemonic. See Table 3-2
p#                     The unique number of the required coprocessor
          Evaluated to a constant and placed in the CP Opc field
Rd                     An expression evaluating to a valid ARM920T register number
cn and cm              Expressions evaluating to the valid coprocessor register numbers CRn and CRm
                       respectively
          Where present is evaluated to a constant and placed in the CP field

EXAMPLES               p2,5,R3,c5,c6    ; Request coproc 2 to perform operation 5
                  MRC                   ; on c5 and c6, and transfer the (single
                                        ; 32-bit word) result back to R3.
          MCR          p6,0,R4,c5,c6    ; Request coproc 6 to perform operation 0
          MRCEQ        p3,9,R3,c5,c6,2  ; on R4 and place the result in c6.
                                        ; Conditionally request coproc 3 to
                                        ; perform operation 9 (type 2) on c5 and
                                        ; c6, and transfer the result back to R3.

                                                                                                                   3-57
ARM INSTRUCTION SET                                        S3C2410A

UNDEFINED INSTRUCTION

The instruction is only executed if the condition is true. The various conditions are defined in Table 3-2. The
instruction format is shown in Figure 3-28.

      31        28 27 25 24                        543     0

          Cond       011     xxxxxxxxxxxxxxxxxxxx  1 xxxx

                                                     Figure 3-28. Undefined Instruction

If the condition is true, the undefined instruction trap will be taken.
Note that the undefined instruction mechanism involves offering this instruction to any coprocessors which may be
present, and all coprocessors must refuse to accept it by driving CPA and CPB HIGH.

INSTRUCTION CYCLE TIMES
This instruction takes 2S + 1I + 1N cycles, where S, N and I are defined as sequential (S-cycle), non-sequential (N-
cycle), and internal (I-cycle).

ASSEMBLER SYNTAX
The assembler has no mnemonics for generating this instruction. If it is adopted in the future for some specified use,
suitable mnemonics will be added to the assembler. Until such time, this instruction must not be used.

3-58
S3C2410A                                ARM INSTRUCTION SET

INSTRUCTION SET EXAMPLES

The following examples show ways in which the basic ARM920T instructions can combine to give efficient code.
None of these methods saves a great deal of execution time (although they may save some), mostly they just save
code.

USING THE CONDITIONAL INSTRUCTIONS

Using Conditionals for Logical OR

          CMP            Rn,#p          ; If Rn=p OR Rm=q THEN GOTO Label.
          BEQ            Label
          CMP            Rm,#q          ; If condition not satisfied try other test.
          BEQ            Label
                                        ; Test sign
This can be replaced by  Rn,#p          ; and 2's complement if necessary.
                         Rm,#q
                  CMP    Label          ; Multiply by 4,
                  CMPNE                 ; Test value,
                  BEQ                   ; Complete multiply by 5,
                                        ; Complete multiply by 6.
Absolute Value           Rn,#0
                         Rn,Rn,#0       ; Discrete test,
                  TEQ                   ; Range test
                  RSBMI                 ; IF Rc<= "" OR Rc=ASCII(127)
                                        ; THEN Rc:= "."
Multiplication by 4, 5 or 6 (Run Time)

          MOV            Rc,Ra,LSL#2
          CMP            Rb,#5
          ADDCS          Rc,Rc,Ra
          ADDHI          Rc,Rc,Ra

Combining Discrete and Range Tests

          TEQ            Rc,#127
          CMPNE          Rc,# " "-1
          MOVLS          Rc,# ""

                                                                                      3-59
ARM INSTRUCTION SET                                                                             S3C2410A

Division and Remainder

A number of divide routines for specific applications are provided in source form as part of the ANSI C library provided
with the ARM Cross Development Toolkit, available from your supplier. A short general purpose divide routine follows.

      MOV            Rcnt,#1                           ; Enter with numbers in Ra and Rb.
                                                       ; Bit to control the division.
Div1  CMP            Rb,#0x80000000                    ; Move Rb until greater than Ra.

      CMPCC Rb,Ra                                      ; Test for possible subtraction.
                                                       ; Subtract if ok,
      MOVCC Rb,Rb,ASL#1                                ; Put relevant bit into result
                                                       ; Shift control bit
      MOVCC Rcnt,Rcnt,ASL#1                            ; Halve unless finished.
                                                       ; Divide result in Rc, remainder in Ra.
      BCC            Div1

      MOV            Rc,#0

Div2  CMP            Ra,Rb

      SUBCS          Ra,Ra,Rb

      ADDCS          Rc,Rc,Rcnt

      MOVS           Rcnt,Rcnt,LSR#1

      MOVNE Rb,Rb,LSR#1

      BNE            Div2

Overflow Detection in the ARM920T

1. Overflow in unsigned multiply with a 32-bit result

      UMULL          Rd,Rt,Rm,Rn                       ; 3 to 6 cycles
      TEQ            Rt,#0                             ; +1 cycle and a register
      BNE            overflow

2. Overflow in signed multiply with a 32-bit result

      SMULL          Rd,Rt,Rm,Rn                       ; 3 to 6 cycles
      TEQ            Rt,Rd ASR#31                      ; +1 cycle and a register
      BNE            overflow

3. Overflow in unsigned multiply accumulate with a 32-bit result

      UMLAL          Rd,Rt,Rm,Rn                       ; 4 to 7 cycles
      TEQ            Rt,#0                             ; +1 cycle and a register
      BNE            overflow

4. Overflow in signed multiply accumulate with a 32-bit result

      SMLAL          Rd,Rt,Rm,Rn                       ; 4 to 7 cycles
      TEQ            Rt,Rd, ASR#31                     ; +1 cycle and a register
      BNE            overflow

3-60
S3C2410A                                                            ARM INSTRUCTION SET

5. Overflow in unsigned multiply accumulate with a 64-bit result

          UMULL  Rl,Rh,Rm,Rn             ; 3 to 6 cycles
          ADDS   Rl,Rl,Ra1               ; Lower accumulate
          ADC    Rh,Rh,Ra2               ; Upper accumulate
          BCS    overflow                ; 1 cycle and 2 registers

6. Overflow in signed multiply accumulate with a 64-bit result

          SMULL  Rl,Rh,Rm,Rn             ; 3 to 6 cycles
          ADDS   Rl,Rl,Ra1               ; Lower accumulate
          ADC    Rh,Rh,Ra2               ; Upper accumulate
          BVS    overflow                ; 1 cycle and 2 registers

                                                                    NOTE

Overflow checking is not applicable to unsigned and signed multiplies with a 64-bit result, since overflow
does not occur in such calculations.

PSEUDO-RANDOM BINARY SEQUENCE GENERATOR

It is often necessary to generate (pseudo-) random numbers and the most efficient algorithms are based on shift
generators with exclusive-OR feedback rather like a cyclic redundancy check generator. Unfortunately the sequence
of a 32-bit generator needs more than one feedback tap to be maximal length (i.e. 2^32-1 cycles before repetition),
so this example uses a 33-bit register with taps at bits 33 and 20. The basic algorithm is newbit:=bit 33 eor bit 20,
shift left the 33-bit number and put in newbit at the bottom; this operation is performed for all the newbits needed (i.e.
32 bits). The entire operation can be done in 5 S cycles:

          TST    Rb,Rb,LSR#1             ; Enter with seed in Ra (32 bits),
          MOVS   Rc,Ra,RRX               ; Rb (1 bit in Rb lsb), uses Rc.
          ADC    Rb,Rb,Rb                ; Top bit into carry
          EOR    Rc,Rc,Ra,LSL#12         ; 33 bit rotate right
          EOR    Ra,Rc,Rc,LSR#20         ; Carry into lsb of Rb
                                         ; (involved!)
                                         ; (similarly involved!) new seed in Ra, Rb as before

MULTIPLICATION BY CONSTANT USING THE BARREL SHIFTER

Multiplication by 2^n (1,2,4,8,16,32..)

          MOV    Ra, Rb, LSL #n

Multiplication by 2^n+1 (3,5,9,17..)

          ADD    Ra,Ra,Ra,LSL #n

Multiplication by 2^n-1 (3,7,15..)

          RSB    Ra,Ra,Ra,LSL #n

                                                                                                            3-61
ARM INSTRUCTION SET                                                                                         S3C2410A

Multiplication by 6    Ra,Ra,Ra,LSL #1           ; Multiply by 3
                       Ra,Ra,LSL#1               ; and then by 2
                  ADD
                  MOV

Multiply by 10 and add in extra number

      ADD              Ra,Ra,Ra,LSL#2            ; Multiply by 5
      ADD              Ra,Rc,Ra,LSL#1            ; Multiply by 2 and add in next digit

General recursive method for Rb := Ra*C, C a constant:

1. If C even, say C = 2^n*D, D odd:

      D=1:             MOV Rb,Ra,LSL #n
      D<>1:            {Rb := Ra*D}
      MOV              Rb,Rb,LSL #n

2. If C MOD 4 = 1, say C = 2^n*D+1, D odd, n>1:

      D=1:             ADD Rb,Ra,Ra,LSL #n
      D<>1:            {Rb := Ra*D}
      ADD              Rb,Ra,Rb,LSL #n

3. If C MOD 4 = 3, say C = 2^n*D-1, D odd, n>1:

      D=1:             RSB Rb,Ra,Ra,LSL #n
      D<>1:            {Rb := Ra*D}
      RSB              Rb,Ra,Rb,LSL #n

This is not quite optimal, but close. An example of its non-optimality is multiply by 45 which is done by:

      RSB              Rb,Ra,Ra,LSL#2            ; Multiply by 3
      RSB              Rb,Ra,Rb,LSL#2            ; Multiply by 4*3-1 = 11
      ADD              Rb,Ra,Rb,LSL# 2           ; Multiply by 4*11+1 = 45

rather than by:        Rb,Ra,Ra,LSL#3            ; Multiply by 9
                       Rb,Rb,Rb,LSL#2            ; Multiply by 5*9 = 45
                  ADD
                  ADD

3-62
S3C2410A                                  ARM INSTRUCTION SET

LOADING A WORD FROM AN UNKNOWN ALIGNMENT

          BIC    Rb,Ra,#3         ; Enter with address in Ra (32 bits) uses
          LDMIA  Rb,{Rd,Rc}       ; Rb, Rc result in Rd. Note d must be less than c e.g. 0,1
          AND    Rb,Ra,#3         ; Get word aligned address
          MOVS   Rb,Rb,LSL#3      ; Get 64 bits containing answer
          MOVNE  Rd,Rd,LSR Rb     ; Correction factor in bytes
          RSBNE  Rb,Rb,#32        ; ...now in bits and test if aligned
          ORRNE  Rd,Rd,Rc,LSL Rb  ; Produce bottom of result word (if not aligned)
                                  ; Get other shift amount
                                  ; Combine two halves to get result

                                          3-63
ARM INSTRUCTION SET         S3C2410A

                     NOTES

3-64
S3C2410A                         THUMB INSTRUCTION SET

4         THUMB INSTRUCTION SET

THUMB INSTRUCTION SET FORMAT

The thumb instruction sets are 16-bit versions of ARM instruction sets (32-bit format). The ARM instructions are
reduced to 16-bit versions, Thumb instructions, at the cost of versatile functions of the ARM instruction sets. The
thumb instructions are decompressed to the ARM instructions by the Thumb decompressor inside the ARM920T
core.

As the Thumb instructions are compressed ARM instructions, the Thumb instructions have the 16-bit format
instructions and have some restrictions. The restrictions by 16-bit format is fully notified for using the Thumb
instructions.

                                                                                                                     4-1
THUMB INSTRUCTION SET                                                        S3C2410A

FORMAT SUMMARY
The THUMB instruction set formats are shown in the following figure.

     15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

     1 0 0 0 Op           Offset5           Rs                        Rd     Move Shifted register

     2 0 0 0 1 1 I Op Rn/offset3            Rs                        Rd     Add/subtract

     3 0 0 1 Op     Rd              Offset8                                  Move/compare/add/
                                                                             subtract immediate
     4 010000                   Op    Rs                                Rd   ALU operations
     5 010001             Op H1 H2  Rs/Hs                             Rd/Hd
                                                                             Hi register operations
     6 01001        Rd                      Word8                            /branch exchange
                                                                             PC-relative load
     7 0 101LB0           Ro        Rb                                Rd
                                                                             Load/store with register
     8 0 1 0 1HS 1        Ro        Rb                                Rd     offset
                                                                             Load/store sign-extended
     9 0 11BL             Offset5   Rb                                Rd     byte/halfword
                                                                             Load/store with immediate
     10 1 0 0 0 L         Offset5   Rb                                Rd     offset
                                                                             Load/store halfword
     11 1 0 0 1 L   Rd                      Word8
                                                                             SP-relative load/store
     12 1 0 1 0 SP  Rd                      Word8
                                                                             Load address
     13 1 0 1 1 0 0 0 0 S                    SWord7
                                                                             Add offset to stack pointer
     14 1 0 1 1 L 1 0 R                      Rlist                           Push/pop register

     15 1 1 0 0 L   Rb                       Rlist                           Multiple load/store

     16 1 1 0 1     Cond            Softset8                                 Conditional branch

     17 1 1 0 1 1 1 1 1                     Value8                           Software interrupt
                                                                             Unconditional branch
     18 1 1 1 0 0                  Offset11
                                                                             Long branch with link
     19 1 1 1 1 H                   Offset

     15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

                    Figure 4-1. THUMB Instruction Set Formats

4-2
S3C2410A                                                      THUMB INSTRUCTION SET

OPCODE SUMMARY

The following table summarizes the THUMB instruction set. For further information about a particular instruction
please refer to the sections listed in the right-most column.

             Table 4-1. THUMB Instruction Set Opcodes

   Mnemonic                      Instruction  Lo-Register  Hi-Register  Condition
                                                Operand     Operand     Codes Set
ADC          Add with Carry
ADD          Add                                     Y                       Y
AND                                                                         Y (1)
ASR                                                  Y            
B                                                                             Y
Bxx          AND                              Y                              Y
BIC          Arithmetic Shift Right                                          
BL           Unconditional branch             Y                              
BX           Conditional branch                                               Y
CMN          Bit Clear                        Y                              
CMP          Branch and Link                                                  
EOR          Branch and Exchange              Y                              Y
LDMIA        Compare Negative                                                 Y
LDR          Compare                          Y                              Y
LDRB         EOR                                                              
LDRH         Load multiple                                                  
LSL          Load word                                                        
LDSB         Load byte                        Y            Y                  
LDSH         Load halfword                                                    Y
LSR          Logical Shift Left               Y                              
MOV          Load sign-extended byte                                          
MUL          Load sign-extended halfword      Y            Y                  Y
MVN          Logical Shift Right                                            Y (2)
             Move register                    Y                              Y
                                                                              Y
                                              Y            

                                              Y            

                                              Y            

                                              Y            

                                              Y            

                                              Y            

                                              Y            

                                              Y            

                                              Y            Y

             Multiply                         Y            
             Move Negative register
                                              Y            

                                                                                                                  4-3
THUMB INSTRUCTION SET                                                                           S3C2410A

                       Table 4-1. THUMB Instruction Set Opcodes (Continued)

     Mnemonic          Instruction  Lo-Register  Hi-Register                                    Condition
                                      Operand     Operand                                       Codes Set
NEG            Negate                      Y            
ORR            OR                          Y                                                         Y
POP            Pop register                Y                                                         Y
PUSH           Push register               Y                                                         
ROR            Rotate Right                Y                                                         
SBC            Subtract with Carry         Y                                                         Y
STMIA          Store Multiple              Y                                                         Y
STR            Store word                  Y                                                         
STRB           Store byte                  Y                                                         
STRH           Store halfword              Y                                                         
SWI            Software Interrupt                                                                   
SUB            Subtract                    Y                                                         
TST            Test bits                   Y                                                         Y
                                                                                                      Y

NOTES:
1. The condition codes are unaffected by the format 5, 12 and 13 versions of this instruction.
2. The condition codes are unaffected by the format 5 version of this instruction.

4-4
S3C2410A                                                      THUMB INSTRUCTION SET

FORMAT 1: MOVE SHIFTED REGISTER

    15 14 13 12           11 10           65                  32          0

    000          Op              Offset5              Rs          Rd

                          [2:0] Destination Register

                          [5:3] Source Register

                          [10:6] Immediate Vale

                          [12:11] Opcode
                          0 = LSL
                          1 = LSR
                          2 = ASR

                                                               Figure 4-2. Format 1

OPERATION
These instructions move a shifted value between Lo registers. The THUMB assembler syntax is shown in
Table 4-2.

                                                                          NOTE
     All instructions in this group set the CPSR condition codes.

                 Table 4-2. Summary of Format 1 Instructions

OP  THUMB Assembler              ARM Equipment                    Action

00  LSL Rd, Rs, #Offset5  MOVS Rd, Rs, LSL #Offset5 Shift Rs left by a 5-bit immediate
                                                                    value and store the result in Rd.

01  LSR Rd, Rs, #Offset5  MOVS Rd, Rs, LSR #Offset5 Perform logical shift right on Rs by a
                                                                    5-bit immediate value and store the
                                                                    result in Rd.

10  ASR Rd, Rs, #Offset5  MOVS Rd, Rs, ASR #Offset5 Perform arithmetic shift right on Rs
                                                                    by a 5-bit immediate value and store
                                                                    the result in Rd.

                                                                                                       4-5
THUMB INSTRUCTION SET                                                          S3C2410A

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-2. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES               R2, R5, #27  ; Logical shift right the contents
                  LSR               ; of R5 by 27 and store the result in R2.
                                    ; Set condition codes on the result.

4-6
S3C2410A                                                      THUMB INSTRUCTION SET

FORMAT 2: ADD/SUBTRACT

    15 14 13 12 11 10 9 8                6    5            3  2            0

    0 0 0 1 1 1 Op         Rn/Offset3                  Rs              Rd

                        [2:0] Destination Register

                        [5:3] Source Register

                        [8:6] Register/Immediate Vale

                        [9] Opcode
                        0 = ADD
                        1 = SUB

                        [10] Immediate Flag
                        0 = Register operand
                        1 = Immediate oerand

                        Figure 4-3. Format 2

OPERATION

These instructions allow the contents of a Lo register or a 3-bit immediate value to be added to or subtracted from a
Lo register. The THUMB assembler syntax is shown in Table 4-3.

                                                                          NOTE
     All instructions in this group set the CPSR condition codes.

       Table 4-3. Summary of Format 2 Instructions

OP  I  THUMB Assembler  ARM Equipment                         Action

0   0 ADD Rd, Rs, Rn    ADDS Rd, Rs, Rn       Add contents of Rn to contents of Rs.
                                              Place result in Rd.

0   1 ADD Rd, Rs, #Offset3 ADDS Rd, Rs, #Offset3 Add 3-bit immediate value to contents of

                                              Rs. Place result in Rd.

1   0 SUB Rd, Rs, Rn    SUBS Rd, Rs, Rn       Subtract contents of Rn from contents of
                                              Rs. Place result in Rd.

1   1 SUB Rd, Rs, #Offset3 SUBS Rd, Rs, #Offset3 Subtract 3-bit immediate value from

                                              contents of Rs. Place result in Rd.

                                                                                      4-7
THUMB INSTRUCTION SET              S3C2410A

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-3. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES               R0, R3, R4  ; R0 := R3 + R4 and set condition codes on the result.
                       R6, R2, #6  ; R6 := R2 - 6 and set condition codes.
                  ADD
                  SUB

4-8
S3C2410A                                                           THUMB INSTRUCTION SET

FORMAT 3: MOVE/COMPARE/ADD/SUBTRACT IMMEDIATE

    15 14 13 12 11 10      87                                              0

    000  Op            Rd                                 Offset8

                      [7:0] Immediate Vale

                      [10:8] Source/Destination Register

                      [12:11] Opcode
                      0 = MOV
                      1 = CMP
                      2 = ADD
                      3 = SUB

                                                               Figure 4-4. Format 3

OPERATIONS
The instructions in this group perform operations between a Lo register and an 8-bit immediate value. The THUMB
assembler syntax is shown in Table 4-4.

                                                                          NOTE
     All instructions in this group set the CPSR condition codes.

                      Table 4-4. Summary of Format 3 Instructions

OP  THUMB Assembler    ARM Equipment                               Action

00  MOV Rd, #Offset8  MOVS Rd, #Offset8  Move 8-bit immediate value into Rd.

01  CMP Rd, #Offset8  CMP Rd, #Offset8   Compare contents of Rd with 8-bit immediate
                                         value.

10  ADD Rd, #Offset8  ADDS Rd, Rd, #Offset8 Add 8-bit immediate value to contents of Rd
                                                           and place the result in Rd.

11  SUB Rd, #Offset8  SUBS Rd, Rd, #Offset8 Subtract 8-bit immediate value from contents
                                                           of Rd and place the result in Rd.

                                                                                                                 4-9
THUMB INSTRUCTION SET                                                      S3C2410A

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-4. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES               R0, #128  ; R0 := 128 and set condition codes
                       R2, #62   ; Set condition codes on R2 - 62
                  MOV  R1, #255  ; R1 := R1 + 255 and set condition codes
                  CMP  R6, #145  ; R6 := R6 - 145 and set condition codes
                  ADD
                  SUB

4-10
S3C2410A                                                                                 THUMB INSTRUCTION SET

FORMAT 4: ALU OPERATIONS

      15 14 13 12 11 10 9      65                                                        32      0

      000000               Op                                                        Rs      Rd

                          [2:0] Source/Destination Register
                          [5:3] Source Register 2
                          [9:6] Opcode

                                                               Figure 4-5. Format 4

OPERATION
The following instructions perform ALU operations on a Lo register pair.

                                                                          NOTE
     All instructions in this group set the CPSR condition codes.

      Table 4-5. Summary of Format 4 Instructions

OP      THUMB Assembler             ARM Equipment                                                       Action
0000  AND Rd, Rs          ANDS Rd, Rd, Rs                                            Rd:= Rd AND Rs
0001  EOR Rd, Rs          EORS Rd, Rd, Rs                                            Rd:= Rd EOR Rs
0010  LSL Rd, Rs          MOVS Rd, Rd, LSL Rs                                        Rd := Rd << Rs
0011  LSR Rd, Rs          MOVS Rd, Rd, LSR Rs                                        Rd := Rd >> Rs
0100  ASR Rd, Rs          MOVS Rd, Rd, ASR Rs                                        Rd := Rd ASR Rs
0101  ADC Rd, Rs          ADCS Rd, Rd, Rs                                            Rd := Rd + Rs + C-bit
0110  SBC Rd, Rs          SBCS Rd, Rd, Rs                                            Rd := Rd - Rs - NOT C-bit
0111  ROR Rd, Rs          MOVS Rd, Rd, ROR Rs                                        Rd := Rd ROR Rs
1000  TST Rd, Rs          TST Rd, Rs                                                 Set condition codes on Rd AND Rs
1001  NEG Rd, Rs          RSBS Rd, Rs, #0                                            Rd = - Rs
1010  CMP Rd, Rs          CMP Rd, Rs                                                 Set condition codes on Rd - Rs
1011  CMN Rd, Rs          CMN Rd, Rs                                                 Set condition codes on Rd + Rs
1100  ORR Rd, Rs          ORRS Rd, Rd, Rs                                            Rd := Rd OR Rs
1101  MUL Rd, Rs          MULS Rd, Rs, Rd                                            Rd := Rs * Rd
1110  BIC Rd, Rs          BICS Rd, Rd, Rs                                            Rd := Rd AND NOT Rs
1111  MVN Rd, Rs          MVNS Rd, Rs                                                Rd := NOT Rs

                                                                                                    4-11
THUMB INSTRUCTION SET          S3C2410A

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-5. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES               R3, R4  ; R3 := R3 EOR R4 and set condition codes
                       R1, R0  ; Rotate Right R1 by the value in R0, store
                  EOR          ; the result in R1 and set condition codes
                  ROR  R5, R3  ; Subtract the contents of R3 from zero,
                               ; Store the result in R5. Set condition codes ie R5 = - R3
                  NEG  R2, R6  ; Set the condition codes on the result of R2 - R6
                       R0, R7  ; R0 := R7 * R0 and set condition codes
                  CMP
                  MUL

4-12
S3C2410A                                                        THUMB INSTRUCTION SET

FORMAT 5: HI-REGISTER OPERATIONS/BRANCH EXCHANGE

    15 14 13 12 11 10     98     76                5         3  2         0
    000000                   Op  H1 H2
                                                      Rs/Hs        Rd/Hd

                       [2:0] Destination Register
                       [5:3] Source Register
                       [6] Hi Operand Flag 2
                       [7] Hi Operand Flag 1
                       [9:8] Opcode

                                                               Figure 4-6. Format 5

OPERATION

There are four sets of instructions in this group. The first three allow ADD, CMP and MOV operations to be performed
between Lo and Hi registers, or a pair of Hi registers. The fourth, BX, allows a Branch to be performed which may
also be used to switch processor state. The THUMB assembler syntax is shown in Table 4-6.

                                                                          NOTE
     In this group only CMP (Op = 01) sets the CPSR condition codes.

The action of H1= 0, H2 = 0 for Op = 00 (ADD), Op =01 (CMP) and Op = 10 (MOV) is undefined, and should not be
used.

       Table 4-6. Summary of Format 5 Instructions

Op H1 H2 THUMB assembler  ARM equivalent                        Action

00  0  1 ADD Rd, Hs       ADD Rd, Rd, Hs              Add a register in the range 8-15 to a
                                                      register in the range 0-7.

00  1  0 ADD Hd, Rs       ADD Hd, Hd, Rs              Add a register in the range 0-7 to a
                                                      register in the range 8-15.

00  1  1 ADD Hd, Hs       ADD Hd, Hd, Hs              Add two registers in the range 8-15

01  0  1 CMP Rd, Hs       CMP Rd, Hs                  Compare a register in the range 0-7
                                                      with a register in the range 8-15. Set
                                                      the condition code flags on the result.

01  1  0 CMP Hd, Rs       CMP Hd, Rs                  Compare a register in the range 8-15
                                                      with a register in the range 0-7. Set the
                                                      condition code flags on the result.

                                                                                            4-13
THUMB INSTRUCTION SET                                                                               S3C2410A

                       Table 4-6. Summary of Format 5 Instructions (Continued)

Op H1 H2 THUMB assembler    ARM equivalent                                                  Action

01         1  1 CMP Hd, Hs  CMP Hd, Hs                                        Compare two registers in the range
                                                                              8-15. Set the condition code flags on
                                                                              the result.

10         0  1 MOV Rd, Hs  MOV Rd, Hs                                        Move a value from a register in the
                                                                              range 8-15 to a register in the range 0-
                                                                              7.

10         1  0 MOV Hd, Rs  MOV Hd, Rs                                        Move a value from a register in the
                                                                              range 0-7 to a register in the range
                                                                              8-15.

10         1  1 MOV Hd, Hs  MOV Hd, Hs                                        Move a value between two registers in
                                                                              the range 8-15.

11         0  0 BX Rs       BX Rs                                             Perform branch (plus optional state
                                                                              change) to address in a register in the
                                                                              range 0-7.

11         0  1 BX Hs       BX Hs                                             Perform branch (plus optional state
                                                                              change) to address in a register in the
                                                                              range 8-15.

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-6. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

THE BX INSTRUCTION

BX performs a Branch to a routine whose start address is specified in a Lo or Hi register.

Bit 0 of the address determines the processor state on entry to the routine:

Bit 0 = 0     Causes the processor to enter ARM state.
Bit 0 = 1     Causes the processor to enter THUMB state.

                                                                    NOTE
The action of H1 = 1 for this instruction is undefined, and should not be used.

4-14
S3C2410A                               THUMB INSTRUCTION SET

EXAMPLES                PC, R5         ; PC := PC + R5 but don't set the condition codes.
                        R4, R12        ; Set the condition codes on the result of R4 - R12.
Hi-Register Operations  R15, R14       ; Move R14 (LR) into R15 (PC)
                                       ; but don't set the condition codes,
                  ADD                  ; eg. return from subroutine.
                  CMP
                  MOV                  ; Switch from THUMB to ARM state.
                                       ; Load address of outofTHUMB into R1.
Branch and Exchange                    ; Transfer the contents of R11 into the PC.
                                       ; Bit 0 of R11 determines whether
          ADR           R1,outofTHUMB  ; ARM or THUMB state is entered, ie. ARM state here.
          MOV           R11,R1
          BX            R11            ; Now processing ARM instructions...

         
         

          ALIGN
          CODE32
          outofTHUMB

USING R15 AS AN OPERAND

If R15 is used as an operand, the value will be the address of the instruction + 4 with bit 0 cleared. Executing a BX
PC in THUMB state from a non-word aligned address will result in unpredictable execution.

                                                                                             4-15
THUMB INSTRUCTION SET                                                          S3C2410A

FORMAT 6: PC-RELATIVE LOAD

      15 14 13 12 11 10         87                                          0

      00000                 Rd                           Word 8

                            [7:0] Immediate Value
                            [10:8] Destination Register

                                                               Figure 4-7. Format 6

OPERATION
This instruction loads a word from an address specified as a 10-bit immediate offset from the PC. The THUMB
assembler syntax is shown below.

                        Table 4-7. Summary of PC-Relative Load Instruction

       THUMB assembler           ARM equivalent                             Action
LDR Rd, [PC, #Imm]      LDR Rd, [R15, #Imm]
                                                 Add unsigned offset (255 words, 1020 bytes) in
                                                 Imm to the current value of the PC. Load the
                                                 word from the resulting address into Rd.

NOTE: The value specified by #Imm is a full 10-bit address, but must always be word-aligned (ie with bits 1:0 set to 0),
            since the assembler places #Imm >> 2 in field Word 8. The value of the PC will be 4 bytes greater than the address
            of this instruction, but bit 1 of the PC is forced to 0 to ensure it is word aligned.

4-16
S3C2410A                            THUMB INSTRUCTION SET

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction. The instruction cycle times for the THUMB
instruction are identical to that of the equivalent ARM instruction.

EXAMPLES                            ; Load into R3 the word found at the
                  LDR R3,[PC,#844]  ; address formed by adding 844 to PC.
                                    ; bit[1] of PC is forced to zero.
                                    ; Note that the THUMB opcode will contain
                                    ; 211 as the Word8 value.

                                                                                                               4-17
THUMB INSTRUCTION SET                                          S3C2410A

FORMAT 7: LOAD/STORE WITH REGISTER OFFSET

      15 14 13 12 11 10 9  8      6        5      3  2      0
      0 1 0 1 LB0
                              Ro              Rb        Rd

      [2:0] Source/Destination Register

      [5:3] Base Register

      [8:6] Offset Register

      [10] Byte/Word Flag
      0 = Transfer word quantity
      1 = Transfer byte quantity

      [11] Load/Store Flag
      0 = Store to memory
      1 = Load from memory

      Figure 4-8. Format 7

4-18
S3C2410A                                                             THUMB INSTRUCTION SET

OPERATION

These instructions transfer byte or word values between registers and memory. Memory addresses are pre-indexed
using an offset register in the range 0-7. The THUMB assembler syntax is shown in Table 4-8.

                        Table 4-8. Summary of Format 7 Instructions

   L      B             THUMB assembler  ARM equivalent                            Action

   0      0 STR Rd, [Rb, Ro]             STR Rd, [Rb, Ro]   Pre-indexed word store:
                                                            Calculate the target address by adding
   0      1 STRB Rd, [Rb, Ro]            STRB Rd, [Rb, Ro]  together the value in Rb and the value in
                                                            Ro. Store the contents of Rd at the
   1      0 LDR Rd, [Rb, Ro]             LDR Rd, [Rb, Ro]   address.

1     1      LDRB Rd, [Rb, Ro]           LDRB Rd, [Rb, Ro]  Pre-indexed byte store:
                                                            Calculate the target address by adding
                                                            together the value in Rb and the value in
                                                            Ro. Store the byte value in Rd at the
                                                            resulting address.

                                                            Pre-indexed word load:
                                                            Calculate the source address by adding
                                                            together the value in Rb and the value in
                                                            Ro. Load the contents of the address into
                                                            Rd.

                                                            Pre-indexed byte load:

                                                            Calculate the source address by adding
                                                            together the value in Rb and the value in
                                                            Ro. Load the byte value at the resulting
                                                            address.

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-8. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES                R3, [R2,R6]      ; Store word in R3 at the address
                  STR   R2, [R0,R7]      ; formed by adding R6 to R2.
                  LDRB                   ; Load into R2 the byte found at
                                         ; the address formed by adding R7 to R0.

                                                                                   4-19
THUMB INSTRUCTION SET                                                              S3C2410A

FORMAT 8: LOAD/STORE SIGN-EXTENDED BYTE/HALFWORD

      15 14 13 12 11 10 9  8                   6  5           3    2            0
      0 1 0 1HS1
                              Ro                          Rb          Rd

                           [2:0] Destination Register

                           [5:3] Base Register

                           [8:6] Offset Register

                           [10] Sign-Extended Flag
                           0 = Operand not sing-extended
                           1 = Operand sing-extended

                           [11] H Flag

                                                               Figure 4-9. Format 8

OPERATION
These instructions load optionally sign-extended bytes or halfwords, and store halfwords. The THUMB assembler
syntax is shown below.

         Table 4-9. Summary of format 8 instructions

L     B  THUMB assembler   ARM equivalent                          Action

0     0 STRH Rd, [Rb, Ro]  STRH Rd, [Rb, Ro]      Store halfword:

                                                  Add Ro to base address in Rb. Store bits
                                                  0-15 of Rd at the resulting address.

0     1 LDRH Rd, [Rb, Ro]  LDRH Rd, [Rb, Ro]      Load halfword:

                                                  Add Ro to base address in Rb. Load bits
                                                  0-15 of Rd from the resulting address, and
                                                  set bits 16-31 of Rd to 0.

1     0 LDSB Rd, [Rb, Ro]  LDRSB Rd, [Rb, Ro]     Load sign-extended byte:

                                                  Add Ro to base address in Rb. Load bits
                                                  0-7 of Rd from the resulting address, and
                                                  set bits 8-31 of Rd to bit 7.

1     1 LDSH Rd, [Rb, Ro]  LDRSH Rd, [Rb, Ro]     Load sign-extended halfword:

                                                  Add Ro to base address in Rb. Load bits
                                                  0-15 of Rd from the resulting address, and
                                                  set bits 16-31 of Rd to bit 15.

4-20
S3C2410A                              THUMB INSTRUCTION SET

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-9. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES                R4, [R3, R0]  ; Store the lower 16 bits of R4 at the
                  STRH  R2, [R7, R1]  ; address formed by adding R0 to R3.
                  LDSB  R3, [R4, R2]  ; Load into R2 the sign extended byte
                  LDSH                ; found at the address formed by adding R1 to R7.
                                      ; Load into R3 the sign extended halfword
                                      ; found at the address formed by adding R2 to R4.

                                                                                         4-21
THUMB INSTRUCTION SET                                          S3C2410A

FORMAT 9: LOAD/STORE WITH IMMEDIATE OFFSET

      15 14 13 12 11 10           65                32      0
      0 1 1BL
                         Offset5                Rb      Rd

      [2:0] Source/Destination Register

      [5:3] Base Register

      [10:6] Offset Register

      [11] Load/Store Flag
      0 = Store to memory
      1 = Load from memory

      [12] Byte/Word Flad
      0 = Transfer word quantity
      1 = Transfer byte quantity

                         Figure 4-10. Format 9

4-22
S3C2410A                                                             THUMB INSTRUCTION SET

OPERATION

These instructions transfer byte or word values between registers and memory using an immediate 5 or 7-bit offset.
The THUMB assembler syntax is shown in Table 4-10.

                       Table 4-10. Summary of Format 9 Instructions

L         B            THUMB assembler  ARM equivalent               Action

0         0 STR Rd, [Rb, #Imm]          STR Rd, [Rb, #Imm]   Calculate the target address by adding
                                                             together the value in Rb and Imm. Store
                                                             the contents of Rd at the address.

1         0 LDR Rd, [Rb, #Imm]          LDR Rd, [Rb, #Imm]   Calculate the source address by adding
                                                             together the value in Rb and Imm. Load
                                                             Rd from the address.

0         1 STRB Rd, [Rb, #Imm]         STRB Rd, [Rb, #Imm]  Calculate the target address by adding

                                                             together the value in Rb and Imm. Store

                                                             the byte value in Rd at the address.

1         1 LDRB Rd, [Rb, #Imm]         LDRB Rd, [Rb, #Imm]  Calculate source address by adding

                                                             together the value in Rb and Imm. Load

                                                             the byte value at the address into Rd.

NOTE: For word accesses (B = 0), the value specified by #Imm is a full 7-bit address, but must be word-aligned
            (ie with bits 1:0 set to 0), since the assembler places #Imm >> 2 in the Offset5 field.

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-10. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES               R2, [R5,#116]    ; Load into R2 the word found at the
                  LDR                   ; address formed by adding 116 to R5.
                                        ; Note that the THUMB opcode will
             STRB      R1, [R0,#13]     ; contain 29 as the Offset5 value.
                                        ; Store the lower 8 bits of R1 at the
                                        ; address formed by adding 13 to R0.
                                        ; Note that the THUMB opcode will
                                        ; contain 13 as the Offset5 value.

                                                                                                                4-23
THUMB INSTRUCTION SET                                                              S3C2410A

FORMAT 10: LOAD/STORE HALFWORD

      15 14 13 12 11 10                       65                        32      0
      0100L
                         Offset5                          Rb                Rd

                       [2:0] Source/Destination Register

                       [5:3] Base Register

                       [10:6] Immediate Value

                       [11] Load/Store Flag
                       0 = Store to memory
                       1 = Load from memory

                                                              Figure 4-11. Format 10

OPERATION
These instructions transfer halfword values between a Lo register and memory. Addresses are pre-indexed, using a
6-bit immediate value. The THUMB assembler syntax is shown in Table 4-11.

                       Table 4-11. Halfword Data Transfer Instructions

L     THUMB assembler         ARM equivalent                           Action
                       STRH Rd, [Rb, #Imm]
0 STRH Rd, [Rb, #Imm]                         Add #Imm to base address in Rb and store
                       LDRH Rd, [Rb, #Imm]    bits 0 - 15 of Rd at the resulting address.
1 LDRH Rd, [Rb, #Imm]
                                              Add #Imm to base address in Rb. Load bits
                                              0-15 from the resulting address into Rd and
                                              set bits 16-31 to zero.

NOTE: #Imm is a full 6-bit address but must be halfword-aligned (ie with bit 0 set to 0) since the assembler places
            #Imm >> 1 in the Offset5 field.

4-24
S3C2410A                               THUMB INSTRUCTION SET

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-11. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES                R6, [R1, #56]  ; Store the lower 16 bits of R4 at the address formed by
                  STRH  R4, [R7, #4]   ; adding 56 R1. Note that the THUMB opcode will contain
                                       ; 28 as the Offset5 value.
                  LDRH                 ; Load into R4 the halfword found at the address formed by
                                       ; adding 4 to R7. Note that the THUMB opcode will contain
                                       ; 2 as the Offset5 value.

                                       4-25
THUMB INSTRUCTION SET                                                     S3C2410A

FORMAT 11: SP-RELATIVE LOAD/STORE

      15 14 13 12 11 10      87                                        0

      1001L              Rd                           Word 8

                         [7:0] Immediate Value

                         [10:8] Destination Register

                         [11] Load/Store Bit
                         0 = Store to memory
                         1 = Load from memory

                         Figure 4-12. Format 11

OPERATION

The instructions in this group perform an SP-relative load or store. The THUMB assembler syntax is shown in the
following table.

                      Table 4-12. SP-Relative Load/Store Instructions

L     THUMB assembler         ARM equivalent                           Action
                       STR Rd, [R13 #Imm]
0 STR Rd, [SP, #Imm]                          Add unsigned offset (255 words, 1020 bytes)
                                              in Imm to the current value of the SP (R7).
1 LDR Rd, [SP, #Imm]   LDR Rd, [R13 #Imm]     Store the contents of Rd at the resulting
                                              address.

                                              Add unsigned offset (255 words, 1020 bytes)
                                              in Imm to the current value of the SP (R7).
                                              Load the word from the resulting address into
                                              Rd.

NOTE: The offset supplied in #Imm is a full 10-bit address, but must always be word-aligned (ie bits 1:0 set to 0),
            since the assembler places #Imm >> 2 in the Word8 field.

4-26
S3C2410A                              THUMB INSTRUCTION SET

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-12. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES               R4, [SP,#492]  ; Store the contents of R4 at the address
                  STR                 ; formed by adding 492 to SP (R13).
                                      ; Note that the THUMB opcode will contain
                                      ; 123 as the Word8 value.

                                                                                 4-27
THUMB INSTRUCTION SET                                                                                                S3C2410A

FORMAT 12: LOAD ADDRESS

      15 14 13 12 11 10      87                                 0

      1 0 1 0 SP         Rd                             Word 8

                         [7:0] 8-bit Unsigned Constant

                         [10:8] Destination Register

                         [11] Source
                         0 = PC
                         1 = SP

                                                              Figure 4-13. Format 12

OPERATION
These instructions calculate an address by adding an 10-bit constant to either the PC or the SP, and load the
resulting address into a register. The THUMB assembler syntax is shown in the following table.

                         Table 4-13. Load Address

L     THUMB assembler           ARM equivalent                           Action
                         ADD Rd, R15, #Imm
0 ADD Rd, PC, #Imm                              Add #Imm to the current value of the program
                         ADD Rd, R13, #Imm      counter (PC) and load the result into Rd.
1 ADD Rd, SP, #Imm
                                                Add #Imm to the current value of the stack
                                                pointer (SP) and load the result into Rd.

NOTE: The value specified by #Imm is a full 10-bit value, but this must be word-aligned (ie with bits 1:0 set to 0)
            since the assembler places #Imm >> 2 in field Word 8.

Where the PC is used as the source register (SP = 0), bit 1 of the PC is always read as 0. The value of the PC will
be 4 bytes greater than the address of the instruction before bit 1 is forced to 0.

The CPSR condition codes are unaffected by these instructions.

4-28
S3C2410A                             THUMB INSTRUCTION SET

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-13. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES               R2, PC, #572  ; R2 := PC + 572, but don't set the
                  ADD                ; condition codes. bit[1] of PC is forced to zero.
                                     ; Note that the THUMB opcode will
          ADD          R6, SP, #212  ; contain 143 as the Word8 value.
                                     ; R6 := SP (R13) + 212, but don't
                                     ; set the condition codes.
                                     ; Note that the THUMB opcode will
                                     ; contain 53 as the Word 8 value.

                                                                                         4-29
THUMB INSTRUCTION SET                                                        S3C2410A

FORMAT 13: ADD OFFSET TO STACK POINTER

      15 14 13 12 11 10 9 8 7 6                                           0

      1 0 1 1 0 0 0 0S                                           SWord 7

                             [6:0] 7-bit Immediate Value

                             [7] Sign Flag
                             0 = Offset is positive
                             1 = Offset is negative

                                                              Figure 4-14. Format 13

OPERATION
This instruction adds a 9-bit signed constant to the stack pointer. The following table shows the THUMB assembler
syntax.

                             Table 4-14. The ADD SP Instruction

L         THUMB assembler           ARM equivalent                            Action
                             ADD R13, R13, #Imm     Add #Imm to the stack pointer (SP).
0 ADD SP, #Imm               SUB R13, R13, #Imm     Add #-Imm to the stack pointer (SP).

1 ADD SP, # -Imm

NOTE: The offset specified by #Imm can be up to -/+ 508, but must be word-aligned (ie with bits 1:0 set to 0)
            since the assembler converts #Imm to an 8-bit sign + magnitude number before placing it in field SWord7.
            The condition codes are not set by this instruction.

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-14. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES

          ADD     SP, #268   ; SP (R13) := SP + 268, but don't set the condition codes.
          ADD     SP, #-104  ; Note that the THUMB opcode will
                             ; contain 67 as the Word7 value and S=0.
                             ; SP (R13) := SP - 104, but don't set the condition codes.
                             ; Note that the THUMB opcode will contain
                             ; 26 as the Word7 value and S=1.

4-30
S3C2410A                                                               THUMB INSTRUCTION SET

FORMAT 14: PUSH/POP REGISTERS

   15 14 13 12 11 10 9 8 7                                                     0

   1 0 1 1 L1 0R                                                Rlist

                         [7:0] Register List

                         [8] PC/LR Bit
                         0 = Do not store LR/Load PC
                         1 = Store LR/Load PC

                         [11] Load/Store Bit
                         0 = Store to memory
                         1 = Load from memory

                                                              Figure 4-15. Format 14

OPERATION
The instructions in this group allow registers 0-7 and optionally LR to be pushed onto the stack, and registers 0-7
and optionally PC to be popped off the stack. The THUMB assembler syntax is shown in Table 4-15.

                                                                          NOTE
     The stack is always assumed to be Full Descending.

                         Table 4-15. PUSH and POP Instructions

L  B  THUMB assembler          ARM equivalent                          Action

0  0 PUSH { Rlist }      STMDB R13!, { Rlist }        Push the registers specified by Rlist onto
                                                      the stack. Update the stack pointer.

0  1 PUSH { Rlist, LR }  STMDB R13!,                  Push the Link Register and the registers
                         { Rlist, R14 }               specified by Rlist (if any) onto the stack.
                                                      Update the stack pointer.

1  0 POP { Rlist }       LDMIA R13!, { Rlist }        Pop values off the stack into the registers
                                                      specified by Rlist. Update the stack
                                                      pointer.

1  1 POP { Rlist, PC }   LDMIA R13!, {Rlist, R15} Pop values off the stack and load into the
                                                              registers specified by Rlist. Pop the PC off
                                                              the stack. Update the stack pointer.

                                                                                  4-31
THUMB INSTRUCTION SET               S3C2410A

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-15. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES                {R0-R4,LR}  ; Store R0,R1,R2,R3,R4 and R14 (LR) at
                  PUSH              ; the stack pointed to by R13 (SP) and update R13.
                                    ; Useful at start of a sub-routine to
      POP               {R2,R6,PC}  ; save workspace and return address.
                                    ; Load R2,R6 and R15 (PC) from the stack
                                    ; pointed to by R13 (SP) and update R13.
                                    ; Useful to restore workspace and return from sub-routine.

4-32
S3C2410A                                                                  THUMB INSTRUCTION SET

FORMAT 15: MULTIPLE LOAD/STORE

       15 14 13 12 11 10        87                                        0

       1100L               Rb                     Rlist

                           [7:0] Register List

                           [10:8] Base Register

                           [11] Load/Store Bit
                           0 = Store to memory
                           1 = Load from memory

                                                              Figure 4-16. Format 15

OPERATION
These instructions allow multiple loading and storing of Lo registers. The THUMB assembler syntax is shown in the
following table.

                        Table 4-16. The Multiple Load/Store Instructions

L         THUMB assembler         ARM equivalent                           Action
                           STMIA Rb!, { Rlist }
0 STMIA Rb!, { Rlist }                            Store the registers specified by Rlist, starting
                                                  at the base address in Rb. Write back the
1 LDMIA Rb!, { Rlist }     LDMIA Rb!, { Rlist }   new base address.

                                                  Load the registers specified by Rlist, starting
                                                  at the base address in Rb. Write back the
                                                  new base address.

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-16. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES

STMIA     R0!, {R3-R7}          ; Store the contents of registers R3-R7
                                ; starting at the address specified in
                                ; R0, incrementing the addresses for each word.
                                ; Write back the updated value of R0.

                                                                                 4-33
THUMB INSTRUCTION SET                                                   S3C2410A

FORMAT 16: CONDITIONAL BRANCH

      15 14 13 12 11              87                                 0

      1101                  Cond                          SOffset 8

                            [7:0] 8-bit Signed Immediate
                            [11:8] Condition

                                                              Figure 4-17. Format 16

OPERATION

The instructions in this group all perform a conditional Branch depending on the state of the CPSR condition codes.
The branch offset must take account of the prefetch operation, which causes the PC to be 1 word (4 bytes) ahead of
the current instruction.

The THUMB assembler syntax is shown in the following table.

            Table 4-17. The Conditional Branch Instructions

  L        THUMB assembler         ARM equivalent                            Action
0000  BEQ label             BEQ label              Branch if Z set (equal)
0001  BNE label             BNE label              Branch if Z clear (not equal)
0010  BCS label             BCS label              Branch if C set (unsigned higher or same)
0011  BCC label             BCC label              Branch if C clear (unsigned lower)
0100  BMI label             BMI label              Branch if N set (negative)
0101  BPL label             BPL label              Branch if N clear (positive or zero)
0110  BVS label             BVS label              Branch if V set (overflow)
0111  BVC label             BVC label              Branch if V clear (no overflow)
1000  BHI label             BHI label              Branch if C set and Z clear (unsigned higher)

4-34
S3C2410A                                                                         THUMB INSTRUCTION SET

                    Table 4-17. The Conditional Branch Instructions (Continued)

L         THUMB assembler         ARM equivalent                            Action
                           BLS label
1001 BLS label             BGE label              Branch if C clear or Z set (unsigned lower or
                           BLT label              same)
1010 BGE label             BGT label
                           BLE label              Branch if N set and V set, or N clear and V
1011 BLT label                                    clear (greater or equal)

1100 BGT label                                    Branch if N set and V clear, or N clear and V
                                                  set (less than)
1101 BLE label
                                                  Branch if Z clear, and either N set and V set
                                                  or N clear and V clear (greater than)

                                                  Branch if Z set, or N set and V clear, or N
                                                  clear and V set (less than or equal)

NOTES:
1. While label specifies a full 9-bit two's complement address, this must always be halfword-aligned (ie with bit 0 set to 0)

      since the assembler actually places label >> 1 in field SOffset8.
2. Cond = 1110 is undefined, and should not be used.

      Cond = 1111 creates the SWI instruction: see .

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 3-1. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES

          CMP R0, #45 ;    Branch to over-if R0 > 45.
                           ; Note that the THUMB opcode will contain
          BGT over         ; the number of halfwords to offset.

                          ; Must be halfword aligned.

         

over      

                                                                                 4-35
THUMB INSTRUCTION SET                                                                         S3C2410A

FORMAT 17: SOFTWARE INTERRUPT

      15 14 13 12 11 10 9 8 7                                                              0

      11011111                                                                   Value 8

                          [7:0] Comment Field

                                                              Figure 4-18. Format 17

OPERATION
The SWI instruction performs a software interrupt. On taking the SWI, the processor switches into ARM state and
enters Supervisor (SVC) mode.
The THUMB assembler syntax for this instruction is shown below.

                          Table 4-18. The SWI Instruction

     THUMB assembler             ARM equivalent                                 Action
SWI Value 8               SWI Value 8
                                                 Perform Software Interrupt:
                                                 Move the address of the next instruction into LR,
                                                 move CPSR to SPSR, load the SWI vector address
                                                 (0x8) into the PC. Switch to ARM state and enter
                                                 SVC mode.

NOTE: Value8 is used solely by the SWI handler; it is ignored by the processor.

INSTRUCTION CYCLE TIMES

All instructions in this format have an equivalent ARM instruction as shown in Table 4-18. The instruction cycle times
for the THUMB instruction are identical to that of the equivalent ARM instruction.

EXAMPLES                                         ; Take the software interrupt exception.
                  SWI 18                         ; Enter Supervisor mode with 18 as the
                                                 ; requested SWI number.

4-36
S3C2410A                                                         THUMB INSTRUCTION SET

FORMAT 18: UNCONDITIONAL BRANCH

       15 14 13 12 11 10                                         0

       11100                                       Offset11

                          [10:0] Immediate Value

                                                              Figure 4-19. Format 18

OPERATION

This instruction performs a PC-relative Branch. The THUMB assembler syntax is shown below. The branch offset
must take account of the prefetch operation, which causes the PC to be 1 word (4 bytes) ahead of the current
instruction.

                      Table 4-19. Summary of Branch Instruction

     THUMB assembler         ARM equivalent                                       Action
B label               BAL label (halfword offset)
                                                   Branch PC relative +/- Offset11 << 1, where label is
                                                   PC +/- 2048 bytes.

NOTE: The address specified by label is a full 12-bit two's complement address,
            but must always be halfword aligned (ie bit 0 set to 0), since the assembler places label >> 1 in the Offset11 field.

EXAMPLES

here      B here                 ; Branch onto itself. Assembles to 0xE7FE.
                                 ; (Note effect of PC offset).
jimmy     B jimmy                ; Branch to 'jimmy'.
                                 ; Note that the THUMB opcode will contain the number of
         
                                ; halfwords to offset.
                                ; Must be halfword aligned.
         

                                                                    4-37
THUMB INSTRUCTION SET                                 S3C2410A

FORMAT 19: LONG BRANCH WITH LINK

      15 14 13 12 11 10                            0

      1 1 1 1H                    Offset

      [10:0] Long Branch and Link Offset High/Low

      [11] Low/High Offset Bit
      0 = Offset high
      1 = Offset low

                                                              Figure 4-20. Format 19

OPERATION

This format specifies a long branch with link.

The assembler splits the 23-bit two's complement half-word offset specified by the label into two 11-bit halves,
ignoring bit 0 (which must be 0), and creates two THUMB instructions.

Instruction 1 (H = 0)
In the first instruction the Offset field contains the upper 11 bits of the target address. This is shifted left by 12 bits
and added to the current PC address. The resulting address is placed in LR.

Instruction 2 (H =1)
In the second instruction the Offset field contains an 11-bit representation lower half of the target address. This is
shifted left by 1 bit and added to LR. LR, which now contains the full 23-bit address, is placed in PC, the address of
the instruction following the BL is placed in LR and bit 0 of LR is set.

The branch offset must take account of the prefetch operation, which causes the PC to be 1 word (4 bytes) ahead of
the current instruction

4-38
S3C2410A                                                              THUMB INSTRUCTION SET

INSTRUCTION CYCLE TIMES
This instruction format does not have an equivalent ARM instruction.

                           Table 4-20. The BL Instruction

L         THUMB assembler         ARM equivalent                                                Action
                           none                                       LR := PC + OffsetHigh << 12
0 BL label                                                            temp := next instruction address
                                                                      PC := LR + OffsetLow << 1
1                                                                     LR := temp | 1

EXAMPLES

          BL faraway       ; Unconditionally Branch to 'faraway'
                           ; and place following instruction
next                      ; address, ie "next", in R14,the Link
                           ; register and set bit 0 of LR high.
                          ; Note that the THUMB opcodes will
                           ; contain the number of halfwords to offset.
faraway                   ; Must be Half-word aligned.

         

                                                                                                        4-39
THUMB INSTRUCTION SET                                                     S3C2410A

INSTRUCTION SET EXAMPLES

The following examples show ways in which the THUMB instructions may be used to generate small and efficient
code. Each example also shows the ARM equivalent so these may be compared.

MULTIPLICATION BY A CONSTANT USING SHIFTS AND ADDS

The following shows code to multiply by various constants using 1, 2 or 3 Thumb instructions alongside the ARM
equivalents. For other constants it is generally better to use the built-in MUL instruction rather than using a sequence
of 4 or more instructions.

      Thumb            ARM

1. Multiplication by 2^n (1,2,4,8,...)

      LSL              Ra, Rb, LSL #n           ; MOV Ra, Rb, LSL #n

2. Multiplication by 2^n+1 (3,5,9,17,...)

      LSL              Rt, Rb, #n               ; ADD Ra, Rb, Rb, LSL #n
      ADD              Ra, Rt, Rb

3. Multiplication by 2^n-1 (3,7,15,...)

      LSL              Rt, Rb, #n               ; RSB Ra, Rb, Rb, LSL #n
      SUB              Ra, Rt, Rb

4. Multiplication by -2^n (-2, -4, -8, ...)

      LSL              Ra, Rb, #n               ; MOV Ra, Rb, LSL #n
      MVN              Ra, Ra                   ; RSB Ra, Ra, #0

5. Multiplication by -2^n-1 (-3, -7, -15, ...)

      LSL              Rt, Rb, #n               ; SUB Ra, Rb, Rb, LSL #n
      SUB              Ra, Rb, Rt

Multiplication by any C = {2^n+1, 2^n-1, -2^n or -2^n-1} * 2^n
Effectively this is any of the multiplications in 2 to 5 followed by a final shift. This allows the following additional
constants to be multiplied. 6, 10, 12, 14, 18, 20, 24, 28, 30, 34, 36, 40, 48, 56, 60, 62 .....

      (2..5)           Ra, Ra, #n               ; (2..5)
      LSL                                       ; MOV Ra, Ra, LSL #n

4-40
S3C2410A                                                                                       THUMB INSTRUCTION SET

GENERAL PURPOSE SIGNED DIVIDE

This example shows a general purpose signed divide and remainder routine in both Thumb and ARM code.

Thumb code                              ; Signed divide of R1 by R0: returns quotient in R0,
;signed_divide                          ; remainder in R1

;Get abs value of R0 into R3

          ASR   R2, R0, #31             ; Get 0 or -1 in R2 depending on sign of R0
                                        ; EOR with -1 (0FFFFFFFF) if negative
          EOR   R0, R2                  ; and ADD 1 (SUB -1) to get abs value

          SUB   R3, R0, R2

;SUB always sets flag so go & report division by 0 if necessary

          BEQ   divide_by_zero

;Get abs value of R1 by xoring with 0xFFFFFFFF and adding 1 if negative

          ASR   R0, R1, #31             ; Get 0 or -1 in R3 depending on sign of R1

          EOR   R1, R0                  ; EOR with -1 (0FFFFFFFF) if negative

          SUB   R1, R0                  ; and ADD 1 (SUB -1) to get abs value

;Save signs (0 or -1 in R0 & R2) for later use in determining ; sign of quotient & remainder.

          PUSH                {R0, R2}

;Justification, shift 1 bit at a time until divisor (R0 value) ; is just <= than dividend (R1 value). To do this shift dividend

; right by 1 and stop as soon as shifted value becomes >.

          LSR   R0, R1, #1

          MOV   R2, R3

          B     %FT0

just_l    LSL   R2, #1

0         CMP   R2, R0

          BLS   just_l

          MOV   R0, #0                  ; Set accumulator to 0

          B     %FT0                    ; Branch into division loop

div_l     LSR   R2, #1

0         CMP   R1, R2                  ; Test subtract

          BCC   %FT0                    ; If successful do a real subtract
                                        ; Shift result and add 1 if subtract succeeded
          SUB   R1, R2

0         ADC   R0, R0

          CMP   R2, R3                  ; Terminate when R2 == R3 (ie we have just
          BNE   div_l                   ; tested subtracting the 'ones' value).

                                                                                                      4-41
THUMB INSTRUCTION SET                                                                           S3C2410A

Now fix up the signs of the quotient (R0) and remainder (R1)

        POP                  {R2, R3}             ; Get dividend/divisor signs back

        EOR                  R3, R2               ; Result sign

        EOR                  R0, R3               ; Negate if result sign = - 1

        SUB                  R0, R3

        EOR                  R1, R2               ; Negate remainder if dividend sign = - 1

        SUB                  R1, R2

        MOV                  pc, lr

ARM Code                     ;                    Effectively zero a4 as top bit will be shifted out later
                             a4, a1, #&80000000
signed_divide                a1, a1, #0
                  ANDS       ip, a4, a2, ASR #32
                  RSBMI
                  EORS       a2, a2, #0

;ip bit 31 = sign of result
;ip bit 30 = sign of a2

                  RSBCS

;Central part is identical code to udiv (without MOV a4, #0 which comes for free as part of signed entry sequence)

        MOVS                 a3, a1

        BEQ                  divide_by_zero

just_l                                            ; Justification stage shifts 1 bit at a time
                                                  ; NB: LSL #1 is always OK if LS succeeds
        CMP                  a3, a2, LSR #1
        MOVLS                a3, a3, LSL #1
        BLO                  s_loop

div_l

        CMP                  a2, a3

        ADC                  a4, a4, a4

        SUBCS                a2, a2, a3

        TEQ                  a3, a1

        MOVNE a3, a3, LSR #1

        BNE                  s_loop2

        MOV                  a1, a4

        MOVS                 ip, ip, ASL #1

        RSBCS                a1, a1, #0

        RSBMI                a2, a2, #0

        MOV                  pc, lr

4-42
S3C2410A                                      THUMB INSTRUCTION SET

DIVISION BY A CONSTANT

Division by a constant can often be performed by a short fixed sequence of shifts, adds and subtracts.

Here is an example of a divide by 10 routine based on the algorithm in the ARM Cookbook in both Thumb and ARM
code.

Thumb Code                                    ; Take argument in a1 returns quotient in a1,
                                              ; remainder in a2
udiv10
                         a2, a1
                  MOV    a3, a1, #2
                  LSR    a1, a3
                  SUB    a3, a1, #4
                  LSR    a1, a3
                  ADD    a3, a1, #8
                  LSR    a1, a3
                  ADD    a3, a1, #16
                  LSR    a1, a3
                  ADD    a1, #3
                  LSR    a3, a1, #2
                  ASL    a3, a1
                  ADD    a3, #1
                  ASL    a2, a3
                  SUB    a2, #10
                  CMP    %FT0
                  BLT    a1, #1
                  ADD    a2, #10
                  SUB
0                        pc, lr
                  MOV

ARM Code                                      ; Take argument in a1 returns quotient in a1,
                                              ; remainder in a2
udiv10
                         a2, a1, #10
                  SUB    a1, a1, a1, lsr #2
                  SUB    a1, a1, a1, lsr #4
                  ADD    a1, a1, a1, lsr #8
                  ADD    a1, a1, a1, lsr #16
                  ADD    a1, a1, lsr #3
                  MOV    a3, a1, a1, asl #2
                  ADD    a2, a2, a3, asl #1
                  SUBS   a1, a1, #1
                  ADDPL  a2, a2, #10
                  ADDMI  pc, lr
                  MOV

                                                                                                        4-43
THUMB INSTRUCTION SET         S3C2410A

                       NOTES

4-44
S3C2410A             MEMORY CONTROLLER

5 MEMORY CONTROLLER

OVERVIEW

The S3C2410A's memory controller provides memory control signals required for external memory access.

The S3C2410A has the following features:

-- Little/Big endian (selectable by a software)
-- Address space: 128Mbytes per bank (total 1GB/8 banks)
-- Programmable access size (8/16/32-bit) for all banks except bank0 (16/32-bit)
-- Total 8 memory banks

     Six memory banks for ROM, SRAM, etc.
     Remaining two memory banks for ROM, SRAM, SDRAM, etc .
-- Seven fixed memory bank start address
-- Adjustable start address for the last bank.
-- Programmable bank size for the last two banks.
-- Programmable access cycles for all memory banks
-- External wait to extend the bus cycles
-- Supporting self-refresh and power down mode for SDRAM

          \                                                                                            5-1
MEMORY CONTROLLER                                                                                       S3C2410A

                   OM[1:0] = 01,10                      OM[1:0] = 00
                                                          Not used
0xFFFF_FFFF

                         Not used

0x6000_0000                    SFR Area                 SFR Area
0x4800_0000
0x4000_0FFF                   BootSRAM                  Not used
0x4000_0000                    (4KBytes)
0x3800_0000                                             SROM/SDRAM                  2MB/4MB/8MB/16MB    Refer to
0x3000_0000                SROM/SDRAM                       (nGCS7)                 /32MB/64MB/128MB    Table 5-1
0x2800_0000                    (nGCS7)
0x2000_0000                                             SROM/SDRAM                  2MB/4MB/8MB/16MB
0x1800_0000                SROM/SDRAM                       (nGCS6)                 /32MB/64MB/128MB
0x1000_0000                    (nGCS6)
0x0800_0000                                                  SROM                   128MB
0x0000_0000                      SROM                       (nGCS5)
                               (nGCS5)                                              128MB                           1GB
                                                             SROM                   128MB               HADDR[29:0]
                                 SROM                       (nGCS4)
                               (nGCS4)                                                                     Accessible
                                                             SROM                                               Region
                                 SROM                       (nGCS3)
                               (nGCS3)                                              128MB
                                                             SROM
                                 SROM                       (nGCS2)                 128MB
                               (nGCS2)
                                                             SROM
                                 SROM                       (nGCS1)
                               (nGCS1)
                                                        Boot Internal               128MB
                                 SROM                   SRAM (4KB)
                               (nGCS0)
                                                   [Using NAND flash for boot ROM]
              [Not using NAND flash for boot ROM]

              NOTES:
              1. SROM means ROM or SRAM type memory.
              2. SFR means Special Function Register.

                         Figure 5-1. S3C2410A Memory Map after Reset

                                      Table 5-1. Bank 6/7 Addresses

     Address  2MB        4MB                       8MB  16MB           32MB                64MB         128MB

Bank 6

Start address 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000 0x3000_0000

End address 0x301f_ffff 0x303f_ffff 0x307f_ffff         0x30ff_ffff    0x31ff_ffff         0x33ff_ffff  0x37ff_ffff

Bank 7

Start address 0x3020_0000 0x3040_0000 0x3080_0000 0x3100_0000 0x3200_0000 0x3400_0000 0x3800_0000

End address 0x303f_ffff  0x307f_ffff  0x30ff_ffff       0x31ff_ffff    0x33ff_ffff         0x37ff_ffff  0x3fff_ffff

NOTE: Bank 6 and 7 must have the same memory size.

5-2
S3C2410A                                                        MEMORY CONTROLLER

FUNCTION DESCRIPTION

BANK0 BUS WIDTH

The data bus of BANK0 (nGCS0) should be configured to either 16-bit or 32-bit accordingly. Because the BANK0
works as the booting ROM bank (map to 0x0000_0000), the bus width of BANK0 should be determined before the
first ROM access, which will depend on the logic level of OM[1:0] at Reset.

OM1 (Operating Mode 1)  OM0 (Operating Mode 0)                  Booting ROM Data width
                 0                       0                            Nand Flash Mode
                 0                       1                                    16-bit
                 1                       0                                    32-bit
                 1                       1                                Test Mode

MEMORY (SROM/SDRAM) ADDRESS PIN CONNECTIONS

MEMORY ADDR. PIN   S3C2410A ADDR.            S3C2410A ADDR.     S3C2410A ADDR.
                   @ 8-bit DATA BUS          @ 16-bit DATA BUS  @ 32-bit DATA BUS
             A0
             A1              A0                        A1                 A2
                             A1                        A2                 A3
              
                                                                    

                                                                                        5-3
MEMORY CONTROLLER                                                                  S3C2410A

SDRAM BANK ADDRESS PIN CONNECTION                                    Bank Address
                                                                             A20
                        Table 5-2. SDRAM Bank Address Configuration          A21

Bank Size   Bus Width Base Component  Memory Configuration                   A22

     2MB           x8   16Mb          ( 1M x 8 x 2banks) x 1 ea           A[22:21]
                                                                             A22
                   x16                (512K x 16 x 2banks) x 1 ea
                                                                          A[22:21]
     4MB           x8   16Mb          ( 2M x 4 x 2banks) x 2 ea              A23

                   x16                ( 1M x 8 x 2banks) x 2 ea           A[23:22]
                                                                             A23
                   x32                (512K x 16 x 2banks) x 2 ea
                                                                          A[23:22]
     8MB           x16  16Mb          ( 2M x 4 x 2banks) x 4 ea              A23

                   x32                ( 1M x 8 x 2banks) x 4 ea           A[23:22]

                   x8   64Mb          ( 4M x 8 x 2banks) x 1 ea              A24
                                                                          A[24:23]
                   x8                 ( 2M x 8 x 4banks) x 1 ea
                                                                             A24
                   x16                ( 2M x 16 x 2banks) x 1 ea          A[24:23]

                   x16                ( 1M x 16 x 4banks) x 1 ea          A[25:24]

                   x32                (512K x 32 x 4banks) x 1 ea         A[26:25]

     16MB          x32  16Mb          ( 2M x 4 x 2banks) x 8 ea

                   x8   64Mb          ( 8M x 4 x 2banks) x 2 ea

                   x8                 ( 4M x 4 x 4banks) x 2 ea

                   x16                ( 4M x 8 x 2banks) x 2 ea

                   x16                ( 2M x 8 x 4banks) x 2 ea

                   x32                ( 2M x 16 x 2banks) x 2 ea

                   x32                ( 1M x 16 x 4banks) x 2 ea

                   x8   128Mb         ( 4M x 8 x 4banks) x 1 ea

                   x16                ( 2M x 16 x 4banks) x 1 ea

     32MB          x16  64Mb          ( 8M x 4 x 2banks) x 4 ea

                   x16                ( 4M x 4 x 4banks) x 4 ea

                   x32                ( 4M x 8 x 2banks) x 4 ea

                   x32                ( 2M x 8 x 4banks) x 4 ea

                   x16  128Mb         ( 4M x 8 x 4banks) x 2 ea

                   x32                ( 2M x 16 x 4banks) x 2 ea

                   x8   256Mb         ( 8M x 8 x 4banks) x 1 ea

                   x16                ( 4M x 16 x 4banks) x 1 ea

     64MB          x32  128Mb         ( 4M x 8 x 4banks) x 4 ea

                   x16  256Mb         ( 8M x 8 x 4banks) x 2 ea

                   x32                ( 4M x 16 x 4banks) x 2 ea

                   x8   512Mb         ( 16M x 8 x 4banks) x 1 ea

     128MB         x32  256Mb         ( 8M x 8 x 4banks) x 4 ea

                   x8   512Mb         ( 32M x 4 x 4banks) x 2 ea

                   x16                ( 16M x 8 x 4banks) x 2 ea

                   x32                ( 8M x 16 x 4banks) x 2 ea

5-4
S3C2410A                                                                 MEMORY CONTROLLER

nWAIT PIN OPERATION

If the WAIT corresponding to each memory bank is enabled, the nOE duration should be prolonged by the external
nWAIT pin while the memory bank is active. nWAIT is checked from tacc-1. nOE will be deasserted at the next
clock after sampling nWAIT is high. The nWE signal have the same relation with nOE.

HCLK     Tacs                   Tacc=4  Delayed
ADDR                       Tcos             Sampling nWAIT
nGCS

  nOE
nWAIT
DATA(R)

          Figure 5-2. S3C2410A External nWAIT Timing Diagram (Tacc = 4)

                                                                         5-5
MEMORY CONTROLLER                                                           S3C2410A

nXBREQ/nXBACK Pin Operation

If nXBREQ is asserted, the S3C2410A will respond by lowering nXBACK. If nXBACK = L, the address/data bus and
memory control signals are in Hi-z state as shown in Table 1-1. When nXBREQ is de-asserted, the nXBACK will also
be de-asserted.

           HCLK    ~~ ~~  ~~

           SCLK                                                       1CLK

SCKE, A[24:0]
D[31:0],nGCS

     nOE,nWE
          nWBE

       nXBREQ

       nXBACK

                          ~~

                   Figure 5-3. S3C2410A nXBREQ/nXBACK Timing Diagram

5-6
S3C2410A                                                    MEMORY CONTROLLER
ROM Memory Interface Examples

                                A0 A0      DQ0  D0
                                A1 A1      DQ1  D1
                                A2 A2      DQ2  D2
                                A3 A3      DQ3  D3
                                A4 A4      DQ4  D4
                                A5 A5      DQ5  D5
                                A6 A6      DQ6  D6
                                A7 A7      DQ7  D7
                                A8 A8
                                A9 A9      nWE  nWE
                               A10 A10     nOE  nOE
                               A11 A11     nCE  nGCSn
                               A12 A12
                               A13 A13
                               A14 A14
                               A15 A15

         Figure 5-4. Memory Interface with 8-bit ROM

A1 A0                         DQ0  D0      A1 A0      DQ0  D8
A2 A1                         DQ1  D1      A2 A1      DQ1  D9
A3 A2                         DQ2  D2      A3 A2      DQ2  D10
A4 A3                         DQ3  D3      A4 A3      DQ3  D11
A5 A4                         DQ4  D4      A5 A4      DQ4  D12
A6 A5                         DQ5  D5      A6 A5      DQ5  D13
A7 A6                         DQ6  D6      A7 A6      DQ6  D14
A8 A7                         DQ7  D7      A8 A7      DQ7  D15
A9 A8                                      A9 A8
A10 A9                         nWE  nWBE0  A10 A9      nWE  nWBE1
A11 A10                        nOE  nOE    A11 A10     nOE  nOE
A12 A11                        nCE  nGCSn  A12 A11     nCE  nGCSn
A13 A12                                    A13 A12
A14 A13                                    A14 A13
A15 A14                                    A15 A14
A16 A15                                    A16 A15

         Figure 5-5. Memory Interface with 8-bit ROM 2

                                                                   5-7
MEMORY CONTROLLER                                                                     S3C2410A

      A2 A0   DQ0 D0   A2 A0     DQ0 D8   A2 A0     DQ0 D16             A2 A0    DQ0  D24
      A3 A1                                                                      DQ1  D25
      A4 A2   DQ1 D1   A3 A1     DQ1 D9   A3 A1     DQ1 D17             A3 A1    DQ2  D26
      A5 A3                                                                      DQ3  D27
      A6 A4   DQ2 D2   A4 A2     DQ2 D10  A4 A2     DQ2 D18             A4 A2    DQ4  D28
      A7 A5                                                                      DQ5  D29
      A8 A6   DQ3 D3   A5 A3     DQ3 D11  A5 A3     DQ3 D19             A5 A3    DQ6  D30
      A9 A7                                                                      DQ7  D31
     A10 A8   DQ4 D4   A6 A4     DQ4 D12  A6 A4     DQ4 D20             A6 A4
     A11 A9                                                                      nWE  nWBE3
     A12 A10  DQ5 D5   A7 A5     DQ5 D13  A7 A5     DQ5 D21             A7 A5    nOE  nOE
     A13 A11                                                                     nCE  nGCSn
     A14 A12  DQ6 D6   A8 A6     DQ6 D14  A8 A6     DQ6 D22             A8 A6
     A15 A13
     A16 A14  DQ7 D7   A9 A7     DQ7 D15  A9 A7     DQ7 D23             A9 A7
     A17 A15
                       A10 A8             A10 A8                        A10 A8

              nWE nWBE0 A11 A9   nWE nWBE1 A11 A9   nWE nWBE2 A11 A9

              nOE nOE  A12 A10   nOE nOE  A12 A10   nOE nOE A12 A10

              nCE nGCSn A13 A11  nCE nGCSn A13 A11  nCE nGCSn A13 A11

                       A14 A12            A14 A12                       A14 A12

                       A15 A13            A15 A13                       A15 A13

                       A16 A14            A16 A14                       A16 A14

                       A17 A15            A17 A15                       A17 A15

                       Figure 5-6. Memory Interface with 8-bit ROM 4

                        A1 A0              DQ0      D0
                        A2 A1              DQ1      D1
                        A3 A2              DQ2      D2
                        A4 A3              DQ3      D3
                        A5 A4              DQ4      D4
                        A6 A5              DQ5      D5
                        A7 A6              DQ6      D6
                        A8 A7              DQ7      D7
                        A9 A8              DQ8      D8
                       A10 A9              DQ9      D9
                       A11 A10            DQ10      D10
                       A12 A11            DQ11      D11
                       A13 A12            DQ12      D12
                       A14 A13            DQ13      D13
                       A15 A14            DQ14      D14
                       A16 A15            DQ15      D15
                       A17 A16
                       A18 A17            nWE       nWE
                       A19 A18             nOE      nOE
                                           nCE      nGCSn

                       Figure 5-7. Memory Interface with 16-bit ROM

5-8
S3C2410A                                                              MEMORY CONTROLLER

SRAM Memory Interface Examples

                                 A1 A0    DQ0   D0
                                 A2 A1    DQ1   D1
                                 A3 A2    DQ2   D2
                                 A4 A3    DQ3   D3
                                 A5 A4    DQ4   D4
                                 A6 A5    DQ5   D5
                                 A7 A6    DQ6   D6
                                 A8 A7    DQ7   D7
                                 A9 A8    DQ8   D8
                                A10 A9    DQ9   D9
                                A11 A10  DQ10   D10
                                A12 A11  DQ11   D11
                                A13 A12  DQ12   D12
                                A14 A13  DQ13   D13
                                A15 A14  DQ14   D14
                                A16 A15  DQ15   D15

                                          nWE   nWE
                                          nOE   nOE
                                           nCS  nGCSn
                                           nUB  nBE1
                                           nLB  nBE0

                   Figure 5-8. Memory Interface with 16-bit SRAM

           A2 A0    DQ0         D0        A2 A0         DQ0           D16
           A3 A1    DQ1         D1        A3 A1         DQ1           D17
           A4 A2    DQ2         D2        A4 A2         DQ2           D18
           A5 A3    DQ3         D3        A5 A3         DQ3           D19
           A6 A4    DQ4         D4        A6 A4         DQ4           D20
           A7 A5    DQ5         D5        A7 A5         DQ5           D21
           A8 A6    DQ6         D6        A8 A6         DQ6           D22
           A9 A7    DQ7         D7        A9 A7         DQ7           D23
          A10 A8    DQ8         D8       A10 A8         DQ8           D24
          A11 A9    DQ9         D9       A11 A9         DQ9           D25
          A12 A10  DQ10         D10      A12 A10       DQ10           D26
          A13 A11  DQ11         D11      A13 A11       DQ11           D27
          A14 A12  DQ12         D12      A14 A12       DQ12           D28
          A15 A13  DQ13         D13      A15 A13       DQ13           D29
          A16 A14  DQ14         D14      A16 A14       DQ14           D30
          A17 A15  DQ15         D15      A17 A15       DQ15           D31

                    nWE         nWE                     nWE           nWE
                    nOE         nOE                     nOE           nOE
                     nCS        nGCSn                    nCS          nGCSn
                     nUB        nBE1                     nUB          nBE3
                     nLB        nBE0                     nLB          nBE2

                   Figure 5-9. Memory Interface with 16-bit SRAM 2

                                                                             5-9
MEMORY CONTROLLER                                                                                 S3C2410A
SDRAM Memory Interface Examples

                          A1     A0         DQ0  D0
                          A2     A1         DQ1  D1
                          A3     A2         DQ2  D2
                          A4     A3         DQ3  D3
                          A5     A4         DQ4  D4
                          A6     A5         DQ5  D5
                          A7     A6         DQ6  D6
                          A8     A7         DQ7  D7
                          A9     A8         DQ8  D8
                        A10      A9         DQ9  D9
                        A11      A10      DQ10   D10
                        A12      A11      DQ11   D11
                                          DQ12   D12
                        A21      BA0      DQ13   D13
                        A22      BA1      DQ14   D14
                     DQM0        LDQM     DQ15   D15
                     DQM1        UDQM
                                         nSCS    nSCS0
                     SCKE        SCKE   nSRAS    nSRAS
                     SCLK        SCLK   nSCAS    nSCAS
                                                 nWE
                                           nWE

      Figure 5-10. Memory Interface with 16-bit SDRAM(8MB: 1Mb 16 4banks)

           A2  A0        DQ0     D0          A2  A0         DQ0  D16
           A3  A1        DQ1     D1          A3  A1         DQ1  D17
           A4  A2        DQ2     D2          A4  A2         DQ2  D18
           A5  A3        DQ3     D3          A5  A3         DQ3  D19
           A6  A4        DQ4     D4          A6  A4         DQ4  D20
           A7  A5        DQ5     D5          A7  A5         DQ5  D21
           A8  A6        DQ6     D6          A8  A6         DQ6  D22
           A9  A7        DQ7     D7          A9  A7         DQ7  D23
         A10   A8        DQ8     D8        A10   A8         DQ8  D24
         A11   A9        DQ9     D9        A11   A9         DQ9  D25
         A12   A10     DQ10      D10       A12   A10      DQ10   D26
         A13   A11     DQ11      D11       A13   A11      DQ11   D27
                       DQ12      D12                      DQ12   D28
         A22   BA0     DQ13      D13       A22   BA0      DQ13   D29
         A23   BA1     DQ14      D14       A23   BA1      DQ14   D30
      DQM0     LDQM    DQ15      D15    DQM2     LDQM     DQ15   D31
      DQM1     UDQM                     DQM3     UDQM
                       nSCS      nSCS0                    nSCS   nSCS0
      SCKE     SCKE  nSRAS       nSRAS  SCKE     SCKE   nSRAS    nSRAS
      SCLK     SCLK  nSCAS       nSCAS  SCLK     SCLK   nSCAS    nSCAS
                                 nWE                             nWE
                        nWE                                nWE

                 Figure 5-11. Memory Interface with 16-bit SDRAM (16MB: 1Mb 16 4banks 2ea)
NOTE: Refer to Table 5-2 for the Bank Address configurations of SDRAM.

5-10
S3C2410A                                                     MEMORY CONTROLLER
PROGRAMMABLE ACCESS CYCLE

       HCLK    Tacs                                          Tcah
      A[24:0]           Tcos
       nGCS
                                Tacc  Tacp
         nOE
         nWE                                           Tcoh
       nWBE
D[31:0](R)
D[31:0] (W)

               Tacs = 1 cycle         Tacp = 2 cycles
               Tcos = 1 cycle         Tcoh = 1 cycle
               Tacc = 3 cycles        Tcah = 2 cycles

               Figure 5-12. S3C2410A nGCS Timing Diagram

                                                                   5-11
MEMORY CONTROLLER                                                             S3C2410A

              HCLK               Trp
              SCKE
              nSCS                            Trcd
            nSRAS
            nSCAS                     RA            Ca Cb Cc Cd Ce
              ADDR
                      BA              BA            BA BA BA BA BA
                  BA
            A10/AP                    RA
      DATA (CL2)
      DATA (CL3)                                    Da        Db Dc Dd De

               nWE                                  Da                        Db Dc Dd De
               DQM

                         Bank          Row          Write     Read (CL = 2, CL = 3, BL = 1)
                      Precharge       Active

                                              Trp = 2 cycle   Tcas = 2 cycle
                                              Trcd = 2 cycle  Tcp = 2 cycle

                          Figure 5-13. S3C2410A SDRAM Timing Diagram

5-12
S3C2410A                                                                   MEMORY CONTROLLER

BUS WIDTH & WAIT CONTRO