diff options
Diffstat (limited to 'bsp')
-rw-r--r-- | bsp/env/coreplexip-arty.h | 2 | ||||
-rw-r--r-- | bsp/env/coreplexip-e31-arty/link.lds | 16 | ||||
-rw-r--r-- | bsp/env/freedom-e300-hifive1/link.lds | 16 | ||||
-rw-r--r-- | bsp/env/hifive1.h | 2 | ||||
-rw-r--r-- | bsp/env/start.S | 10 | ||||
-rw-r--r-- | bsp/libwrap/misc/write_hex.c | 4 |
6 files changed, 21 insertions, 29 deletions
diff --git a/bsp/env/coreplexip-arty.h b/bsp/env/coreplexip-arty.h index 161da7c..eedcaa5 100644 --- a/bsp/env/coreplexip-arty.h +++ b/bsp/env/coreplexip-arty.h @@ -97,6 +97,6 @@ #define RTC_FREQ 32768 -void write_hex(int fd, long int hex); +void write_hex(int fd, unsigned long int hex); #endif /* _SIFIVE_COREPLEXIP_ARTY_H */ diff --git a/bsp/env/coreplexip-e31-arty/link.lds b/bsp/env/coreplexip-e31-arty/link.lds index 45a82d7..590c5b6 100644 --- a/bsp/env/coreplexip-e31-arty/link.lds +++ b/bsp/env/coreplexip-e31-arty/link.lds @@ -120,11 +120,11 @@ SECTIONS { *(.data .data.*) *(.gnu.linkonce.d.*) - } >ram AT>flash :ram_init - - .srodata : - { - PROVIDE( _gp = . + 0x800 ); + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800 ); + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + . = ALIGN(8); *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) @@ -132,12 +132,6 @@ SECTIONS *(.srodata .srodata.*) } >ram AT>flash :ram_init - .sdata : - { - *(.sdata .sdata.*) - *(.gnu.linkonce.s.*) - } >ram AT>flash :ram_init - . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); diff --git a/bsp/env/freedom-e300-hifive1/link.lds b/bsp/env/freedom-e300-hifive1/link.lds index 90e5c8f..6b37141 100644 --- a/bsp/env/freedom-e300-hifive1/link.lds +++ b/bsp/env/freedom-e300-hifive1/link.lds @@ -120,11 +120,11 @@ SECTIONS { *(.data .data.*) *(.gnu.linkonce.d.*) - } >ram AT>flash :ram_init - - .srodata : - { - PROVIDE( _gp = . + 0x800 ); + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800 ); + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + . = ALIGN(8); *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) @@ -132,12 +132,6 @@ SECTIONS *(.srodata .srodata.*) } >ram AT>flash :ram_init - .sdata : - { - *(.sdata .sdata.*) - *(.gnu.linkonce.s.*) - } >ram AT>flash :ram_init - . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); diff --git a/bsp/env/hifive1.h b/bsp/env/hifive1.h index b987847..0db2f0f 100644 --- a/bsp/env/hifive1.h +++ b/bsp/env/hifive1.h @@ -76,6 +76,6 @@ #define RTC_FREQ 32768 -void write_hex(int fd, long int hex); +void write_hex(int fd, unsigned long int hex); #endif /* _SIFIVE_HIFIVE1_H */ diff --git a/bsp/env/start.S b/bsp/env/start.S index 9ec6c1c..e86105b 100644 --- a/bsp/env/start.S +++ b/bsp/env/start.S @@ -7,7 +7,10 @@ .type _start,@function _start: - la gp, _gp +.option push +.option norelax + la gp, __global_pointer$ +.option pop la sp, _sp /* Load data section */ @@ -52,7 +55,8 @@ _start: /* argc = argv = 0 */ li a0, 0 li a1, 0 - call _init call main - call _fini tail exit + +1: + j 1b diff --git a/bsp/libwrap/misc/write_hex.c b/bsp/libwrap/misc/write_hex.c index 96f832d..a35ad7a 100644 --- a/bsp/libwrap/misc/write_hex.c +++ b/bsp/libwrap/misc/write_hex.c @@ -4,13 +4,13 @@ #include <unistd.h> #include "platform.h" -void write_hex(int fd, long int hex) +void write_hex(int fd, unsigned long int hex) { uint8_t ii; uint8_t jj; char towrite; write(fd , "0x", 2); - for (ii = sizeof(long int) * 2 ; ii > 0; ii--) { + for (ii = sizeof(unsigned long int) * 2 ; ii > 0; ii--) { jj = ii - 1; uint8_t digit = ((hex & (0xF << (jj*4))) >> (jj*4)); towrite = digit < 0xA ? ('0' + digit) : ('A' + (digit - 0xA)); |