Tomer,
It is a bug in your code. You need to use the correct function prototypes, and
you especially need to use EFIAPI correctly.
This is bad:
(EFI_AP_PROCEDURE)GetThread,
You need to make GetThead() have the proper prototype.
For GCC 4.6 the generic calling convention is the Unix ABI for X64. This means
the 1st 6 args are passed in registers and the register sequence is different
than the 4 register used in EFIABI (Microsoft X64 ABI subset). GCC only
generates EFIABI if the function has the EFIABI qualifier in its definition.
So any indirect function call needs to have EFIABI. Thus any protocol member
function, pointer to function, EFI Event function, and function passed via an
API needs to have the EFIABI qualifier. Also any assembly code C function
prototype needs to have EFIABI so it gets called correctly.
Andrew Fish
On Mar 21, 2013, at 2:36 AM, "Shalev, Tomer" <tomer.sha...@intel.com> wrote:
> Hi There,
>
> Calls to StartupThisAP() does not work as expected when I build my UEFI
> application from GCC 4.6 under Linux. If I build it under Windows using
> Visual Studio 2010, it works…
>
> In GCC built application, The GetThread application receives a different
> value in its argument list than expected, according to what was passed to
> StartupThisAP(). I actually get 1, 4 and 5 for Ap's 1, 2 and 3, respectively,
> which might indicate that I get their APIC ID numbers.
>
> I suspect there are other functionality that doesn't work as expected in such
> situation, such as Int86().
>
> I would be thankful if you can help me with this.
> Attached is a sample application that works when compiled in Windows but
> fails when compiled by GCC in Linux. Password is 12345678
>
> Thanks,
> Tomer
>
>
> Tomer Shalev
> Mobile: 054-2271307
> Tel: 04-8656713 (Inet 8-465-6713)
> Office: IDC6 4Y1 P4-2, SSG, Intel Inc.
> E-mail: tomer.sha...@intel.com
>
> <MpTestPkg.zip>
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________
> edk2-buildtools-devel mailing list
> edk2-buildtools-de...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-buildtools-devel
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel