From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web08.7085.1647935013950471324 for ; Tue, 22 Mar 2022 00:43:34 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=fiOMEIez; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: chasel.chiu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647935013; x=1679471013; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=vJAfuX38XXY6Mg8xghSaQggRtgBBVsJ+AooKVp6K4vY=; b=fiOMEIezDtaUSqbHfXziaAJJ2LnRDx6gKb4TBEuABUe1PIey8VwNVPq+ 71LZtFbNs2NRGK0Q8moQohlFv12F3ggNZfBVa5NadDMTQcWhSb288GhRR C90daIToWyEKrxYtzRM9pS/GrexK3VRTpWPbbLGQs88yH99gMw/xjuuLH X4dp0hC1/irUyJbuZHURFt6sSbTxuDmxC6GJPO4BKjkcjSmVNYBFEjYKd hIhm0LmJMME8QmztelwrbMTlcMYdfhr7B/NTOHL8NJNoG1onV5TMl/tA6 9mVp1AWekMfMVb0vCvK5MbNymkPSTEjHeYkSX3Clcltjo9e/2OW2njXQw w==; X-IronPort-AV: E=McAfee;i="6200,9189,10293"; a="257943862" X-IronPort-AV: E=Sophos;i="5.90,201,1643702400"; d="scan'208";a="257943862" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2022 00:43:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,201,1643702400"; d="scan'208";a="560259401" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga008.jf.intel.com with ESMTP; 22 Mar 2022 00:43:30 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 22 Mar 2022 00:43:30 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 22 Mar 2022 00:43:30 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.21; Tue, 22 Mar 2022 00:43:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P/wG+qV5KjC7svkHOkw/tmDcWVstikQ83qGdF95iQBSJqeXAoUkhWVs+aANkxTSlhVFSD26J92NQuWGBoSXUx4EwgKYiNWKSlEHR5VxVo4Aflgc2MAZWaqT06D7xZGDMyEayL/KbIgLEA/U3z9h4n6dRLlabXpFkcgwjs78RpOkgdTvKmXDoXixe35gMcLwyJl99JZ6WlW7rQuUSIRnNVDD0AFQZDo2EN8WKKG017rK8W/LXcqd8f66PRU5g+xiBPJoOpdDctjPAQVeI1k0vtjpXOZFkIR8Wu51a6rF8uyGfYfKjg3+GlzslM6KLwYrPgMdXXJuNRkvJi2e942af7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Z8tSd463JDHoPzIDkRlVx+ZXfd1Dn/EggVjqjstMByc=; b=gdrl1hZPTYO/bgrnXxImfo/a2KfDF1TiiMEWFGLeNaw2kz4V8TDPis2XNyOBZWJPhSHFGNpeocYHmdogjZB4hG8f684anor5gh+onqtt5SL9GXlnnEA1hoIhZE05J3OfgyMR1MLVYtzfPYZCCquPCdvIhRhnEzZ78wH2HbUsFGXmYXVQwWC59p4G6g1KeFV6/tbBXMfGldb+lBKVQFbZl1ZNQCg0eUe3wB5m6BBLiP+cK3DQyReV39cdttkja3uIizCTnK9zvFqUhb6QTZ0qba8yu7s+UDN3ia1VfoOK91K450jfKRMv41X0NEPeoyBnHbfCDluyPVweFv+SCI+pvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by BN6PR11MB1443.namprd11.prod.outlook.com (2603:10b6:405:8::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.15; Tue, 22 Mar 2022 07:43:28 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::8c4b:e24c:c69f:7809]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::8c4b:e24c:c69f:7809%5]) with mapi id 15.20.5102.016; Tue, 22 Mar 2022 07:43:28 +0000 From: "Chiu, Chasel" To: "Kuo, Ted" , "devel@edk2.groups.io" CC: "Desimone, Nathaniel L" , "Zeng, Star" , "S, Ashraf Ali" Subject: Re: [edk2-devel][PATCH] IntelFsp2Pkg: BaseFspCommonLib Support for X64 Thread-Topic: [edk2-devel][PATCH] IntelFsp2Pkg: BaseFspCommonLib Support for X64 Thread-Index: AQHYN1ss6QUMSxCmX0WgexemyOsfk6zLEiqA Date: Tue, 22 Mar 2022 07:43:27 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f8715102-ac16-4425-258a-08da0bd7a767 x-ms-traffictypediagnostic: BN6PR11MB1443:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2OmjhsZ0iRSqTgMwwFT+O1ff1ZvKQSbh1wTX5XhdUUA3bNd/TwVJS+Jgmma2ML3LxOrKpDFJHU+/moGQsTyZhzX5F6uCznTJYOCBbW6hNhevPTXs8ckoHfiRAvkkZzLeDqCMLZVunj16G31Q8URsWcTB4ZPR8NTxyMaU9hbdXBSYoCy+Tde6HH5dxlMi+bOJ6wp0nwjzahsw4p72NP+pXHU2GonxbcT9QseozSt8DY8yajfpueNVR/cAoq1qbPGE7/aHM3hWJBJi6R4teKV+R2W7/1k3X9hF5BLsqax6CfBb55OfPO+RDRXfdKx02sjhfHyXy9aM2h1w+TN1VlOtt7B2E92utZunHnBIaVAE/sUYIeR/DqsAF/xKb4E4MZcKCGAGGC3C3fVYyIlTJybcr4xCGLUO237o2j6ey5alG1YLYZQu1sIMVqTxbDM6ukKV0inNPzlfGQKDYvpH1nMlyMkOPPRVvulwd0yJ0K03bXF/3tn9+oMK0paRFWSuFjujkB1WHZ2dNBiru0XPn3gD6GjUsOA7gPR9zSchAYPjA7Uv796jk1WYxFZeWhlMmiAJhznSeXCeCDjIyO1iadd0PZeWlsCObfHO9G+nvgJZy5r3z43LB1WMPepUB2Qup9aLSRz2pPrXhXNp/JdVW3ChjiNzMJ7CiG9hunnSjP46KEbXRc/SfNRzGsAkiJ9veopW8TxRbh3fuVyOia/cETFq5RvGaDYSw3WIe1QJ6bo33J4kG9irHeiBJW6vJfqJISbr8ReNYO1ahuO3tU9MqAoZ2f1Hy3UjNI4WeWMY5mUOa38XmwUJTax3H/LzaPDOpezp x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5483.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(86362001)(76116006)(66446008)(64756008)(66556008)(4326008)(66476007)(8676002)(82960400001)(9686003)(110136005)(7696005)(5660300002)(71200400001)(508600001)(53546011)(19627235002)(316002)(54906003)(6506007)(186003)(26005)(107886003)(2906002)(83380400001)(52536014)(8936002)(122000001)(33656002)(38070700005)(38100700002)(55016003)(11716005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?P+3E6PchBg5vTY7i27s9ih7RiLc3iotZv6Rxs+1s7yDSHTpOZ7UpwpIDxVi8?= =?us-ascii?Q?xblT+5RpiQv5lU8mGqLP/WbjHJlr5sNIBpzHzPXkA0ugVL/DH4+VeMeegtVR?= =?us-ascii?Q?WXVsrPz9IpZWgrbQVldLLqf+fN60zxibYZ5wcoCD0Sk9AIWHgvvoE+DIrio0?= =?us-ascii?Q?3NEJQtkvA7+W8m85R+G5WPq76Tcbicj9iwT8o6UezsIOu/FzF3JXjSxuk22p?= =?us-ascii?Q?tQF2Igm7pzg4GfPTrAPPKJtsVbtT4kKoql0h9X001YXIYRSwnNiucPNtA2TK?= =?us-ascii?Q?RfwcQot9eZ8IgwWLcFxf7+8anHZfNOmiwlLIoel4itOnGbhzUBrR4q3E4RoU?= =?us-ascii?Q?aIxS+tafNJbcn6+9KRbvXJ9gxE3/+9iDH7nI+/mBSt4kSD28sI7dYIA5/uim?= =?us-ascii?Q?45tIjiuaGLejA8elDrUPaQSXhDWB6WRerUshuKsBTO+OL9+rLoRKTXaLq3t8?= =?us-ascii?Q?onEaQn6dpY4AAIOZh6NV5d1yuNBdG4hu3LJHVZrMG0lsbAinTXG6aEyivuEU?= =?us-ascii?Q?aW8Fq0XxoqOW8S8+Wvtl974pPSs5yjwG9zKtA1Qqhl06dDKeqxjywoBNkeOY?= =?us-ascii?Q?I8+tDaB+8czfFFhfyPVu95aWjhG+75WW//s637B/pD1kdaL+FuGaSI3JsL4+?= =?us-ascii?Q?p/qakdalBiW3gnhPDXF+ElEilNg8wKIRZc9v5SSPkhotTxqaFlW9S/zuZ8DR?= =?us-ascii?Q?IDd8GxU2jNbzajAy/PPYOPFyZ1VBx4gpGoutF94QDr+UD8Xt9dzg6ZkNSszO?= =?us-ascii?Q?73x8kMGuzHTCAS0ANfsAkYoGzkCSuDSSio22hpUy/bKSFux6o43V8/WJNf4d?= =?us-ascii?Q?y6wa2dY9EmpSd1Jn9wZ636CqJq3gxYf8/Af/3tKddofIsQ3tVKOu2NLktd5y?= =?us-ascii?Q?nOzlIUnpj34tp0zxh6MnUed+0CZHzjJLZY0BnDBIJbTDDsyIcoFizQALJu/i?= =?us-ascii?Q?YP5uNIQa3R0R1iiKM7NaeYvxgXzsRQChNA2Ica+s2HyctBqvbYbu7EqVQy/Z?= =?us-ascii?Q?KjcUg4XwxFHka1TSKpVUX4NRubt1B2pNBatNPeNVvo2JQkSE8BugQ+5aTh3E?= =?us-ascii?Q?fU1K6RKMm9urULSnLV/+8RdL7IdLAWnuFfTIe04Pe5pvoj//CmHz+X1okNTk?= =?us-ascii?Q?bmyDxqFfuXKBYzSA5x0cfjtMsy+Ao01X7m18zuv5i5TRvOjmwtI0jve0bbE1?= =?us-ascii?Q?X5uhjHZgMHa3sKwYIojqNsSv78yCUYPajyuwAjhgg+6DxIZchtPKxfxgKHV7?= =?us-ascii?Q?sMC6GKXno1crJlqHSPJRTq1PZy5j0xjFU0e8an7H7AgrlHWN2OJzPkO01Uqr?= =?us-ascii?Q?gEttIrggsl85sMHdnp8EhN4vi5/2JEZAbYjsF7LFzQxTOnvt4jD9ym28IF0k?= =?us-ascii?Q?WvrMmu/vqOyTdfWpgRcwr0u6ElA+3qS75gfYax4tITQN9fv0zqN3yvcHU9Bz?= =?us-ascii?Q?aStEoXqEHpOLUxrsL2veGtdBTFK4UXHQ?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8715102-ac16-4425-258a-08da0bd7a767 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Mar 2022 07:43:27.8432 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kjXen7s6pYRotQIYq+QbtYIxo7cunPbUQ5bsFzLLCnsx7SMTvAEU1K/IitkxPeJBSlTmrYGEiu6hNZRNScO5MQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1443 Return-Path: chasel.chiu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thanks Ted! Reviewed-by: Chasel Chiu > -----Original Message----- > From: Kuo, Ted > Sent: Monday, March 14, 2022 12:23 PM > To: devel@edk2.groups.io > Cc: Chiu, Chasel ; Desimone, Nathaniel L > ; Zeng, Star ; S, > Ashraf Ali > Subject: [edk2-devel][PATCH] IntelFsp2Pkg: BaseFspCommonLib Support for > X64 >=20 > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3867 > Add BaseFspCommonLib Support for X64. >=20 > Cc: Chasel Chiu > Cc: Nate DeSimone > Cc: Star Zeng > Cc: Ashraf Ali S > Signed-off-by: Ted Kuo > --- > IntelFsp2Pkg/FspSecCore/SecFsp.c | 2 +- > IntelFsp2Pkg/FspSecCore/SecFsp.h | 2 +- > IntelFsp2Pkg/Include/FspGlobalData.h | 2 +- > IntelFsp2Pkg/Include/Library/FspCommonLib.h | 6 +- > .../Library/BaseFspCommonLib/FspCommonLib.c | 65 > +++++++++++++--------- > 5 files changed, 45 insertions(+), 32 deletions(-) >=20 > diff --git a/IntelFsp2Pkg/FspSecCore/SecFsp.c > b/IntelFsp2Pkg/FspSecCore/SecFsp.c > index f79d45900e..68e588dd41 100644 > --- a/IntelFsp2Pkg/FspSecCore/SecFsp.c > +++ b/IntelFsp2Pkg/FspSecCore/SecFsp.c > @@ -217,7 +217,7 @@ FspGlobalDataInit ( > **/ > VOID > FspDataPointerFixUp ( > - IN UINT32 OffsetGap > + IN UINTN OffsetGap > ) > { > FSP_GLOBAL_DATA *NewFspData; > diff --git a/IntelFsp2Pkg/FspSecCore/SecFsp.h > b/IntelFsp2Pkg/FspSecCore/SecFsp.h > index aacd32f7f7..7c9be85fe0 100644 > --- a/IntelFsp2Pkg/FspSecCore/SecFsp.h > +++ b/IntelFsp2Pkg/FspSecCore/SecFsp.h > @@ -61,7 +61,7 @@ FspGlobalDataInit ( > **/ > VOID > FspDataPointerFixUp ( > - IN UINT32 OffsetGap > + IN UINTN OffsetGap > ); >=20 > /** > diff --git a/IntelFsp2Pkg/Include/FspGlobalData.h > b/IntelFsp2Pkg/Include/FspGlobalData.h > index 71033121c4..2b534075ae 100644 > --- a/IntelFsp2Pkg/Include/FspGlobalData.h > +++ b/IntelFsp2Pkg/Include/FspGlobalData.h > @@ -42,7 +42,7 @@ typedef struct { > UINT32 Signature; > UINT8 Version; > UINT8 Reserved1[3]; > - UINT32 CoreStack; > + UINTN CoreStack; > UINT32 StatusCode; > UINT32 Reserved2[8]; > FSP_PLAT_DATA PlatformData; > diff --git a/IntelFsp2Pkg/Include/Library/FspCommonLib.h > b/IntelFsp2Pkg/Include/Library/FspCommonLib.h > index c70039d9e8..b5e38568e2 100644 > --- a/IntelFsp2Pkg/Include/Library/FspCommonLib.h > +++ b/IntelFsp2Pkg/Include/Library/FspCommonLib.h > @@ -38,7 +38,7 @@ GetFspGlobalDataPointer ( >=20 > @retval ApiParameter FSP API first parameter passed by the bootloader. > **/ > -UINT32 > +UINTN > EFIAPI > GetFspApiParameter ( > VOID > @@ -49,7 +49,7 @@ GetFspApiParameter ( >=20 > @retval ApiParameter FSP API second parameter passed by the > bootloader. > **/ > -UINT32 > +UINTN > EFIAPI > GetFspApiParameter2 ( > VOID > @@ -87,7 +87,7 @@ SetFspApiParameter ( > VOID > EFIAPI > SetFspApiReturnStatus ( > - IN UINT32 ReturnStatus > + IN UINTN ReturnStatus > ); >=20 > /** > diff --git a/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c > b/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c > index 8f8453915e..cd10b63c95 100644 > --- a/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c > +++ b/IntelFsp2Pkg/Library/BaseFspCommonLib/FspCommonLib.c > @@ -30,21 +30,34 @@ typedef struct { > UINT16 IdtrLimit; > UINT32 IdtrBase; > UINT16 Reserved; > - UINT32 Edi; > - UINT32 Esi; > - UINT32 Ebp; > - UINT32 Esp; > - UINT32 Ebx; > - UINT32 Edx; > - UINT32 Ecx; > - UINT32 Eax; > + UINT32 Registers[8]; // General Purpose Registers: Edi, Esi, Ebp,= Esp, > Ebx, Edx, Ecx and Eax > UINT16 Flags[2]; > UINT32 FspInfoHeader; > UINT32 ApiRet; > UINT32 ApiParam[2]; > } CONTEXT_STACK; >=20 > -#define CONTEXT_STACK_OFFSET(x) (UINT32)&((CONTEXT_STACK > *)(UINTN)0)->x > +// > +// API return address +0xB0 > +// push API Parameter2 +0xA8 > +// push API Parameter1 +0xA0 > +// push FspInfoHeader +0x98 > +// pushfq +0x90 > +// cli > +// PUSHA_64 +0x10 > +// sub rsp, 16 +0x00 > +// sidt [rsp] > +// > +typedef struct { > + UINT64 Idtr[2]; // IDTR Limit - bit0:bi15, IDTR Base - bit16= :bit79 > + UINT64 Registers[16]; // General Purpose Registers: RDI, RSI, RBP,= RSP, > RBX, RDX, RCX, RAX, and R15 to R8 > + UINT32 Flags[2]; > + UINT64 FspInfoHeader; > + UINT64 ApiParam[2]; > + UINT64 ApiRet; // 64bit stack format is different from the = 32bit > one due to x64 calling convention > +} CONTEXT_STACK_64; > + > +#define CONTEXT_STACK_OFFSET(x) (sizeof(UINTN) =3D=3D sizeof (UINT32) ? > +(UINTN)&((CONTEXT_STACK *)(UINTN)0)->x : > (UINTN)&((CONTEXT_STACK_64 > +*)(UINTN)0)->x) >=20 > #pragma pack() >=20 > @@ -85,7 +98,7 @@ GetFspGlobalDataPointer ( >=20 > @retval ApiParameter FSP API first parameter passed by the bootloader. > **/ > -UINT32 > +UINTN > EFIAPI > GetFspApiParameter ( > VOID > @@ -94,7 +107,7 @@ GetFspApiParameter ( > FSP_GLOBAL_DATA *FspData; >=20 > FspData =3D GetFspGlobalDataPointer (); > - return *(UINT32 *)(UINTN)(FspData->CoreStack + > CONTEXT_STACK_OFFSET (ApiParam[0])); > + return *(UINTN *)(FspData->CoreStack + CONTEXT_STACK_OFFSET > + (ApiParam[0])); > } >=20 > /** > @@ -119,7 +132,7 @@ GetFspEntryStack ( >=20 > @retval ApiParameter FSP API second parameter passed by the > bootloader. > **/ > -UINT32 > +UINTN > EFIAPI > GetFspApiParameter2 ( > VOID > @@ -128,7 +141,7 @@ GetFspApiParameter2 ( > FSP_GLOBAL_DATA *FspData; >=20 > FspData =3D GetFspGlobalDataPointer (); > - return *(UINT32 *)(UINTN)(FspData->CoreStack + > CONTEXT_STACK_OFFSET (ApiParam[1])); > + return *(UINTN *)(FspData->CoreStack + CONTEXT_STACK_OFFSET > + (ApiParam[1])); > } >=20 > /** > @@ -145,8 +158,8 @@ SetFspApiParameter ( { > FSP_GLOBAL_DATA *FspData; >=20 > - FspData = =3D GetFspGlobalDataPointer > (); > - *(UINT32 *)(UINTN)(FspData->CoreStack + CONTEXT_STACK_OFFSET > (ApiParam)) =3D Value; > + FspData =3D G= etFspGlobalDataPointer (); > + *(UINTN *)(FspData->CoreStack + CONTEXT_STACK_OFFSET (ApiParam)) > =3D > + Value; > } >=20 > /** > @@ -158,13 +171,13 @@ SetFspApiParameter ( VOID EFIAPI > SetFspApiReturnStatus ( > - IN UINT32 ReturnStatus > + IN UINTN ReturnStatus > ) > { > FSP_GLOBAL_DATA *FspData; >=20 > - FspData = =3D GetFspGlobalDataPointer (); > - *(UINT32 *)(UINTN)(FspData->CoreStack + CONTEXT_STACK_OFFSET (Eax)) > =3D ReturnStatus; > + FspData = =3D GetFspGlobalDataPointer (); > + *(UINTN *)(FspData->CoreStack + CONTEXT_STACK_OFFSET (Registers[7])) > + =3D ReturnStatus; > } >=20 > /** > @@ -180,19 +193,19 @@ SetFspCoreStackPointer ( > ) > { > FSP_GLOBAL_DATA *FspData; > - UINT32 *OldStack; > - UINT32 *NewStack; > + UINTN *OldStack; > + UINTN *NewStack; > UINT32 StackContextLen; >=20 > FspData =3D GetFspGlobalDataPointer (); > - StackContextLen =3D sizeof (CONTEXT_STACK) / sizeof (UINT32); > + StackContextLen =3D sizeof(CONTEXT_STACK) / sizeof(UINTN); >=20 > // > // Reserve space for the ContinuationFunc two parameters > // > - OldStack =3D (UINT32 *)FspData->CoreStack; > - NewStack =3D (UINT32 *)NewStackTop - StackContextLen - 2; > - FspData->CoreStack =3D (UINT32)NewStack; > + OldStack =3D (UINTN *)FspData->CoreStack; NewStack =3D (UINTN > + *)NewStackTop - StackContextLen - 2; FspData->CoreStack =3D > + (UINTN)NewStack; > while (StackContextLen-- !=3D 0) { > *NewStack++ =3D *OldStack++; > } > @@ -427,7 +440,7 @@ GetFspInfoHeaderFromApiContext ( > FSP_GLOBAL_DATA *FspData; >=20 > FspData =3D GetFspGlobalDataPointer (); > - return (FSP_INFO_HEADER *)(*(UINT32 *)(UINTN)(FspData->CoreStack + > CONTEXT_STACK_OFFSET (FspInfoHeader))); > + return (FSP_INFO_HEADER *)(*(UINTN *)(FspData->CoreStack + > + CONTEXT_STACK_OFFSET (FspInfoHeader))); > } >=20 > /** > @@ -444,7 +457,7 @@ GetFspCfgRegionDataPointer ( > FSP_INFO_HEADER *FspInfoHeader; >=20 > FspInfoHeader =3D GetFspInfoHeader (); > - return (VOID *)(FspInfoHeader->ImageBase + FspInfoHeader- > >CfgRegionOffset); > + return (VOID *)(UINTN)(FspInfoHeader->ImageBase + > + FspInfoHeader->CfgRegionOffset); > } >=20 > /** > -- > 2.16.2.windows.1