diff options
author | Antonio Niño Díaz <antonio.ninodiaz@arm.com> | 2019-02-11 09:58:53 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-11 09:58:53 +0000 |
commit | 873e394b3bf93214a441f9f98237b58fbbea55aa (patch) | |
tree | 9502a299d22c782c284d604a5fada651c2680c91 /services | |
parent | 9beee98acc6af787b4e56a2b34a6545b0c36f829 (diff) | |
parent | 70b0f2789e93f253bec5cbd2986d0de023c1bdf4 (diff) | |
download | trusted-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.S | 4 | ||||
-rw-r--r-- | services/std_svc/sdei/sdei_intr_mgmt.c | 14 | ||||
-rw-r--r-- | services/std_svc/sdei/sdei_private.h | 2 |
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 */ |