Merge pull request #2 from kendryte/patch/use_global_pointer

Use "__global_pointer$" instead of "_gp"
pull/5/head
latyas 2018-09-19 13:54:32 +08:00 committed by GitHub
commit cf49451ee8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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 */