Add GCC assember for DxeIpl module

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7395 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
klu2 2009-02-02 19:09:11 +00:00
parent 57dfc48f93
commit ef03248cb5
2 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,27 @@
UINT8
EFIAPI
CpuIoRead8 (
IN UINT16 Port
)
{
UINT8 Data;
asm ( "inb %1, %0"
: "=a"(Data)
: "d"(Port)
);
return Data;
}
VOID
EFIAPI
CpuIoWrite8 (
IN UINT16 Port,
IN UINT32 Data
)
{
asm ( "outb %1, %0"
: /* No outputs */
: "d"(Port)
, "a"((UINT8)Data)
);
}

View File

@ -0,0 +1,16 @@
VOID
EnterDxeMain (
IN VOID *StackTop,
IN VOID *DxeCoreEntryPoint,
IN VOID *Hob,
IN VOID *PageTable
)
{
__asm__ ( "movl %0, %%esp \n\t"
"pushl %2 \n\t"
"pushl $0 \n\t"
"movl %1, %%ecx \n\t"
"jmp %%ecx"
::"q"(StackTop), "q"(DxeCoreEntryPoint), "q"(Hob)
);
}