| /* SPDX-License-Identifier: GPL-2.0-only */ |
| |
| .text |
| .code32 |
| /* |
| * Macro to wrap a x86_64 function to be called from x86_32 code. |
| * This assumes that 0-3 32bit arguments are passed to the |
| * calling function. |
| * |
| * In order to preserve ESP without setting up a stack frame |
| * pass the function to call in EAX. The macro prepends "__prot2lm_" |
| * to the wrapped function name. |
| */ |
| .macro prot2lm_wrapper func2call:req |
| .global __prot2lm_\func2call |
| __prot2lm_\func2call : |
| /* Get function to call */ |
| mov $\func2call, %eax |
| |
| /* |
| * Jump to function instead of call. |
| * It will return directly to caller. |
| */ |
| jmp long_mode_call_3arg |
| |
| /* Not reachable */ |
| .endm |