| #
3f050aed |
| 06-Mar-2025 |
Jens Wiklander <jens.wiklander@linaro.org> |
libutils: asm.S: fix BTI() macro
The BTI() macro conditionally emits assembly instructions or directives depending on CFG_CORE_BTI and CFG_TA_BTI configuration, but it doesn't take ldelf into consid
libutils: asm.S: fix BTI() macro
The BTI() macro conditionally emits assembly instructions or directives depending on CFG_CORE_BTI and CFG_TA_BTI configuration, but it doesn't take ldelf into consideration. ldelf depends on CFG_CORE_BTI just as OP-TEE core. Fix this by adding __LDELF__ to the mix.
Fixes: af432c48741c ("libutils: asm.S : Introduce BTI in macros for functions") Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| #
97a70d28 |
| 20-Jun-2023 |
Alvin Chang <alvinga@andestech.com> |
libutils: Add riscv.S to make it available for core and TA libs
Some assembly macros are necessary for both OP-TEE core and TA libraries. Therefore, we add riscv specific assembly file into libutils
libutils: Add riscv.S to make it available for core and TA libs
Some assembly macros are necessary for both OP-TEE core and TA libraries. Therefore, we add riscv specific assembly file into libutils and move some assembly related macros from riscv.h to riscv.S.
Signed-off-by: Alvin Chang <alvinga@andestech.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Marouene Boubakri <marouene.boubakri@nxp.com>
show more ...
|
| #
181f8492 |
| 06-Dec-2021 |
Ruchika Gupta <ruchika.gupta@linaro.org> |
Generate ELF Note for BTI in all arm64 asm files
Add program property note section in the assembly files to ensure that when linking them, program property note section is generated in the final ELF
Generate ELF Note for BTI in all arm64 asm files
Add program property note section in the assembly files to ensure that when linking them, program property note section is generated in the final ELF.
Signed-off-by: Ruchika Gupta <ruchika.gupta@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
03bada66 |
| 19-Nov-2021 |
Ruchika Gupta <ruchika.gupta@linaro.org> |
libutils: asm.S : Introduce parameter _bti in FUNC's
There are few places where the original macros FUNC and LOCAL_FUNC are used to define vector tables or exception vector tables. To take care of s
libutils: asm.S : Introduce parameter _bti in FUNC's
There are few places where the original macros FUNC and LOCAL_FUNC are used to define vector tables or exception vector tables. To take care of such assembly code where BTI is not needed, introduce new parameter _bti. If the _bti passed to the function is not default, don't add BTI launchpad to the function.
Signed-off-by: Ruchika Gupta <ruchika.gupta@linaro.org> Reviewed-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
af432c48 |
| 02-Nov-2021 |
Ruchika Gupta <ruchika.gupta@linaro.org> |
libutils: asm.S : Introduce BTI in macros for functions
When the TEE core, TA's or user space libraries are built for BTI, add a BTI landing pad to the start of all functions, ensuring that they are
libutils: asm.S : Introduce BTI in macros for functions
When the TEE core, TA's or user space libraries are built for BTI, add a BTI landing pad to the start of all functions, ensuring that they are BTI safe.
Signed-off-by: Ruchika Gupta <ruchika.gupta@linaro.org> Reviewed-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
44a8a0cf |
| 22-Apr-2021 |
Jerome Forissier <jerome@forissier.org> |
libutils: asm.S: introduce WEAK_FUNC
Adds a WEAK_FUNC macro which does the same as FUNC but defines a weak symbol rather than a global one.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Re
libutils: asm.S: introduce WEAK_FUNC
Adds a WEAK_FUNC macro which does the same as FUNC but defines a weak symbol rather than a global one.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
914103c1 |
| 22-Apr-2021 |
Jerome Forissier <jerome@forissier.org> |
libutils: asm.S: reorder macro definitions
Define function macros first, then data macros. No functional change.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere
libutils: asm.S: reorder macro definitions
Define function macros first, then data macros. No functional change.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
762a5553 |
| 19-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
Add alignment parameter to FUNC() and LOCAL_FUNC() macros
Adds a default alignment parameter to FUNC() and LOCAL_FUNC() assembly macros. This is needed since the function macro also sets the sectio
Add alignment parameter to FUNC() and LOCAL_FUNC() macros
Adds a default alignment parameter to FUNC() and LOCAL_FUNC() assembly macros. This is needed since the function macro also sets the section of the function making any alignment directives before the function macro useless.
Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
3513f961 |
| 03-Sep-2020 |
Jerome Forissier <jerome@forissier.org> |
arm32: fold UNWIND(.fnstart/.fnend) into the FUNC macros
This change applies to arm32 assembler sources.
Instead of using UNWIND(.fnstart) after FUNC or LOCAL_FUNC and UNWIND(.fnend) before END_FUN
arm32: fold UNWIND(.fnstart/.fnend) into the FUNC macros
This change applies to arm32 assembler sources.
Instead of using UNWIND(.fnstart) after FUNC or LOCAL_FUNC and UNWIND(.fnend) before END_FUNC, let's fold these statements into the FUNC macros.
The .fnstart/.fnend directives mark the start and end of a function with an unwind table entry (.ARM.exidx) and therefore a function without them has no entry and cannot be unwound. This means that a stack dump (on abort or panic) would stop when reaching such a function.
As a result of this patch, a small number of functions now have an entry in the unwind table when they had none before (the functions which were using FUNC or LOCAL_FUNC but had no .fnstart/.fnend). It was almost always a bug and this pacth only increases the size of the .ARM.exidx section by a few bytes (tested on QEMU).
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| #
827be46c |
| 03-Sep-2020 |
Jerome Forissier <jerome@forissier.org> |
arm32: move the UNWIND() macro to <asm.S>
All the users of the UNWIND() macro include <asm.S> already, which is therefore a good place to define this macro. Let's move it from <kernel/unwind.h> to <
arm32: move the UNWIND() macro to <asm.S>
All the users of the UNWIND() macro include <asm.S> already, which is therefore a good place to define this macro. Let's move it from <kernel/unwind.h> to <asm.S>, remove a couple of duplicates in assembler files, and drop the useless includes.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| #
0095acfc |
| 15-Oct-2019 |
Jens Wiklander <jens.wiklander@linaro.org> |
Assembly FUNC macros take optional section
Adds an optional section parameter to the macros FUNC() and LOCAL_FUNC()
Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklande
Assembly FUNC macros take optional section
Adds an optional section parameter to the macros FUNC() and LOCAL_FUNC()
Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
ff7c2da6 |
| 03-Apr-2019 |
Jerome Forissier <jerome.forissier@linaro.org> |
Force alignment of assembler functions (FUNC and LOCAL_FUNC) to 4 bytes
The Clang assembler will not align all the functions containing arm32 code (as opposed to thumb) on 4-byte boundaries, contrar
Force alignment of assembler functions (FUNC and LOCAL_FUNC) to 4 bytes
The Clang assembler will not align all the functions containing arm32 code (as opposed to thumb) on 4-byte boundaries, contrary to GCC. For example, with the current code, the syscall wrappers in libutee are like so:
# GCC 8.2.1 $ arm-linux-gnueabihf-objdump -x utee_syscalls_a32.o | \ grep '\.text\.utee_.*\*\*' | head -3 3 .text.utee_panic 00000014 00000000 00000000 00000034 2**2 6 .text.utee_return 00000014 00000000 00000000 0000005c 2**2 9 .text.utee_log 00000014 00000000 00000000 00000078 2**2
# Clang 8.0.0 $ arm-linux-gnueabihf-objdump -x utee_syscalls_a32.o | \ grep '\.text\.utee_.*\*\*' | head -3 1 .text.utee_panic 00000014 00000000 00000000 00000034 2**0 4 .text.utee_return 00000014 00000000 00000000 0000005c 2**0 6 .text.utee_log 00000014 00000000 00000000 00000078 2**0
The bad alignment constraint can cause run time exceptions. Add a ".balign 4" to FUNC and LOCAL_FUNC to fix that.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
d3642135 |
| 25-Mar-2019 |
Jerome Forissier <jerome.forissier@linaro.org> |
libutils: asm.S: remove .func/.endfunc directives
The .func and .endfunc directives are ignored unless the file is compiled with debugging enabled and --gstabs. Since we do not use this debugging fo
libutils: asm.S: remove .func/.endfunc directives
The .func and .endfunc directives are ignored unless the file is compiled with debugging enabled and --gstabs. Since we do not use this debugging format, .func and .endfunc are effectively no-ops.
The Clang compiler does not recognize these directives. Therefore, in preparation for Clang support, remove them.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
dc0f4ec2 |
| 16-May-2018 |
Etienne Carriere <etienne.carriere@st.com> |
Remove license notice from STMicroelectronics files
Since a while the source files license info are defined by SPDX identifiers. We can safely remove the verbose license text from the files that are
Remove license notice from STMicroelectronics files
Since a while the source files license info are defined by SPDX identifiers. We can safely remove the verbose license text from the files that are owned by either only STMicroelectronics or only both Linaro and STMicroelectronics.
Signed-off-by: Etienne Carriere <etienne.carriere@st.com> Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
1bb92983 |
| 15-Dec-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Add SPDX license identifiers
Adds one SPDX-License-Identifier line [1] to each source files that contains license text.
Generated by [2]: spdxify.py --add-spdx optee_os/
The scancode tool [3] wa
Add SPDX license identifiers
Adds one SPDX-License-Identifier line [1] to each source files that contains license text.
Generated by [2]: spdxify.py --add-spdx optee_os/
The scancode tool [3] was used to double check the license matching code in the Python script. All the licenses detected by scancode are either detected by spdxify.py, or have no SPDX identifier, or are false matches.
Link: [1] https://spdx.org/licenses/ Link: [2] https://github.com/jforissier/misc/blob/f7b56c8/spdxify.py Link: [3] https://github.com/nexB/scancode-toolkit Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Joakim Bech <joakim.bech@linaro.org>
show more ...
|
| #
8473540d |
| 02-Nov-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
Keep assembly functions in separate sections
To get a more fine grained selection of which area (init, paged, unpaged) an assembly function is assigned do the equivalent of -ffunction-sections but i
Keep assembly functions in separate sections
To get a more fine grained selection of which area (init, paged, unpaged) an assembly function is assigned do the equivalent of -ffunction-sections but in assembly.
Some functions has to be in specific places in the binary for a successful boot, link script is updated accordingly.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
a0fdab65 |
| 05-Jan-2016 |
Jens Wiklander <jens.wiklander@linaro.org> |
Assembly files should use FUNC* macros
* All assembly files should use the FUNC* macros for interwork to work properly. * Moves asm.S into libutils to make it available for TA libs
Reviewed-by: J
Assembly files should use FUNC* macros
* All assembly files should use the FUNC* macros for interwork to work properly. * Moves asm.S into libutils to make it available for TA libs
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey 32/64 bits) Reviewed-by: Pascal Brand <pascal.brand@linaro.org> Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU) Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|