1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * thunks_32.S - assembly helpers for mixed-bitness code
4 * Copyright (c) 2015 Denys Vlasenko
6 * These are little helpers that make it easier to switch bitness on
13 .global call64_from_32
14 .type call32_from_64, @function
16 // 4(%esp): function to call
18 // Fetch function address
21 // Save registers which are callee-clobbered by 64-bit ABI
27 // Switch to long mode
34 // Switch to compatibility mode
35 push $0x23 /* USER32_CS */
36 .code32; push $1f; .code64 /* hack: can't have X86_64_32S relocation in 32-bit ELF */
47 .size call64_from_32, .-call64_from_32