northbridge/intel/sandybridge: Enable x86_64 for mrc.bin
[coreboot2.git] / src / northbridge / intel / sandybridge / mrc_wrapper.S
blobd68ce091a432cf9d1c4ef2671824bd6ac163f52b
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Functions to call MRC.bin from x86_64 */
4 .text
5 .code32
6         .section ".text.mrc_wrapper", "ax", @progbits
7         .globl mrc_wrapper
8 mrc_wrapper:
9         /* Set up new stack frame */
10         pushal
11         mov     %esp, %ebp
13         /* Align stack */
14         andl    $0xfffffff0, %esp
16         movl    36(%ebp), %ebx  /* Get function pointer */
17         movl    40(%ebp), %eax  /* Get argument */
19         call    *%ebx
21         /* Place return value on stack so that popal fetches it */
22         movl    %eax, 28(%ebp)
24         /* Restore stack pointer */
25         mov     %ebp, %esp
26         popal
27         ret
29         /*
30          * Callback for MRC to print a character on the console.
31          * As MRC is x86_32 call into long mode and use the x86_64
32          * function do_putchar to print to console.
33          */
35 #include <src/cpu/x86/64bit/prot2long.inc>
37 prot2lm_wrapper do_putchar