On 14.12.20 10:03, Jan Beulich wrote:
On 14.12.2020 08:56, Juergen Gross wrote:Add support to run a function in an exception handler for Arm. Do it the same way as on x86 via a bug_frame.Unfortunately inline assembly on Arm seems to be less capable than on x86, leading to functions called via run_in_exception_handler() having to be globally visible.Could you extend on this? I don't understand what the relevant difference is, from just looking at the changes.
The problem seems to be that a static symbol referenced from the inline asm seems not to silence the error that this static symbol isn't being used. On x86 the bug_frame is constructed using the %c modifier, which is not supported for Arm (at least gcc 7 used in my compile test complained), but seems to be enough for gcc on x86 to not complain.
Signed-off-by: Juergen Gross <jgr...@suse.com> --- V4: - new patch I have verified the created bugframe is correct by inspecting the created binary. Signed-off-by: Juergen Gross <jgr...@suse.com> --- xen/arch/arm/traps.c | 10 +++++++++- xen/drivers/char/ns16550.c | 3 ++- xen/include/asm-arm/bug.h | 32 +++++++++++++++++++++----------- 3 files changed, 32 insertions(+), 13 deletions(-)Aiui you also need to modify xen.lds.S to cover the new (or really the last renamed) section.
Oh, right. I thought of that before, but forgot again. Thanks for the reminder. Juergen
OpenPGP_0xB0DE9DD628BF132F.asc
Description: application/pgp-keys
OpenPGP_signature
Description: OpenPGP digital signature