A board-specific configuration must define two references to linking area objects where global system control blocks are allocated:
supervisor_context_area_ref specifies the area where supervisor address space global control blocks will be allocated.
user_context_area_ref specifies the area where the memory for user thread private data will be allocated.
For example, the SBC8260 board-specific configuration defines supervisor_context_area_ref as a reference to ram_area:
<definition name='supervisor_context_area_ref'> <description>reference to the address range where global system control blocks must be allocated</description> <type name='Area' ref-only='yes' /> <ref name='ram_area' /> </definition>
The mkimage tool will allocate an address range for supervisor address space control blocks in ram_area (as well as the address ranges for all segments link-edited into it).
Two configurations for user_context_area_ref are defined for the SBC8260 board.
When the micro-kernel is configured with the memory management module implementing the flat memory model (that is, when the value of the VIRTUAL_ADDRESS_SPACE configuration variable is false), user_context_area_ref is defined as a reference to ram_area:
<definition name='user_context_area_ref'> <description>reference to the address range where user software registers must be allocated</description> <condition><not><var name='VIRTUAL_ADDRESS_SPACE' /></not></condition> <type name='Area' ref-only='yes' /> <ref name='ram_area' /> </definition>
mkimage allocates user thread private data in ram_area.
When the micro-kernel is configured with one of memory management modules implementing the virtual memory model (that is, when the value of the VIRTUAL_ADDRESS_SPACE configuration variable is true), user_context_area_ref defines a specific address range (linking area) in the user virtual address space:
<definition name='user_context_area'> <description>address range where user software registers must be allocated</description> <condition><var name='VIRTUAL_ADDRESS_SPACE' /></condition> <type name='Area' /> <value field='virtual'><true /></value> <value field='private'><false /></value> <value field='addr'><const>0xeffff000</const>></value> <value field='size'><const>0x00001000</const></value> </definition> <definition name='user_context_area_ref'> <description>reference to the address range where user software registers must be allocated</description> <condition><var name='VIRTUAL_ADDRESS_SPACE' /></condition> <type name='Area' ref-only='yes' /> <ref name='user_context_area' /> </definition>