On Wed, Aug 27, 2014 at 1:08 PM, Sergey Isakov <isakov...@bk.ru> wrote: > And one new question. Why _16GdtrBase with underscore while m16Start without > it?
Does replacing m16Start with ASM_PFX(m16Start) help? It looks like I didn't convert this up properly. The MASM code didn't use ASM_PFX... -Jordan > —— > ; > ; These are global constant to convey information to C code. > ; > ASM_PFX(m16Size) DW InternalAsmThunk16 - m16Start > ASM_PFX(mThunk16Attr) DW _BackFromUserCode.ThunkAttrEnd - 4 - > m16Start > ASM_PFX(m16Gdt) DW _NullSeg - m16Start > ASM_PFX(m16GdtrBase) DW _16GdtrBase - m16Start > ASM_PFX(mTransition) DW _EntryPoint - m16Start > > — > I got an error with this > Thunk16.iii:60: error: symbol `m16Start' undefined > > > On 27 авг. 2014 г., at 22:04, Jordan Justen <jljus...@gmail.com> wrote: > > On Wed, Aug 27, 2014 at 5:18 AM, Sergey Isakov <isakov...@bk.ru> wrote: > > Hi sirs, > I tested Thunk16.nasm too. For x86_64 there is no issue. > For ia32 compilation disasm shows not good codes > --------- > 00000000 <m16Start>: > 0: 00 00 add %al,(%eax) > 2: 00 00 add %al,(%eax) > ... > > 00000006 <_BackFromUserCode>: > 6: 16 push %ss > 7: 0e push %cs > 8: 67 e8 00 00 66 9c addr16 call 9c66000e > <InternalAsmThunk16+0x9c65ff36> > > 0000000c <_BackFromUserCode.Base>: > c: 66 9c pushfw > e: fa cli > > --------- > to compare gcc-4.9.1 cvompilation > --------- > 00000000 <m16Start>: > 0: 00 00 add %al,(%eax) > 2: 00 00 add %al,(%eax) > ... > > 00000006 <BackFromUserCode>: > 6: 16 push %ss > 7: 0e push %cs > 8: 66 e8 00 00 callw c <BackFromUserCode+0x6> > ... > > 0000000e <L_Base1>: > e: 66 9c pushfw > 10: fa cli > > ---------- > May be change a32 prefix to o32 in the line: > "a32 call .Base ; push eip" > ? > > > In the X64 file, I used: > call dword .Base > > I notice this produced the same code as: > o32 call dword .Base > > But, > o32 call .Base > seems to produce invalid code. (OVMF hangs.) > > It does seem like: > a32 call .Base > is functional as well, but I know we are attempting to make the new > nasm code produce similar code to the old asm code where reasonable. > > I think I only changed it in the X64 file to try to match the old 'db' code. > > -Jordan > > On 27.08.2014, at 9:50, Jordan Justen wrote: > > On Tue, Aug 19, 2014 at 4:57 PM, Jordan Justen > <jordan.l.jus...@intel.com> wrote: > > This series: > > * Adds support for creating object files from .nasm source files to > > allow NASM source files to be linked into libraries and images > > * Adds NASM source files for Thunk16 on IA32 and X64 > > * Convert BaseLib to use NASM Source Files for Thunk16 rather than > > GNU Assembler (.S) files > > - This will make NASM a build requirement for MdePkg with IA32 & > > X64 on all toolchains except MSVC and ICC. > > > Thanks for Liming Gao for the tools_def changes for MSVC. (But, these > > have not been tested very well yet.) > > > This series is available in this git branch: > > https://github.com/jljusten/edk2.git nasm-v1 > > > I update my nasm branch based on the feedback. > > The differences vs. v1 are in the attached patch. > > Is anyone interested in seeing a v2 posted to the list? > > Liming, in patch 1, I mentioned I only tested with GCC49. Did you have > any testing to add to that? > > -Jordan > > Jordan Justen (8): > > BaseTools/tools_def: Add NASM_FLAGS > > BaseTools/build_rule: Add .nasm => .obj build rule > > MdePkg/Base.h: Always define ASM_PFX > > MdePkg/BaseLib Thunk16: Replace IA32 GAS Thunk16 with NASM version > > MdePkg/BaseLib Thunk16: Replace X64 GAS Thunk16 with NASM version > > MdePkg/BaseLib NASM Thunk16: Use NASM local labels > > MdePkg/BaseLib NASM Thunk16: Use bits 16 for 16-bit code > > MdePkg/BaseLib NASM Thunk16: Remove remaining 'DB' code > > > BaseTools/Conf/build_rule.template | 15 ++ > > BaseTools/Conf/tools_def.template | 287 ++++++++++++++++++++++++++- > > MdePkg/Include/AArch64/ProcessorBind.h | 4 + > > MdePkg/Include/Arm/ProcessorBind.h | 4 + > > MdePkg/Include/Base.h | 25 ++- > > MdePkg/Include/Ebc/ProcessorBind.h | 4 + > > MdePkg/Include/Ia32/ProcessorBind.h | 4 + > > MdePkg/Include/Ipf/ProcessorBind.h | 4 + > > MdePkg/Include/X64/ProcessorBind.h | 4 + > > MdePkg/Library/BaseLib/BaseLib.inf | 4 +- > > MdePkg/Library/BaseLib/Ia32/Thunk16.nasm | 260 +++++++++++++++++++++++++ > > MdePkg/Library/BaseLib/X64/Thunk16.nasm | 321 > +++++++++++++++++++++++++++++++ > > 12 files changed, 914 insertions(+), 22 deletions(-) > > create mode 100644 MdePkg/Library/BaseLib/Ia32/Thunk16.nasm > > create mode 100644 MdePkg/Library/BaseLib/X64/Thunk16.nasm > > > -- > > 2.1.0 > > > > ------------------------------------------------------------------------------ > > 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 > > <compare-nasm-to-nasm-v1.patch>------------------------------------------------------------------------------ > > 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 > > > > ------------------------------------------------------------------------------ > 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 > > > ------------------------------------------------------------------------------ > 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 > > > > ------------------------------------------------------------------------------ > 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 > ------------------------------------------------------------------------------ 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