From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.107.20.40]) by mx.groups.io with SMTP id smtpd.web08.1681.1620760400310836142 for ; Tue, 11 May 2021 12:13:20 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=vhFmaYah; spf=pass (domain: arm.com, ip: 40.107.20.40, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tBHvl0tvSvVKO2VmCQHUdSn8ydD8aFiS7Sdd6g74E3k=; b=vhFmaYahjmp8Oc1flmbJwTdZqwnXv/fmOobNoyKabTpQ7dO4WIR2NddpP0/aKomhi91dMW3JteGKXPgKZ+EGi9ZN7/r2hoqOC4yLr7YygkibfYJjntjU3+/0jPbQTk2NzdqeYcNSgRWSNcgr8BuGWJgmrYTzo3ZcPujvHmi9SUU= Received: from DB6PR1001CA0023.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::33) by VI1PR08MB5373.eurprd08.prod.outlook.com (2603:10a6:803:131::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.27; Tue, 11 May 2021 19:13:16 +0000 Received: from DB5EUR03FT042.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:b7:cafe::d3) by DB6PR1001CA0023.outlook.office365.com (2603:10a6:4:b7::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Tue, 11 May 2021 19:13:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT042.mail.protection.outlook.com (10.152.21.123) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Tue, 11 May 2021 19:13:16 +0000 Received: ("Tessian outbound 6c4b4bc1cefb:v91"); Tue, 11 May 2021 19:13:16 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: c0ea7968691f1326 X-CR-MTA-TID: 64aa7808 Received: from ac091b24e2e7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F159A295-DD57-4055-BCB8-690E940DBA4F.1; Tue, 11 May 2021 19:13:09 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ac091b24e2e7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 11 May 2021 19:13:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L4M8rDXtk49cHaAU65fr+Qi8UHlCzPZy9Jj41oc8HPU0yKwWL9vxCo2TjK74pBo4cb0EvX292szfsQLU/JzI66DHEkWPSydXoeGMibsA2YVcRr2QGQfMJmY5pGmGrEukZLpA2VLn8dMdy2z0m0qNBqPzxRazcNfSrguaUkc0yFqoDTv0PgPNg47wowhTr/YZPJnuhneYyhGLfli5HPtJC/ZC9s4apTqYDLXyaMAgYjFCqErzEhjdalyxaj4OjCXKMNfq1Ma8RODOI+6G6zpNTlzMeXR6RXx6EcRPeeLbZjSDi84kXHQ/pmR6qfRuQXADlrKNvndYQcZTG4lb9WDdbg== 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-SenderADCheck; bh=tBHvl0tvSvVKO2VmCQHUdSn8ydD8aFiS7Sdd6g74E3k=; b=mTQPj7dp1pDzIHZRA5pJFnFfOTnvDAJQupkdB+5GZ5UhWLLz67IH5OktJ4OPI+pojzZ8fpZtZ7sUoyDRKzfcmEmrfqVuTrSY8lJAfwyHGv2/fvnUuTtwugDCrFTOVTU7GKVwGCi86Sk98sHP2uLy+yAAgsiyT5hDG6xX7VsWvGHSZR3mbaiwqNNOKU30PgQE0ejAwek94sfWsa173FSfUl/ZPVh1LDBVtcgwXeuQHiIr2u2LOO9AURo6A6d0SWtBzXGPWcuNUjCTCOo3gMbH6tbSYUkHp/BLs8hb+KukS1MyPqJA0PibdtsKkHLPZz02LIRj+Z+Jxx/cqZT2ZE95CA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tBHvl0tvSvVKO2VmCQHUdSn8ydD8aFiS7Sdd6g74E3k=; b=vhFmaYahjmp8Oc1flmbJwTdZqwnXv/fmOobNoyKabTpQ7dO4WIR2NddpP0/aKomhi91dMW3JteGKXPgKZ+EGi9ZN7/r2hoqOC4yLr7YygkibfYJjntjU3+/0jPbQTk2NzdqeYcNSgRWSNcgr8BuGWJgmrYTzo3ZcPujvHmi9SUU= Authentication-Results-Original: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AM6PR08MB4597.eurprd08.prod.outlook.com (2603:10a6:20b:90::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25; Tue, 11 May 2021 19:13:07 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688%7]) with mapi id 15.20.4108.031; Tue, 11 May 2021 19:13:07 +0000 Subject: Re: [PATCH 3/5] GenGv: Arm: support images entered in Thumb mode To: Etienne Carriere , devel@edk2.groups.io Cc: Achin Gupta , Ard Biesheuvel , Jiewen Yao , Leif Lindholm , Sughosh Ganu , Bob Feng , Liming Gao , nd@arm.com, Ard Biesheuvel References: <20210504152048.8739-1-etienne.carriere@linaro.org> <20210504152048.8739-4-etienne.carriere@linaro.org> From: "Sami Mujawar" Message-ID: Date: Tue, 11 May 2021 20:13:05 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0.1 In-Reply-To: <20210504152048.8739-4-etienne.carriere@linaro.org> X-Originating-IP: [217.140.106.52] X-ClientProxiedBy: LO3P123CA0006.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::11) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [10.1.196.43] (217.140.106.52) by LO3P123CA0006.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.24 via Frontend Transport; Tue, 11 May 2021 19:13:06 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ad8f992e-7886-4f4e-c7d9-08d914b0d4d2 X-MS-TrafficTypeDiagnostic: AM6PR08MB4597:|VI1PR08MB5373: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: GphkAnNXicMIW8AMUCfD5Sj8YcZQjSE8n4nxm7De9X8HGKl4AKes5SmRVK+N5q/qMSW+Kvfy1G8W8Mfg2Te2xuGKY3EO0Ge1JtBsPJOu5uJDQ+WwGA6pgzuv+nLX2ugm+vF1qRSbQuGi3yYdKdFBe11xdMMDxOBY1VJj6Sn6fof8Useg1/8RVmeaEJYm4vZXOzG5TPDV3IvZoxU10m5i6T9mR1XT+AE2SauqzPTqn+GaZ53r2xJK361ZQdzNOwJ+JJC6dau2p1cPWOtVy5id3QAGhGStunIO9glqNA9c1L729CbVwO3t5UeWDzKaleqcsh0y2xSI351o2Lh8aNL8316H8Ue+1urX4yIaSEVzuz6F3hkAqUiIXF+1eLL8pdeFkgJWWNLGrcFq85QXoVcyy3WYaKBtAj5anQigTP91djLL8wmepZZ7klZrppa1iJfZLr4+09KsJxymOu7shbQobn9KRgnxLJwokwrpubLzp9Q/a8DyjtAFExPQSmFzKDJAeWEZljkRS3Q/1TWT03VLjM8ssn5wC/VYLuZsyxcPSw8bkQT/TCe5nN0ATa3v7/sPyRwXPu/xy3ji88jNZZQL5QoAW+q++4121uCzgpRKFQ3oXbzrI/9VYkdx7186DKkqPu5s66nQGDLzAOfpLVzb6iY3wr5YCxQFMxWtdsOnUbaJiS28NSqRv9OBslTykp3dyeCEc2U/Gjj7DBanSYnUpyy2qVpDhYVHxBfTtnlt9NPvZWkgaj+yGQ5dlGvNBNnfk5+cHhL5jMx73Wsi+m3/NIhH8jJg5NhXiokGNrNXl4U= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(346002)(39840400004)(376002)(136003)(44832011)(4326008)(316002)(52116002)(16576012)(53546011)(5660300002)(2906002)(8936002)(66946007)(66476007)(66556008)(6486002)(16526019)(38350700002)(38100700002)(478600001)(26005)(186003)(8676002)(54906003)(36756003)(31686004)(31696002)(83380400001)(86362001)(966005)(2616005)(956004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?RTZtalU0VXRXSHBPUjhUdVZlMXVBVktTZkUrYmh0MllkbFlEeTkvVDB2c3ky?= =?utf-8?B?aU0vNlg0MGJLSmx3MWpQcE5JQ21pd0Iwd1BXQ0prZCtySkloN01EaXBRWEZ6?= =?utf-8?B?U0tvQXowVUh2a1BuZ0Y2MEcwWm9FaXYram54V0FkT21uZjFrMU5IL3ZodEZV?= =?utf-8?B?c1JFNHUyc0FRdzdLZE9zdXR4MnJZZUp4WEY5d2hEN3A4UW9WWUoxOHFDT3l6?= =?utf-8?B?Z054SDVKM0duV1ZyNE9kNUNUaHE5V3BqYTRtQVdLaU5qOFJ0NTVQbFNFRE9q?= =?utf-8?B?czFUbjZOdHNEYTVLaUJCT1VmOUhWRnU1VnoyWENGSFBYa2Nxc2FrOUZ5Unh0?= =?utf-8?B?RUN0eCtPRStCUzU2cU1BL3liQ2dJS25CREZoc09iT1NVMmVaSlBGVHRKdnE1?= =?utf-8?B?VDlmL0NoMWdxb2NXZG5PL21YQkJRei9BWjAxbG1lR3JwNE8wcjRHM2UrWGJZ?= =?utf-8?B?aTlmaEpsY1hhZnRnQit2ZzdqZTZsY1JUWXdZZk5XekNYRlVZUDdXRStEejlr?= =?utf-8?B?enE0M2xseW9RTys5cEtNQlhZeml6eGg4aS9HRTAvUGYvTlBwbUZqSzh6VWxF?= =?utf-8?B?N090S3ZMVDZhdnBBT2lYbHluQ2VraHJaaHNMYitVRDcwUVJKMkFkbGd5d2VO?= =?utf-8?B?M1cyR1FqV2FwRk9nYlVMRnNNUFZQMldWL25zSlltaC96Y3BFMmhWS3lkRTVj?= =?utf-8?B?ZGpzMit2eXlrRG8yY0pSWjBYT2NTelVUMTRhV2xyMGVvQlFxL05VVng5MzlW?= =?utf-8?B?YzFkOGRSb2FYTVlyMEhPWi9vMldYQ0hrN0NYTDZpTVJiMXh0dER6UDJLM0kz?= =?utf-8?B?b2Rlbm1NeTl0MVBwQ2YzUXF0QUdaeHp2cHN4MFowZXB1S2pZWTlHM2Z4bFZT?= =?utf-8?B?VGp5b1dUMjlaVUFLUytzVUUwMGdMMUxvdWVzTzQ2eXVjV09FZTE1c3N2dmJl?= =?utf-8?B?QzFaN0g5RXd0RUxGZ0lqMHBmUWR3ZjlKV0NWenBHZUFTNHYzcXVpODJheDZ4?= =?utf-8?B?TngzNVFLdkpuazZYcEFEMm56WVcrNUdLTjVLUXdXdEdBaEFaZjNnRjl1OFNH?= =?utf-8?B?WENQT1VtaDh6cURNbHBmVzlGTzdkbGhuN1pBb0JNTWpwMklwdHNSYUxrS29O?= =?utf-8?B?ejJBbTdsQVU1VmdUSnZ4ZEdUWk1VRHVjWUpaQ2llc2l0c2NuNWxqdSt3OUh0?= =?utf-8?B?YmtqMXZRZ1M1d2phV00yV2xvQVBiUXYwSCtYWmplbjQ0b1dOV2pMMUFRYUZY?= =?utf-8?B?d3JJS1pzcmFrR1NvK2pOTmEra1BEcnVaTzV1TlMxdGtOR3o5Z09KeHk5ZCtz?= =?utf-8?B?aEdXN3JncXJ3a3JtR0J6S0h0Z25BL0s1VUJMcURZZGpya0xyekR5djErV1NH?= =?utf-8?B?bktPNUtpcnQwdW5ZOU1hQlhCOHlrQ3dLM1RmZG9VRU5JUUZXSm8xamRkazdE?= =?utf-8?B?d1AyL0tYTXkveHQvSC85RVRlVEE3TTArRnRtcndXVzVDTEFGTWlIclZVU1c0?= =?utf-8?B?V041SkdkVEdDSGdrVW5IbzFxb3QzVmduYm9XdTJMbzBPdzNlNXorMFRFaXdZ?= =?utf-8?B?SXJsM3V1bk1xUUZhcjNjQ01QdUJlL3hmalV4RStHZDF2aU1CeFZkL1JCeUZW?= =?utf-8?B?Qm94RUNyNWlIazBZMzd5RjFmYXR0MHdFL2FmOVZRcUtTazNpbjJMWTJMSjdM?= =?utf-8?B?NGRjaGZHZzdUY3laQXNBbnJGcUd6cE05NWFSNWw3VkNibWZHSTVuODRMSURR?= =?utf-8?Q?k8ePVTzMguR5eHWSRopsZyFJ36zfWvsrBscrv45?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4597 Original-Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT042.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: d90587ab-4d90-445c-35fd-08d914b0ced0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ukXkXuWDdl4upTUK5BxcrnvYHFCnmKWuJ8Iip++9ugAPH1XMcc90msshmnz5kyTuRdtz6VlBsxjWSqP57i5jza9DmZuiGndb1S4dH65IX3vvhKAD2gSlreF3c9nXL4BzI8NJXYX8L7+MrgDN+Hwf1ftVeJXGB5KgP58eS1CRZ6V3WV1BQgHUt7mTaqyo9cfW4OPJt4UM2rjOkvH34AcY16iBFosU+vKjM8xKHiTJpB/Us2hkSp6Ia4J3QQF+vtmW2UnSECSlddCmcpc5sMHcAVkqIIHQa573LOZDXQUqAK1Fs3UVDp+R1cT1SzmRPE+zGHG9/XOkYrXvIRpijFJ9kft0F2VRefiYCvEOULdgYkAD0BU8p+2lVyThEL77E8Pt00cuX/X7WJjb07tLBtNH3FhpAK+QfK/aSx5N1FbNndQoRxsFLBJPo4nEpVR46oKsWk2hWW+MwV5Tqf0X/6ehaqZOTs3609FvnXsqq63rLf+TSgP5fqBzStYPzDDJ2IU91RjF3p5Mc08TKx8Z+qlYnNq7VvGyeR3EgbtyIeKIyOepD7y3g8aRFS8espxPkFn5JBRTe/4RWSlN1XLUVVao51QBZvuQqYLuLzsRGUYnZVOaBRRCridFO/a9tBBeh/GmJZNE8lVeVPa5eO25EUGzsoBMIVXZ1JG7o2xEsi7SbO62GVdfRMjMdSLa7ddGsATKAERuUB83O/m4IllLN7WawgfqPD8mFi1af6YpW5LYbMw2Eq+CD0T3EVj46MRWxmgp9skvCTsXfzrsAv+kYbMZ4A== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(376002)(346002)(396003)(136003)(39840400004)(36840700001)(46966006)(31696002)(36756003)(44832011)(26005)(36860700001)(86362001)(16526019)(6486002)(31686004)(186003)(316002)(107886003)(70206006)(82310400003)(70586007)(336012)(2616005)(956004)(2906002)(4326008)(47076005)(53546011)(356005)(54906003)(83380400001)(81166007)(16576012)(5660300002)(8936002)(8676002)(966005)(478600001)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2021 19:13:16.6958 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ad8f992e-7886-4f4e-c7d9-08d914b0d4d2 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT042.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5373 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Hi Etienne, Thank you for this patch. Please find my comments below marked [SAMI]. Regards, Sami Mujawar On 04/05/2021 04:20 PM, Etienne Carriere wrote: > Change GenFv for Arm architecture to generate a specific jump > instruction as image entry instruction, when the target entry label > is assembled with Thumb instruction set. This is possible since > SecCoreEntryAddress value fetched from the PE32 as its LSBit set when > the entry instruction executes in Thumb mode. > > Cc: Bob Feng > Cc: Liming Gao > Cc: Achin Gupta > Cc: Ard Biesheuvel > Cc: Leif Lindholm > Cc: Sughosh Ganu > Signed-off-by: Etienne Carriere > --- > BaseTools/Source/C/GenFv/GenFvInternalLib.c | 38 +++++++++++++++----- > 1 file changed, 29 insertions(+), 9 deletions(-) > > diff --git a/BaseTools/Source/C/GenFv/GenFvInternalLib.c b/BaseTools/Source/C/GenFv/GenFvInternalLib.c > index 6e296b8ad6..3af65146f6 100644 > --- a/BaseTools/Source/C/GenFv/GenFvInternalLib.c > +++ b/BaseTools/Source/C/GenFv/GenFvInternalLib.c > @@ -34,9 +34,27 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include "FvLib.h" > #include "PeCoffLib.h" > > -#define ARMT_UNCONDITIONAL_JUMP_INSTRUCTION 0xEB000000 > #define ARM64_UNCONDITIONAL_JUMP_INSTRUCTION 0x14000000 > > +/* > + * Arm instruction to jump to Fv enry instruction in Arm or Thumb mode. > + * From ARM Arch Ref Manual versions b/c/d, section A8.8.25 BL, BLX (immediate) > + * BLX (encoding A2) branches to offset in Thumb instruction set mode. > + * BL (encoding A1) branches to offset in Arm instruction set mode. > + */ > +#define ARM_JUMP_OFFSET_MAX 0xffffff > +#define ARM_JUMP_TO_ARM(Offset) (0xeb000000 | ((Offset - 8) >> 2)) > + > +#define _ARM_JUMP_TO_THUMB(Imm32) (0xfa000000 | \ > + (((Imm32) & (1 << 1)) << (24 - 1)) | \ > + (((Imm32) >> 2) & 0x7fffff)) > +#define ARM_JUMP_TO_THUMB(Offset) _ARM_JUMP_TO_THUMB((Offset) - 8) > + > +/* > + * Arm instruction to retrun from exception (MOVS PC, LR) > + */ > +#define ARM_RETURN_FROM_EXCEPTION 0xE1B0F07E > + > BOOLEAN mArm = FALSE; > BOOLEAN mRiscV = FALSE; > STATIC UINT32 MaxFfsAlignment = 0; > @@ -2203,23 +2221,25 @@ Returns: > // if we found an SEC core entry point then generate a branch instruction > // to it and populate a debugger SWI entry as well > if (UpdateVectorSec) { > + UINT32 EntryOffset; > > VerboseMsg("UpdateArmResetVectorIfNeeded updating ARM SEC vector"); > > - // B SecEntryPoint - signed_immed_24 part +/-32MB offset > - // on ARM, the PC is always 8 ahead, so we're not really jumping from the base address, but from base address + 8 > - ResetVector[0] = (INT32)(SecCoreEntryAddress - FvInfo->BaseAddress - 8) >> 2; > + EntryOffset = (INT32)(SecCoreEntryAddress - FvInfo->BaseAddress); > > - if (ResetVector[0] > 0x00FFFFFF) { > - Error(NULL, 0, 3000, "Invalid", "SEC Entry point must be within 32MB of the start of the FV"); > + if (EntryOffset > ARM_JUMP_OFFSET_MAX) { > + Error(NULL, 0, 3000, "Invalid", "SEC Entry point offset above 1MB of the start of the FV"); > return EFI_ABORTED; > } > > - // Add opcode for an unconditional branch with no link. i.e.: " B SecEntryPoint" > - ResetVector[0] |= ARMT_UNCONDITIONAL_JUMP_INSTRUCTION; > + if (SecCoreEntryAddress & 1) { [SAMI] if condition should evaluate a Boolean value. See https://edk2-docs.gitbook.io/edk-ii-c-coding-standards-specification/5_source_files/57_c_programming#5-7-2-1-boolean-values-variable-type-boolean-do-not-require-explicit-comparisons-to-true-or-false With that changed. [/SAMI] > + ResetVector[0] = ARM_JUMP_TO_THUMB(EntryOffset); > + } else { > + ResetVector[0] = ARM_JUMP_TO_ARM(EntryOffset); > + } > > // SWI handler movs pc,lr. Just in case a debugger uses SWI > - ResetVector[2] = 0xE1B0F07E; > + ResetVector[2] = ARM_RETURN_FROM_EXCEPTION; > > // Place holder to support a common interrupt handler from ROM. > // Currently not supported. For this to be used the reset vector would not be in this FV