What does ‘bank’ing a register mean?

Register banking refers to providing multiple copies of a register at the same address. Taken from section 1.4.6 of the arm docs The term is referring to a solution for the problem that not all registers can be seen at once. There is a different register bank for each processor mode. The banked registers give … Read more

What are the purposes of the ARM ABI and EABI?

An ABI (Application Binary Interface) is a standard that defines a mapping between low-level concepts in high-level languages and the abilities of a specific hardware/OS platform’s machine code. That includes things like: how C/C++/Fortran/… data types are laid out in memory (data sizes / alignments) how nested function calls work (where and how the information … Read more

What is the booting process for ARM?

Currently, there are two exception models in the ARM architecture (reset is considered a kind of exception): The classic model, used in pre-Cortex chip and current Cortex-A/R chips. In it, the memory at 0 contains several exception handlers: Offset Handler =============== 00 Reset 04 Undefined Instruction 08 Supervisor Call (SVC) 0C Prefetch Abort 10 Data … Read more

What is the difference between the ARM, Thumb and Thumb 2 instruction encodings?

Oh, ARM and their silly naming… It’s a common misconception, but officially there’s no such thing as a “Thumb-2 instruction set”. Ignoring ARMv8 (where everything is renamed and AArch64 complicates things), from ARMv4T to ARMv7-A there are two instruction sets: ARM and Thumb. They are both “32-bit” in the sense that they operate on up-to-32-bit-wide … Read more

What is the difference between FIQ and IRQ interrupt system?

ARM calls FIQ the fast interrupt, with the implication that IRQ is normal priority. In any real system, there will be many more sources of interrupts than just two devices and there will therefore be some external hardware interrupt controller which allows masking, prioritization etc. of these multiple sources and which drives the interrupt request … Read more