gcc: препроцессор не хочет сам рассчитать константу .asm
#define ELINS_ETH_SIZE 65536U
#define ELINS_STACK_SIZE 65536U
#define ELINS_SCREEN_SIZE 1048576U
#define ELINS_MEM_TOP 0x8f000000U //(unsigned int)(cpuboard_property->sdram_size)
#define ELINS_RESERVED1_BASE (ELINS_MEM_TOP- ELINS_SCREEN_SIZE)
#define ELINS_RESERVED2_BASE (ELINS_RESERVED1_BASE- ELINS_SCREEN_SIZE)
#define ELINS_SCREEN_BASE (ELINS_RESERVED2_BASE- ELINS_SCREEN_SIZE)
#define ELINS_ZLIB_BASE (ELINS_SCREEN_BASE- ELINS_ZLIB_SIZE)
#define ELINS_ETH_BASE (ELINS_ZLIB_BASE - ELINS_ETH_SIZE)
#define ELINS_USB_BASE ((ELINS_ETH_BASE - ELINS_USB_SIZE) | 0xa0000000) /* в некэшируемом адресном пространстве */
#define ELINS_STACK_BASE (ELINS_ETH_BASE - ELINS_USB_SIZE - ELINS_STACK_SIZE) /* grow down */
#define ELINS_STACK (ELINS_STACK_BASE- ELINS_STACK_SIZE)
move r0, ELINS_STACK_BASE
gcc -Wp,-MD,,vectors.tmp -G0 -c -o vectors.tmp vectors.S
vectors.S:186: Error: Illegal operands move $4,((((((0x8f000000U-1048576U)-1048576U)-1048576U)-262140U)-65536U)-65536U-65536U)
Как победить?