blob: 05235ebb336d92e2c45b70f070f217e7e44ac1f6 [file] [log] [blame]
* Copyright (C) 2018 Linaro Ltd <>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
#include <linux/linkage.h>
stp x29, x30, [sp, #-32]!
mov x29, sp
* Register x18 is designated as the 'platform' register by the AAPCS,
* which means firmware running at the same exception level as the OS
* (such as UEFI) should never touch it.
stp x1, x18, [sp, #16]
* We are lucky enough that no EFI runtime services take more than
* 5 arguments, so all are passed in registers rather than via the
* stack.
mov x8, x0
mov x0, x2
mov x1, x3
mov x2, x4
mov x3, x5
mov x4, x6
blr x8
ldp x1, x2, [sp, #16]
cmp x2, x18
ldp x29, x30, [sp], #32 0f
0: b efi_handle_corrupted_x18 // tail call