summaryrefslogtreecommitdiff
path: root/lib/aarch64
diff options
context:
space:
mode:
authorAndrew Thoelke <andrew.thoelke@arm.com>2014-04-28 12:32:02 +0100
committerAndrew Thoelke <andrew.thoelke@arm.com>2014-05-07 11:29:50 +0100
commit7935d0a59d439c993b79814ab414d37e4a90d9a6 (patch)
treeb441893641316f785bf782b24ac8877252eb8afb /lib/aarch64
parent2f5dcfef1db42f3b073ae657f8a94925abecd768 (diff)
Access system registers directly in assembler
Instead of using the system register helper functions to read or write system registers, assembler coded functions should use MRS/MSR instructions. This results in faster and more compact code. This change replaces all usage of the helper functions with direct register accesses. Change-Id: I791d5f11f257010bb3e6a72c6c5ab8779f1982b3
Diffstat (limited to 'lib/aarch64')
-rw-r--r--lib/aarch64/cpu_helpers.S10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/aarch64/cpu_helpers.S b/lib/aarch64/cpu_helpers.S
index 4e5eb5b..abb996d 100644
--- a/lib/aarch64/cpu_helpers.S
+++ b/lib/aarch64/cpu_helpers.S
@@ -35,13 +35,11 @@
func cpu_reset_handler
- mov x19, x30 // lr
-
/* ---------------------------------------------
* As a bare minimal enable the SMP bit.
* ---------------------------------------------
*/
- bl read_midr
+ mrs x0, midr_el1
lsr x0, x0, #MIDR_PN_SHIFT
and x0, x0, #MIDR_PN_MASK
cmp x0, #MIDR_PN_A57
@@ -49,9 +47,9 @@ func cpu_reset_handler
cmp x0, #MIDR_PN_A53
b.ne smp_setup_end
smp_setup_begin:
- bl read_cpuectlr
+ mrs x0, CPUECTLR_EL1
orr x0, x0, #CPUECTLR_SMP_BIT
- bl write_cpuectlr
+ msr CPUECTLR_EL1, x0
isb
smp_setup_end:
- ret x19
+ ret