It looks like the 64-bit bit wise and operation is causing the compiler to emit 
an __umoddi3 I’m looking into to how to work around this issue.

>build -p MdeModulePkg/MdeModulePkg.dsc -a IA32 -t XCODE5 -n 1

Building ... /Users/andrewfish/work/src/edk2/MdeModulePkg/Core/Dxe/DxeMain.inf 
[IA32]
"ld" -arch i386 -u __ModuleEntryPoint -e __ModuleEntryPoint -preload -segalign 
0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map 
/Users/andrewfish/work/src/edk2/Build/MdeModule/DEBUG_XCODE5/IA32/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.map
 -o 
/Users/andrewfish/work/src/edk2/Build/MdeModule/DEBUG_XCODE5/IA32/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll
  -filelist 
/Users/andrewfish/work/src/edk2/Build/MdeModule/DEBUG_XCODE5/IA32/MdeModulePkg/Core/Dxe/DxeMain/OUTPUT/static_library_files.lst
Undefined symbols for architecture i386:
  "___umoddi3", referenced from:
      _CoreInternalWaitForTick in DxeCore.lib(Stall.obj)

~/work/src/edk2(master)>otool -tvV 
Build/MdeModule/DEBUG_XCODE5/IA32/MdeModulePkg/Core/Dxe/DxeMain/OUTPUT/Misc/Stall.obj
Build/MdeModule/DEBUG_XCODE5/IA32/MdeModulePkg/Core/Dxe/DxeMain/OUTPUT/Misc/Stall.obj:
(__TEXT,__text) section
_CoreInternalWaitForTick:
00000000        pushl   %ebp
00000001        movl    %esp, %ebp
00000003        pushl   %ebx
00000004        pushl   %edi
00000005        pushl   %esi
00000006        subl    $0x1c, %esp
00000009        movl    0x683, %eax
0000000e        movl    _CoreInternalWaitForTick(%eax), %esi
00000010        movl    _CoreInternalWaitForTick(%esi), %ecx
00000012        movl    0x8(%ebp), %ebx
00000015        movl    0xc(%ebp), %edi
00000018        testl   %edi, %edi
0000001a        je      0x6e
0000001c        movl    %ecx, -0x10(%ebp)
0000001f        leal    -0x1(%edi), %eax
00000022        movl    %ebx, _CoreInternalWaitForTick(%esp)
00000025        movl    %eax, 0x4(%esp)
00000029        movl    $_CoreInternalWaitForTick, 0xc(%esp)
00000031        movl    $0xffffffff, 0x8(%esp)
00000039        calll   ___umoddi3

~/work/src/edk2(master)>lldb  
Build/MdeModule/DEBUG_XCODE5/IA32/MdeModulePkg/Core/Dxe/DxeMain/OUTPUT/Misc/Stall.obj
Current executable set to 
'Build/MdeModule/DEBUG_XCODE5/IA32/MdeModulePkg/Core/Dxe/DxeMain/OUTPUT/Misc/Stall.obj'
 (i386).
(lldb) dis -b -m -n CoreInternalWaitForTick
Stall.obj`CoreInternalWaitForTick at Stall.c:34
   33     )
   34   {
   35     while ((Counter & 0xffffffff00000000ULL) != 0) {
Stall.obj[0x0]:  55                       pushl  %ebp
Stall.obj[0x1]:  89 e5                    movl   %esp, %ebp
Stall.obj`CoreInternalWaitForTick + 3 at Stall.c:36
   35     while ((Counter & 0xffffffff00000000ULL) != 0) {
   36       gMetronome->WaitForTick (gMetronome, 0xffffffff);
   37       Counter -= 0xffffffff;
Stall.obj[0x3]:  53                       pushl  %ebx
Stall.obj[0x4]:  57                       pushl  %edi
Stall.obj[0x5]:  56                       pushl  %esi
Stall.obj[0x6]:  83 ec 1c                 subl   $0x1c, %esp
Stall.obj[0x9]:  a1 83 06 00 00           movl   0x683, %eax
Stall.obj[0xe]:  8b 30                    movl   (%eax), %esi
Stall.obj[0x10]:  8b 0e                    movl   (%esi), %ecx
Stall.obj[0x12]:  8b 5d 08                 movl   0x8(%ebp), %ebx
Stall.obj[0x15]:  8b 7d 0c                 movl   0xc(%ebp), %edi
Stall.obj[0x18]:  85 ff                    testl  %edi, %edi
Stall.obj[0x1a]:  74 52                    je     0x6e                      ; 
CoreInternalWaitForTick + 110 at Stall.c:39
Stall.obj[0x1c]:  89 4d f0                 movl   %ecx, -0x10(%ebp)
Stall.obj`CoreInternalWaitForTick + 31 at Stall.c:35
   34   {
   35     while ((Counter & 0xffffffff00000000ULL) != 0) {
   36       gMetronome->WaitForTick (gMetronome, 0xffffffff);
Stall.obj[0x1f]:  8d 47 ff                 leal   -0x1(%edi), %eax
Stall.obj[0x22]:  89 1c 24                 movl   %ebx, (%esp)
Stall.obj[0x25]:  89 44 24 04              movl   %eax, 0x4(%esp)
Stall.obj[0x29]:  c7 44 24 0c 00 00 00 00  movl   $0x0, 0xc(%esp)
Stall.obj[0x31]:  c7 44 24 08 ff ff ff ff  movl   $0xffffffff, 0x8(%esp)
Stall.obj[0x39]:  e8 c2 ff ff ff           calll  0x0                       ; 
CoreInternalWaitForTick at Stall.c:34
Stall.obj[0x3e]:  89 45 ec                 movl   %eax, -0x14(%ebp)
Stall.obj[0x41]:  8b 4d f0                 movl   -0x10(%ebp), %ecx


Thanks,

Andrew Fish
------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to