summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
Diffstat (limited to 'bsp')
-rw-r--r--bsp/env/coreplexip-arty.h2
-rw-r--r--bsp/env/coreplexip-e31-arty/link.lds16
-rw-r--r--bsp/env/freedom-e300-hifive1/link.lds16
-rw-r--r--bsp/env/hifive1.h2
-rw-r--r--bsp/env/start.S10
-rw-r--r--bsp/libwrap/misc/write_hex.c4
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));