diff options
author | Andrew Thoelke <andrew.thoelke@arm.com> | 2014-03-18 13:46:55 +0000 |
---|---|---|
committer | Andrew Thoelke <andrew.thoelke@arm.com> | 2014-03-26 21:54:37 +0000 |
commit | 0a30cf54af7bb1f77b405062b1d5b44e809d0290 (patch) | |
tree | 9b7acf35e8b41803fb7a836dce428a9924ba1587 /lib | |
parent | dccc537a7243d784e0b8b81ce1634e385c3b048b (diff) |
Place assembler functions in separate sections
This extends the --gc-sections behaviour to the many assembler
support functions in the firmware images by placing each function
into its own code section. This is achieved by creating a 'func'
macro used to declare each function label.
Fixes ARM-software/tf-issues#80
Change-Id: I301937b630add292d2dec6d2561a7fcfa6fec690
Diffstat (limited to 'lib')
-rw-r--r-- | lib/arch/aarch64/cache_helpers.S | 30 | ||||
-rw-r--r-- | lib/arch/aarch64/misc_helpers.S | 76 | ||||
-rw-r--r-- | lib/arch/aarch64/sysreg_helpers.S | 223 | ||||
-rw-r--r-- | lib/arch/aarch64/tlb_helpers.S | 17 | ||||
-rw-r--r-- | lib/semihosting/aarch64/semihosting_call.S | 6 | ||||
-rw-r--r-- | lib/sync/locks/exclusive/spinlock.S | 8 |
6 files changed, 177 insertions, 183 deletions
diff --git a/lib/arch/aarch64/cache_helpers.S b/lib/arch/aarch64/cache_helpers.S index 26e4ba7..2696d90 100644 --- a/lib/arch/aarch64/cache_helpers.S +++ b/lib/arch/aarch64/cache_helpers.S @@ -44,58 +44,56 @@ .globl dcsw_op_louis .globl dcsw_op_all - .section .text, "ax"; .align 3 - -dcisw: ; .type dcisw, %function +func dcisw dc isw, x0 dsb sy isb ret -dccisw: ; .type dccisw, %function +func dccisw dc cisw, x0 dsb sy isb ret -dccsw: ; .type dccsw, %function +func dccsw dc csw, x0 dsb sy isb ret -dccvac: ; .type dccvac, %function +func dccvac dc cvac, x0 dsb sy isb ret -dcivac: ; .type dcivac, %function +func dcivac dc ivac, x0 dsb sy isb ret -dccivac: ; .type dccivac, %function +func dccivac dc civac, x0 dsb sy isb ret -dccvau: ; .type dccvau, %function +func dccvau dc cvau, x0 dsb sy isb ret -dczva: ; .type dczva, %function +func dczva dc zva, x0 dsb sy isb @@ -107,7 +105,7 @@ dczva: ; .type dczva, %function * size. 'x0' = addr, 'x1' = size * ------------------------------------------ */ -flush_dcache_range: ; .type flush_dcache_range, %function +func flush_dcache_range dcache_line_size x2, x3 add x1, x0, x1 sub x3, x2, #1 @@ -126,7 +124,7 @@ flush_loop: * size. 'x0' = addr, 'x1' = size * ------------------------------------------ */ -inv_dcache_range: ; .type inv_dcache_range, %function +func inv_dcache_range dcache_line_size x2, x3 add x1, x0, x1 sub x3, x2, #1 @@ -151,7 +149,7 @@ inv_loop: * x14 * ---------------------------------- */ -dcsw_op: ; .type dcsw_op, %function +func dcsw_op all_start_at_level: add x2, x10, x10, lsr #1 // work out 3x current cache level lsr x1, x0, x2 // extract cache type bits from clidr @@ -197,7 +195,7 @@ finished: ret -do_dcsw_op: ; .type do_dcsw_op, %function +func do_dcsw_op cbz x3, exit cmp x0, #DCISW b.eq dc_isw @@ -221,13 +219,13 @@ exit: ret -dcsw_op_louis: ; .type dcsw_op_louis, %function +func dcsw_op_louis dsb sy setup_dcsw_op_args x10, x3, x9, #LOUIS_SHIFT, #CLIDR_FIELD_WIDTH, #LEVEL_SHIFT b do_dcsw_op -dcsw_op_all: ; .type dcsw_op_all, %function +func dcsw_op_all dsb sy setup_dcsw_op_args x10, x3, x9, #LOC_SHIFT, #CLIDR_FIELD_WIDTH, #LEVEL_SHIFT b do_dcsw_op diff --git a/lib/arch/aarch64/misc_helpers.S b/lib/arch/aarch64/misc_helpers.S index 324be76..e3b4ab5 100644 --- a/lib/arch/aarch64/misc_helpers.S +++ b/lib/arch/aarch64/misc_helpers.S @@ -30,6 +30,7 @@ #include <arch_helpers.h> #include <runtime_svc.h> +#include <asm_macros.S> .globl enable_irq .globl disable_irq @@ -79,16 +80,15 @@ .globl zeromem16 .globl memcpy16 - .section .text, "ax" -get_afflvl_shift: ; .type get_afflvl_shift, %function +func get_afflvl_shift cmp x0, #3 cinc x0, x0, eq mov x1, #MPIDR_AFFLVL_SHIFT lsl x0, x0, x1 ret -mpidr_mask_lower_afflvls: ; .type mpidr_mask_lower_afflvls, %function +func mpidr_mask_lower_afflvls cmp x1, #3 cinc x1, x1, eq mov x2, #MPIDR_AFFLVL_SHIFT @@ -101,57 +101,57 @@ mpidr_mask_lower_afflvls: ; .type mpidr_mask_lower_afflvls, %function * Asynchronous exception manipulation accessors * ----------------------------------------------------- */ -enable_irq: ; .type enable_irq, %function +func enable_irq msr daifclr, #DAIF_IRQ_BIT ret -enable_fiq: ; .type enable_fiq, %function +func enable_fiq msr daifclr, #DAIF_FIQ_BIT ret -enable_serror: ; .type enable_serror, %function +func enable_serror msr daifclr, #DAIF_ABT_BIT ret -enable_debug_exceptions: +func enable_debug_exceptions msr daifclr, #DAIF_DBG_BIT ret -disable_irq: ; .type disable_irq, %function +func disable_irq msr daifset, #DAIF_IRQ_BIT ret -disable_fiq: ; .type disable_fiq, %function +func disable_fiq msr daifset, #DAIF_FIQ_BIT ret -disable_serror: ; .type disable_serror, %function +func disable_serror msr daifset, #DAIF_ABT_BIT ret -disable_debug_exceptions: +func disable_debug_exceptions msr daifset, #DAIF_DBG_BIT ret -read_daif: ; .type read_daif, %function +func read_daif mrs x0, daif ret -write_daif: ; .type write_daif, %function +func write_daif msr daif, x0 ret -read_spsr: ; .type read_spsr, %function +func read_spsr mrs x0, CurrentEl cmp x0, #(MODE_EL1 << MODE_EL_SHIFT) b.eq read_spsr_el1 @@ -161,22 +161,22 @@ read_spsr: ; .type read_spsr, %function b.eq read_spsr_el3 -read_spsr_el1: ; .type read_spsr_el1, %function +func read_spsr_el1 mrs x0, spsr_el1 ret -read_spsr_el2: ; .type read_spsr_el2, %function +func read_spsr_el2 mrs x0, spsr_el2 ret -read_spsr_el3: ; .type read_spsr_el3, %function +func read_spsr_el3 mrs x0, spsr_el3 ret -write_spsr: ; .type write_spsr, %function +func write_spsr mrs x1, CurrentEl cmp x1, #(MODE_EL1 << MODE_EL_SHIFT) b.eq write_spsr_el1 @@ -186,25 +186,25 @@ write_spsr: ; .type write_spsr, %function b.eq write_spsr_el3 -write_spsr_el1: ; .type write_spsr_el1, %function +func write_spsr_el1 msr spsr_el1, x0 isb ret -write_spsr_el2: ; .type write_spsr_el2, %function +func write_spsr_el2 msr spsr_el2, x0 isb ret -write_spsr_el3: ; .type write_spsr_el3, %function +func write_spsr_el3 msr spsr_el3, x0 isb ret -read_elr: ; .type read_elr, %function +func read_elr mrs x0, CurrentEl cmp x0, #(MODE_EL1 << MODE_EL_SHIFT) b.eq read_elr_el1 @@ -214,22 +214,22 @@ read_elr: ; .type read_elr, %function b.eq read_elr_el3 -read_elr_el1: ; .type read_elr_el1, %function +func read_elr_el1 mrs x0, elr_el1 ret -read_elr_el2: ; .type read_elr_el2, %function +func read_elr_el2 mrs x0, elr_el2 ret -read_elr_el3: ; .type read_elr_el3, %function +func read_elr_el3 mrs x0, elr_el3 ret -write_elr: ; .type write_elr, %function +func write_elr mrs x1, CurrentEl cmp x1, #(MODE_EL1 << MODE_EL_SHIFT) b.eq write_elr_el1 @@ -239,54 +239,54 @@ write_elr: ; .type write_elr, %function b.eq write_elr_el3 -write_elr_el1: ; .type write_elr_el1, %function +func write_elr_el1 msr elr_el1, x0 isb ret -write_elr_el2: ; .type write_elr_el2, %function +func write_elr_el2 msr elr_el2, x0 isb ret -write_elr_el3: ; .type write_elr_el3, %function +func write_elr_el3 msr elr_el3, x0 isb ret -dsb: ; .type dsb, %function +func dsb dsb sy ret -isb: ; .type isb, %function +func isb isb ret -sev: ; .type sev, %function +func sev sev ret -wfe: ; .type wfe, %function +func wfe wfe ret -wfi: ; .type wfi, %function +func wfi wfi ret -eret: ; .type eret, %function +func eret eret -smc: ; .type smc, %function +func smc smc #0 /* ----------------------------------------------------------------------- @@ -296,7 +296,7 @@ smc: ; .type smc, %function * The memory address must be 16-byte aligned. * ----------------------------------------------------------------------- */ -zeromem16: +func zeromem16 add x2, x0, x1 /* zero 16 bytes at a time */ z_loop16: @@ -322,7 +322,7 @@ z_end: ret * Destination and source addresses must be 16-byte aligned. * -------------------------------------------------------------------------- */ -memcpy16: +func memcpy16 /* copy 16 bytes at a time */ m_loop16: cmp x2, #16 diff --git a/lib/arch/aarch64/sysreg_helpers.S b/lib/arch/aarch64/sysreg_helpers.S index dfd0f2f..8e816f0 100644 --- a/lib/arch/aarch64/sysreg_helpers.S +++ b/lib/arch/aarch64/sysreg_helpers.S @@ -29,6 +29,7 @@ */ #include <arch_helpers.h> +#include <asm_macros.S> .globl read_vbar_el1 .globl read_vbar_el2 @@ -164,19 +165,17 @@ #endif - .section .text, "ax" - -read_current_el: ; .type read_current_el, %function +func read_current_el mrs x0, CurrentEl ret -read_id_pfr1_el1: ; .type read_id_pfr1_el1, %function +func read_id_pfr1_el1 mrs x0, id_pfr1_el1 ret -read_id_aa64pfr0_el1: ; .type read_id_aa64pfr0_el1, %function +func read_id_aa64pfr0_el1 mrs x0, id_aa64pfr0_el1 ret @@ -185,34 +184,34 @@ read_id_aa64pfr0_el1: ; .type read_id_aa64pfr0_el1, %function * VBAR accessors * ----------------------------------------------------- */ -read_vbar_el1: ; .type read_vbar_el1, %function +func read_vbar_el1 mrs x0, vbar_el1 ret -read_vbar_el2: ; .type read_vbar_el2, %function +func read_vbar_el2 mrs x0, vbar_el2 ret -read_vbar_el3: ; .type read_vbar_el3, %function +func read_vbar_el3 mrs x0, vbar_el3 ret -write_vbar_el1: ; .type write_vbar_el1, %function +func write_vbar_el1 msr vbar_el1, x0 isb ret -write_vbar_el2: ; .type write_vbar_el2, %function +func write_vbar_el2 msr vbar_el2, x0 isb ret -write_vbar_el3: ; .type write_vbar_el3, %function +func write_vbar_el3 msr vbar_el3, x0 isb ret @@ -222,34 +221,34 @@ write_vbar_el3: ; .type write_vbar_el3, %function * AFSR0 accessors * ----------------------------------------------------- */ -read_afsr0_el1: ; .type read_afsr0_el1, %function +func read_afsr0_el1 mrs x0, afsr0_el1 ret -read_afsr0_el2: ; .type read_afsr0_el2, %function +func read_afsr0_el2 mrs x0, afsr0_el2 ret -read_afsr0_el3: ; .type read_afsr0_el3, %function +func read_afsr0_el3 mrs x0, afsr0_el3 ret -write_afsr0_el1: ; .type write_afsr0_el1, %function +func write_afsr0_el1 msr afsr0_el1, x0 isb ret -write_afsr0_el2: ; .type write_afsr0_el2, %function +func write_afsr0_el2 msr afsr0_el2, x0 isb ret -write_afsr0_el3: ; .type write_afsr0_el3, %function +func write_afsr0_el3 msr afsr0_el3, x0 isb ret @@ -259,34 +258,34 @@ write_afsr0_el3: ; .type write_afsr0_el3, %function * FAR accessors * ----------------------------------------------------- */ -read_far_el1: ; .type read_far_el1, %function +func read_far_el1 mrs x0, far_el1 ret -read_far_el2: ; .type read_far_el2, %function +func read_far_el2 mrs x0, far_el2 ret -read_far_el3: ; .type read_far_el3, %function +func read_far_el3 mrs x0, far_el3 ret -write_far_el1: ; .type write_far_el1, %function +func write_far_el1 msr far_el1, x0 isb ret -write_far_el2: ; .type write_far_el2, %function +func write_far_el2 msr far_el2, x0 isb ret -write_far_el3: ; .type write_far_el3, %function +func write_far_el3 msr far_el3, x0 isb ret @@ -296,34 +295,34 @@ write_far_el3: ; .type write_far_el3, %function * MAIR accessors * ----------------------------------------------------- */ -read_mair_el1: ; .type read_mair_el1, %function +func read_mair_el1 mrs x0, mair_el1 ret -read_mair_el2: ; .type read_mair_el2, %function +func read_mair_el2 mrs x0, mair_el2 ret -read_mair_el3: ; .type read_mair_el3, %function +func read_mair_el3 mrs x0, mair_el3 ret -write_mair_el1: ; .type write_mair_el1, %function +func write_mair_el1 msr mair_el1, x0 isb ret -write_mair_el2: ; .type write_mair_el2, %function +func write_mair_el2 msr mair_el2, x0 isb ret -write_mair_el3: ; .type write_mair_el3, %function +func write_mair_el3 msr mair_el3, x0 isb ret @@ -333,34 +332,34 @@ write_mair_el3: ; .type write_mair_el3, %function * AMAIR accessors * ----------------------------------------------------- */ -read_amair_el1: ; .type read_amair_el1, %function +func read_amair_el1 mrs x0, amair_el1 ret -read_amair_el2: ; .type read_amair_el2, %function +func read_amair_el2 mrs x0, amair_el2 ret -read_amair_el3: ; .type read_amair_el3, %function +func read_amair_el3 mrs x0, amair_el3 ret -write_amair_el1: ; .type write_amair_el1, %function +func write_amair_el1 msr amair_el1, x0 isb ret -write_amair_el2: ; .type write_amair_el2, %function +func write_amair_el2 msr amair_el2, x0 isb ret -write_amair_el3: ; .type write_amair_el3, %function +func write_amair_el3 msr amair_el3, x0 isb ret @@ -370,17 +369,17 @@ write_amair_el3: ; .type write_amair_el3, %function * RVBAR accessors * ----------------------------------------------------- */ -read_rvbar_el1: ; .type read_rvbar_el1, %function +func read_rvbar_el1 mrs x0, rvbar_el1 ret -read_rvbar_el2: ; .type read_rvbar_el2, %function +func read_rvbar_el2 mrs x0, rvbar_el2 ret -read_rvbar_el3: ; .type read_rvbar_el3, %function +func read_rvbar_el3 mrs x0, rvbar_el3 ret @@ -389,34 +388,34 @@ read_rvbar_el3: ; .type read_rvbar_el3, %function * RMR accessors * ----------------------------------------------------- */ -read_rmr_el1: ; .type read_rmr_el1, %function +func read_rmr_el1 mrs x0, rmr_el1 ret -read_rmr_el2: ; .type read_rmr_el2, %function +func read_rmr_el2 mrs x0, rmr_el2 ret -read_rmr_el3: ; .type read_rmr_el3, %function +func read_rmr_el3 mrs x0, rmr_el3 ret -write_rmr_el1: ; .type write_rmr_el1, %function +func write_rmr_el1 msr rmr_el1, x0 isb ret -write_rmr_el2: ; .type write_rmr_el2, %function +func write_rmr_el2 msr rmr_el2, x0 isb ret -write_rmr_el3: ; .type write_rmr_el3, %function +func write_rmr_el3 msr rmr_el3, x0 isb ret @@ -426,34 +425,34 @@ write_rmr_el3: ; .type write_rmr_el3, %function * AFSR1 accessors * ----------------------------------------------------- */ -read_afsr1_el1: ; .type read_afsr1_el1, %function +func read_afsr1_el1 mrs x0, afsr1_el1 ret -read_afsr1_el2: ; .type read_afsr1_el2, %function +func read_afsr1_el2 mrs x0, afsr1_el2 ret -read_afsr1_el3: ; .type read_afsr1_el3, %function +func read_afsr1_el3 mrs x0, afsr1_el3 ret -write_afsr1_el1: ; .type write_afsr1_el1, %function +func write_afsr1_el1 msr afsr1_el1, x0 isb ret -write_afsr1_el2: ; .type write_afsr1_el2, %function +func write_afsr1_el2 msr afsr1_el2, x0 isb ret -write_afsr1_el3: ; .type write_afsr1_el3, %function +func write_afsr1_el3 msr afsr1_el3, x0 isb ret @@ -463,36 +462,36 @@ write_afsr1_el3: ; .type write_afsr1_el3, %function * SCTLR accessors * ----------------------------------------------------- */ -read_sctlr_el1: ; .type read_sctlr_el1, %function +func read_sctlr_el1 mrs x0, sctlr_el1 ret -read_sctlr_el2: ; .type read_sctlr_el2, %function +func read_sctlr_el2 mrs x0, sctlr_el2 ret -read_sctlr_el3: ; .type read_sctlr_el3, %function +func read_sctlr_el3 mrs x0, sctlr_el3 ret -write_sctlr_el1: ; .type write_sctlr_el1, %function +func write_sctlr_el1 msr sctlr_el1, x0 dsb sy isb ret -write_sctlr_el2: ; .type write_sctlr_el2, %function +func write_sctlr_el2 msr sctlr_el2, x0 dsb sy isb ret -write_sctlr_el3: ; .type write_sctlr_el3, %function +func write_sctlr_el3 msr sctlr_el3, x0 dsb sy isb @@ -503,36 +502,36 @@ write_sctlr_el3: ; .type write_sctlr_el3, %function * ACTLR accessors * ----------------------------------------------------- */ -read_actlr_el1: ; .type read_actlr_el1, %function +func read_actlr_el1 mrs x0, actlr_el1 ret -read_actlr_el2: ; .type read_actlr_el2, %function +func read_actlr_el2 mrs x0, actlr_el2 ret -read_actlr_el3: ; .type read_actlr_el3, %function +func read_actlr_el3 mrs x0, actlr_el3 ret -write_actlr_el1: ; .type write_actlr_el1, %function +func write_actlr_el1 msr actlr_el1, x0 dsb sy isb ret -write_actlr_el2: ; .type write_actlr_el2, %function +func write_actlr_el2 msr actlr_el2, x0 dsb sy isb ret -write_actlr_el3: ; .type write_actlr_el3, %function +func write_actlr_el3 msr actlr_el3, x0 dsb sy isb @@ -543,36 +542,36 @@ write_actlr_el3: ; .type write_actlr_el3, %function * ESR accessors * ----------------------------------------------------- */ -read_esr_el1: ; .type read_esr_el1, %function +func read_esr_el1 mrs x0, esr_el1 ret -read_esr_el2: ; .type read_esr_el2, %function +func read_esr_el2 mrs x0, esr_el2 ret -read_esr_el3: ; .type read_esr_el3, %function +func read_esr_el3 mrs x0, esr_el3 ret -write_esr_el1: ; .type write_esr_el1, %function +func write_esr_el1 msr esr_el1, x0 dsb sy isb ret -write_esr_el2: ; .type write_esr_el2, %function +func write_esr_el2 msr esr_el2, x0 dsb sy isb ret -write_esr_el3: ; .type write_esr_el3, %function +func write_esr_el3 msr esr_el3, x0 dsb sy isb @@ -583,36 +582,36 @@ write_esr_el3: ; .type write_esr_el3, %function * TCR accessors * ----------------------------------------------------- */ -read_tcr_el1: ; .type read_tcr_el1, %function +func read_tcr_el1 mrs x0, tcr_el1 ret -read_tcr_el2: ; .type read_tcr_el2, %function +func read_tcr_el2 mrs x0, tcr_el2 ret -read_tcr_el3: ; .type read_tcr_el3, %function +func read_tcr_el3 mrs x0, tcr_el3 ret -write_tcr_el1: ; .type write_tcr_el1, %function +func write_tcr_el1 msr tcr_el1, x0 dsb sy isb ret -write_tcr_el2: ; .type write_tcr_el2, %function +func write_tcr_el2 msr tcr_el2, x0 dsb sy isb ret -write_tcr_el3: ; .type write_tcr_el3, %function +func write_tcr_el3 msr tcr_el3, x0 dsb sy isb @@ -623,33 +622,33 @@ write_tcr_el3: ; .type write_tcr_el3, %function * CPTR accessors * ----------------------------------------------------- */ -read_cptr_el1: ; .type read_cptr_el1, %function +func read_cptr_el1 b read_cptr_el1 ret -read_cptr_el2: ; .type read_cptr_el2, %function +func read_cptr_el2 mrs x0, cptr_el2 ret -read_cptr_el3: ; .type read_cptr_el3, %function +func read_cptr_el3 mrs x0, cptr_el3 ret -write_cptr_el1: ; .type write_cptr_el1, %function +func write_cptr_el1 b write_cptr_el1 -write_cptr_el2: ; .type write_cptr_el2, %function +func write_cptr_el2 msr cptr_el2, x0 dsb sy isb ret -write_cptr_el3: ; .type write_cptr_el3, %function +func write_cptr_el3 msr cptr_el3, x0 dsb sy isb @@ -660,34 +659,34 @@ write_cptr_el3: ; .type write_cptr_el3, %function * TTBR0 accessors * ----------------------------------------------------- */ -read_ttbr0_el1: ; .type read_ttbr0_el1, %function +func read_ttbr0_el1 mrs x0, ttbr0_el1 ret -read_ttbr0_el2: ; .type read_ttbr0_el2, %function +func read_ttbr0_el2 mrs x0, ttbr0_el2 ret -read_ttbr0_el3: ; .type read_ttbr0_el3, %function +func read_ttbr0_el3 mrs x0, ttbr0_el3 ret -write_ttbr0_el1: ; .type write_ttbr0_el1, %function +func write_ttbr0_el1 msr ttbr0_el1, x0 isb ret -write_ttbr0_el2: ; .type write_ttbr0_el2, %function +func write_ttbr0_el2 msr ttbr0_el2, x0 isb ret -write_ttbr0_el3: ; .type write_ttbr0_el3, %function +func write_ttbr0_el3 msr ttbr0_el3, x0 isb ret @@ -697,121 +696,121 @@ write_ttbr0_el3: ; .type write_ttbr0_el3, %function * TTBR1 accessors * ----------------------------------------------------- */ -read_ttbr1_el1: ; .type read_ttbr1_el1, %function +func read_ttbr1_el1 mrs x0, ttbr1_el1 ret -read_ttbr1_el2: ; .type read_ttbr1_el2, %function +func read_ttbr1_el2 b read_ttbr1_el2 -read_ttbr1_el3: ; .type read_ttbr1_el3, %function +func read_ttbr1_el3 b read_ttbr1_el3 -write_ttbr1_el1: ; .type write_ttbr1_el1, %function +func write_ttbr1_el1 msr ttbr1_el1, x0 isb ret -write_ttbr1_el2: ; .type write_ttbr1_el2, %function +func write_ttbr1_el2 b write_ttbr1_el2 -write_ttbr1_el3: ; .type write_ttbr1_el3, %function +func write_ttbr1_el3 b write_ttbr1_el3 -read_hcr: ; .type read_hcr, %function +func read_hcr mrs x0, hcr_el2 ret -write_hcr: ; .type write_hcr, %function +func write_hcr msr hcr_el2, x0 dsb sy isb ret -read_cpacr: ; .type read_cpacr, %function +func read_cpacr mrs x0, cpacr_el1 ret -write_cpacr: ; .type write_cpacr, %function +func write_cpacr msr cpacr_el1, x0 ret -read_cntfrq_el0: ; .type read_cntfrq_el0, %function +func read_cntfrq_el0 mrs x0, cntfrq_el0 ret -write_cntfrq_el0: ; .type write_cntfrq_el0, %function +func write_cntfrq_el0 msr cntfrq_el0, x0 ret -read_cpuectlr: ; .type read_cpuectlr, %function +func read_cpuectlr mrs x0, CPUECTLR_EL1 ret -write_cpuectlr: ; .type write_cpuectlr, %function +func write_cpuectlr msr CPUECTLR_EL1, x0 dsb sy isb ret -read_cnthctl_el2: ; .type read_cnthctl_el2, %function +func read_cnthctl_el2 mrs x0, cnthctl_el2 ret -write_cnthctl_el2: ; .type write_cnthctl_el2, %function +func write_cnthctl_el2 msr cnthctl_el2, x0 ret -read_cntfrq: ; .type read_cntfrq, %function +func read_cntfrq mrs x0, cntfrq_el0 ret -write_cntfrq: ; .type write_cntfrq, %function +func write_cntfrq msr cntfrq_el0, x0 ret -write_scr: ; .type write_scr, %function +func write_scr msr scr_el3, x0 dsb sy isb ret -read_scr: ; .type read_scr, %function +func read_scr mrs x0, scr_el3 ret -read_midr: ; .type read_midr, %function +func read_midr mrs x0, midr_el1 ret -read_mpidr: ; .type read_mpidr, %function +func read_mpidr mrs x0, mpidr_el1 ret #if SUPPORT_VFP -enable_vfp: ; .type enable_vfp, %function +func enable_vfp mrs x0, cpacr_el1 orr x0, x0, #CPACR_VFP_BITS msr cpacr_el1, x0 @@ -822,14 +821,12 @@ enable_vfp: ; .type enable_vfp, %function ret - // int read_fpexc(void) -read_fpexc: ; .type read_fpexc, %function +func read_fpexc b read_fpexc ret - // void write_fpexc(int fpexc) -write_fpexc: ; .type write_fpexc, %function +func write_fpexc b write_fpexc ret diff --git a/lib/arch/aarch64/tlb_helpers.S b/lib/arch/aarch64/tlb_helpers.S index 69fd9f5..4244974 100644 --- a/lib/arch/aarch64/tlb_helpers.S +++ b/lib/arch/aarch64/tlb_helpers.S @@ -29,6 +29,7 @@ */ #include <arch_helpers.h> +#include <asm_macros.S> .globl tlbialle1 .globl tlbialle1is @@ -39,50 +40,48 @@ .globl tlbivmalle1 - .section .text, "ax" - -tlbialle1: ; .type tlbialle1, %function +func tlbialle1 tlbi alle1 dsb sy isb ret -tlbialle1is: ; .type tlbialle1is, %function +func tlbialle1is tlbi alle1is dsb sy isb ret -tlbialle2: ; .type tlbialle2, %function +func tlbialle2 tlbi alle2 dsb sy isb ret -tlbialle2is: ; .type tlbialle2is, %function +func tlbialle2is tlbi alle2is dsb sy isb ret -tlbialle3: ; .type tlbialle3, %function +func tlbialle3 tlbi alle3 dsb sy isb ret -tlbialle3is: ; .type tlbialle3is, %function +func tlbialle3is tlbi alle3is dsb sy isb ret -tlbivmalle1: ; .type tlbivmalle1, %function +func tlbivmalle1 tlbi vmalle1 dsb sy isb diff --git a/lib/semihosting/aarch64/semihosting_call.S b/lib/semihosting/aarch64/semihosting_call.S index 9ece624..e6a9675 100644 --- a/lib/semihosting/aarch64/semihosting_call.S +++ b/lib/semihosting/aarch64/semihosting_call.S @@ -28,10 +28,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ - .globl semihosting_call +#include <asm_macros.S> - .section .text, "ax" + .globl semihosting_call -semihosting_call: ; .type semihosting_call, %function +func semihosting_call hlt #0xf000 ret diff --git a/lib/sync/locks/exclusive/spinlock.S b/lib/sync/locks/exclusive/spinlock.S index 79d19e7..5eae2b0 100644 --- a/lib/sync/locks/exclusive/spinlock.S +++ b/lib/sync/locks/exclusive/spinlock.S @@ -28,13 +28,13 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include <asm_macros.S> + .globl spin_lock .globl spin_unlock - .section .text, "ax"; - -spin_lock: ; .type spin_lock, %function +func spin_lock mov w2, #1 sevl l1: wfe @@ -45,6 +45,6 @@ l2: ldaxr w1, [x0] ret -spin_unlock: ; .type spin_unlock, %function +func spin_unlock stlr wzr, [x0] ret |