soc/intel_adsp: Correct linker syntax for ancient binutils

Older binutils, like the (nine-year-old!) 2.23 version that powers
many Cadence XCC toolchains, happen not to support the "~" operator to
perform bitwise negation.  And they generate an absolutely hilarious
series of inscrutable error messages when they try to tell you this
fairly simple fact.

Just fold it into the constant.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
This commit is contained in:
Andy Ross 2021-09-07 13:09:31 -07:00 committed by Anas Nashif
commit 8bc4539cec
3 changed files with 8 additions and 3 deletions

View file

@ -42,9 +42,11 @@ PROVIDE(_MemErrorHandler = 0x00000000);
* the output tooling ignores it, but it will cause the linker to emit * the output tooling ignores it, but it will cause the linker to emit
* 512MB of unused data into the output file!) * 512MB of unused data into the output file!)
* *
* (Note clumsy syntax because XCC doesn't understand the "~" operator)
*
*/ */
#define SEGSTART_CACHED (ALIGN(64) | 0x20000000) #define SEGSTART_CACHED (ALIGN(64) | 0x20000000)
#define SEGSTART_UNCACHED (ALIGN(64) & ~0x20000000) #define SEGSTART_UNCACHED (ALIGN(64) & 0xdfffffff) /* == ~0x20000000 */
MEMORY MEMORY
{ {

View file

@ -42,9 +42,11 @@ PROVIDE(_MemErrorHandler = 0x00000000);
* the output tooling ignores it, but it will cause the linker to emit * the output tooling ignores it, but it will cause the linker to emit
* 512MB of unused data into the output file!) * 512MB of unused data into the output file!)
* *
* (Note clumsy syntax because XCC doesn't understand the "~" operator)
*
*/ */
#define SEGSTART_CACHED (ALIGN(64) | 0x20000000) #define SEGSTART_CACHED (ALIGN(64) | 0x20000000)
#define SEGSTART_UNCACHED (ALIGN(64) & ~0x20000000) #define SEGSTART_UNCACHED (ALIGN(64) & 0xdfffffff) /* == ~0x20000000 */
MEMORY MEMORY
{ {

View file

@ -42,10 +42,11 @@ PROVIDE(_MemErrorHandler = 0x00000000);
* the output tooling ignores it, but it will cause the linker to emit * the output tooling ignores it, but it will cause the linker to emit
* 512MB of unused data into the output file!) * 512MB of unused data into the output file!)
* *
* (Note clumsy syntax because XCC doesn't understand the "~" operator)
*/ */
#ifdef CONFIG_KERNEL_COHERENCE #ifdef CONFIG_KERNEL_COHERENCE
#define SEGSTART_CACHED (ALIGN(64) | 0x20000000) #define SEGSTART_CACHED (ALIGN(64) | 0x20000000)
#define SEGSTART_UNCACHED (ALIGN(64) & ~0x20000000) #define SEGSTART_UNCACHED (ALIGN(64) & 0xdfffffff) /* == ~0x20000000 */
#else #else
#define SEGSTART_CACHED /**/ #define SEGSTART_CACHED /**/
#define SEGSTART_UNCACHED /**/ #define SEGSTART_UNCACHED /**/