nios2: support more global pointer scenarios
We now allow use of -mgpopt=global and -mgpopt=data. The 'global' option is now the default instead of compiler-default local, expanding global pointer usage to all small data in the system. For systems where all RAM is less than 64K, the 'data' option may be appropriate. Some fixes had to be made to the system in order to get around some issues: * prep_c.c no longer uses fake linker variables to figure out the size of data or BSS, as these gave the linker fits as it tried to compute relative addresses to them. * _k_task_ptr_idle is create by sysgen and placed in a special section. Any small data in a special section needs to be declared extern with __attribute__((section)) else the compiler will assume it's in .sdata. * same situation with extern references to k_pipe_t (fixed pipe_priv test) For legacy applications being ported to Nios II which do things that freak out global pointer calculation, it can be disabled entirely. Change-Id: I5eb86ee8aefb8e2fac49c5cdd104ee19cea23f6f Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
5846bb6d65
commit
ef29812d51
8 changed files with 68 additions and 23 deletions
|
@ -132,10 +132,12 @@ GDATA(__data_num_words)
|
|||
|
||||
#include <stdint.h>
|
||||
extern char __bss_start[];
|
||||
extern char __bss_end[];
|
||||
extern int __bss_num_words[];
|
||||
#ifdef CONFIG_XIP
|
||||
extern char __data_rom_start[];
|
||||
extern char __data_ram_start[];
|
||||
extern char __data_ram_end[];
|
||||
extern int __data_num_words[];
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue