Merge pull request #2 from kendryte/patch/use_global_pointer
Use "__global_pointer$" instead of "_gp"pull/5/head
commit
cf49451ee8
|
@ -143,7 +143,7 @@ SECTIONS
|
|||
we can shorten the on-disk segment size. */
|
||||
.sdata :
|
||||
{
|
||||
_gp = . + 0x800;
|
||||
__global_pointer$ = . + 0x800;
|
||||
*(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*)
|
||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
||||
} > ram : DATA
|
||||
|
|
|
@ -112,7 +112,10 @@ _start:
|
|||
|
||||
1:
|
||||
|
||||
la gp, _gp
|
||||
.option push
|
||||
.option norelax
|
||||
la gp, __global_pointer$
|
||||
.option pop
|
||||
la tp, _end + 63
|
||||
and tp, tp, -64
|
||||
csrr a0, mhartid
|
||||
|
|
|
@ -140,6 +140,9 @@ int vPortSetInterruptMask(void)
|
|||
*/
|
||||
StackType_t* pxPortInitialiseStack(StackType_t* pxTopOfStack, TaskFunction_t pxCode, void* pvParameters)
|
||||
{
|
||||
UBaseType_t gp;
|
||||
__asm volatile("mv %0, gp" : "=r"(gp));
|
||||
|
||||
/* Simulate the stack frame as it would be created by a context switch
|
||||
interrupt. */
|
||||
pxTopOfStack--;
|
||||
|
@ -147,7 +150,9 @@ StackType_t* pxPortInitialiseStack(StackType_t* pxTopOfStack, TaskFunction_t pxC
|
|||
pxTopOfStack -= 22;
|
||||
*pxTopOfStack = (portSTACK_TYPE)pvParameters; /* Register a0 */
|
||||
pxTopOfStack -= 6;
|
||||
pxTopOfStack -= 2;
|
||||
pxTopOfStack--;
|
||||
*pxTopOfStack = gp;
|
||||
pxTopOfStack--;
|
||||
*pxTopOfStack = (StackType_t)(pxTopOfStack - 1);
|
||||
pxTopOfStack--;
|
||||
*pxTopOfStack = (portSTACK_TYPE)prvTaskExitError; /* Register ra */
|
||||
|
|
Loading…
Reference in New Issue