I Bohdan,

 

As describes in armlink user guide, OR and AND supported in the scatter file:

 

I checked with the armclang expert and got feedback that there are no link options to make armlinker support | or & in sct file.

 

Regards,

Sherry Zhang

 

From: Bohdan.Hunko--- via TF-M <tf-m@lists.trustedfirmware.org>
Sent: Thursday, June 1, 2023 8:24 PM
To: tf-m@lists.trustedfirmware.org
Subject: [TF-M] Re: Using bitwise or (|) / and (&) in Clang scatter file

 

Hi all,

 

Duplication message again in hope to find solution.

 

 

Regards,

Bohdan Hunko

 

Cypress Semiconductor Ukraine

Engineer

CSUKR CSS ICW SW FW

Mobile: +38099 50 19 714
Bohdan.Hunko@infineon.com

 

 

From: Bohdan.Hunko--- via TF-M <tf-m@lists.trustedfirmware.org>
Sent: 26 May 2023 19:26
To: tf-m@lists.trustedfirmware.org
Cc: Mazurak Roman (CSUKR CSS ICW SW FW 3) <Roman.Mazurak@infineon.com>; Kytsun Hennadiy (CSUKR CSS ICW SW FW 3) <Hennadiy.Kytsun@infineon.com>; Brand Chris (CSCA CSS ICW SW PSW 1) <Chris.Brand@infineon.com>
Subject: [TF-M] Using bitwise or (|) / and (&) in Clang scatter file

 

Caution: This e-mail originated outside Infineon Technologies. Do not click on links or open attachments unless you validate it is safe.

 

Hi

 

For our platform we use some ,across which should set/clear bit 28 of an address (see code below). We do this for convenience reasons.

#define IFX_S_ADDRESS_ALIAS(x)              ((x) | 0x10000000)

#define IFX_NS_ADDRESS_ALIAS(x)             ((x) & ~0x10000000)

 

 

Those macros are used in declaration of S_CODE_START macro. When expended in linker script (tfm_isolation_l3.o),  the declaration of LR_CODE section looks as follows:

 

LR_CODE (0x24000000 | 0x10000000) (0x4B000) {

 

This code results in following error:

                               

                                tfm_isolation_l3.o", line 46 (column 21): Error: L6292E: Ignoring unknown attribute '|' specified for region LR_CODE.

 

I tried experimenting with this and found out that when | is changed to or (see following code) then linker works fine:

 

LR_CODE (0x24000000 or 0x10000000) (0x4B000) {

 

Same problem is present when using bitwise and (&). But when using bitwise NOT (~0x…) everything works fine.

 

Having to define our macros in different way brings some problems for our platform, so maybe someone knows how to solve this problem? Maybe there are compilation  flags or something like that? Ideally we want | and & to work fine in linker script.

 

Thanks!

 

Regards,

Bohdan Hunko

 

Cypress Semiconductor Ukraine

Engineer

CSUKR CSS ICW SW FW

Mobile: +38099 50 19 714
Bohdan.Hunko@infineon.com