aboutsummaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorAntonio Niño Díaz <antonio.ninodiaz@arm.com>2019-02-11 09:58:53 +0000
committerGitHub <noreply@github.com>2019-02-11 09:58:53 +0000
commit873e394b3bf93214a441f9f98237b58fbbea55aa (patch)
tree9502a299d22c782c284d604a5fada651c2680c91 /services
parent9beee98acc6af787b4e56a2b34a6545b0c36f829 (diff)
parent70b0f2789e93f253bec5cbd2986d0de023c1bdf4 (diff)
downloadtrusted-firmware-a-873e394b3bf93214a441f9f98237b58fbbea55aa.tar.gz
Merge pull request #1810 from antonio-nino-diaz-arm/an/setjmp
Make setjmp/longjmp compliant with the C standard and move them to libc
Diffstat (limited to 'services')
-rw-r--r--services/std_svc/sdei/sdei_dispatch.S4
-rw-r--r--services/std_svc/sdei/sdei_intr_mgmt.c14
-rw-r--r--services/std_svc/sdei/sdei_private.h2
3 files changed, 10 insertions, 10 deletions
diff --git a/services/std_svc/sdei/sdei_dispatch.S b/services/std_svc/sdei/sdei_dispatch.S
index a7a4a40f73..8449e4b5ab 100644
--- a/services/std_svc/sdei/sdei_dispatch.S
+++ b/services/std_svc/sdei/sdei_dispatch.S
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -9,7 +9,7 @@
.globl begin_sdei_synchronous_dispatch
/*
- * void begin_sdei_synchronous_dispatch(struct jmpbuf *buffer);
+ * void begin_sdei_synchronous_dispatch(jmp_buf *buffer);
*
* Begin SDEI dispatch synchronously by setting up a jump point, and exiting
* EL3. This jump point is jumped to by the dispatcher after the event is
diff --git a/services/std_svc/sdei/sdei_intr_mgmt.c b/services/std_svc/sdei/sdei_intr_mgmt.c
index b8799cd49f..fa1d3d2839 100644
--- a/services/std_svc/sdei/sdei_intr_mgmt.c
+++ b/services/std_svc/sdei/sdei_intr_mgmt.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2017-2019, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -31,7 +31,7 @@
typedef struct sdei_dispatch_context {
sdei_ev_map_t *map;
uint64_t x[SDEI_SAVED_GPREGS];
- struct jmpbuf *dispatch_jmp;
+ jmp_buf *dispatch_jmp;
/* Exception state registers */
uint64_t elr_el3;
@@ -236,7 +236,7 @@ static cpu_context_t *restore_and_resume_ns_context(void)
* SDEI client.
*/
static void setup_ns_dispatch(sdei_ev_map_t *map, sdei_entry_t *se,
- cpu_context_t *ctx, struct jmpbuf *dispatch_jmp)
+ cpu_context_t *ctx, jmp_buf *dispatch_jmp)
{
sdei_dispatch_context_t *disp_ctx;
@@ -347,7 +347,7 @@ int sdei_intr_handler(uint32_t intr_raw, uint32_t flags, void *handle,
unsigned int sec_state;
sdei_cpu_state_t *state;
uint32_t intr;
- struct jmpbuf dispatch_jmp;
+ jmp_buf dispatch_jmp;
const uint64_t mpidr = read_mpidr_el1();
/*
@@ -529,7 +529,7 @@ int sdei_dispatch_event(int ev_num)
cpu_context_t *ns_ctx;
sdei_dispatch_context_t *disp_ctx;
sdei_cpu_state_t *state;
- struct jmpbuf dispatch_jmp;
+ jmp_buf dispatch_jmp;
/* Can't dispatch if events are masked on this PE */
state = sdei_get_this_pe_state();
@@ -595,9 +595,9 @@ int sdei_dispatch_event(int ev_num)
return 0;
}
-static void end_sdei_synchronous_dispatch(struct jmpbuf *buffer)
+static void end_sdei_synchronous_dispatch(jmp_buf *buffer)
{
- longjmp(buffer);
+ longjmp(*buffer, 1);
}
int sdei_event_complete(bool resume, uint64_t pc)
diff --git a/services/std_svc/sdei/sdei_private.h b/services/std_svc/sdei/sdei_private.h
index 148643129c..8cc66e76d9 100644
--- a/services/std_svc/sdei/sdei_private.h
+++ b/services/std_svc/sdei/sdei_private.h
@@ -243,6 +243,6 @@ int64_t sdei_pe_mask(void);
int sdei_intr_handler(uint32_t intr_raw, uint32_t flags, void *handle,
void *cookie);
bool can_sdei_state_trans(sdei_entry_t *se, sdei_action_t act);
-void begin_sdei_synchronous_dispatch(struct jmpbuf *buffer);
+void begin_sdei_synchronous_dispatch(jmp_buf *buffer);
#endif /* SDEI_PRIVATE_H */