The root cause is EfiLdr module was wrongly loaded to address 0x0 corrupting the BDA(0x400) region. The patch set module base address to 0x10000 which aligns to R8 behavior.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9824
6f19259b-4bc3-4df7-8a09-
765794883524
MSFT:*_*_IA32_PP_FLAGS == /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h\r
MSFT:*_*_IA32_ASM_FLAGS == /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi\r
MSFT:*_*_IA32_ASMLINK_FLAGS == /link /nologo /tiny \r
MSFT:*_*_IA32_PP_FLAGS == /nologo /E /TC /FI$(DEST_DIR_DEBUG)/AutoGen.h\r
MSFT:*_*_IA32_ASM_FLAGS == /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi\r
MSFT:*_*_IA32_ASMLINK_FLAGS == /link /nologo /tiny \r
+ MSFT:*_*_*_DLINK_FLAGS = /BASE:0x10000\r
+ GCC:*_*_*_DLINK_FLAGS = --image-base 0x10000\r