1.1 --- a/stage2/Makefile Tue Feb 23 23:57:53 2016 +0100
1.2 +++ b/stage2/Makefile Wed Feb 24 16:11:43 2016 +0100
1.3 @@ -1,6 +1,6 @@
1.4 # Makefile - Build the NanoNote payload
1.5 #
1.6 -# Copyright (C) 2015 Paul Boddie <paul@boddie.org.uk>
1.7 +# Copyright (C) 2015, 2016 Paul Boddie <paul@boddie.org.uk>
1.8 # Copyright (C) Xiangfu Liu <xiangfu@sharism.cc>
1.9 #
1.10 # This program is free software: you can redistribute it and/or modify
1.11 @@ -30,7 +30,7 @@
1.12
1.13 CFLAGS = -O2 -Wall \
1.14 -fno-unit-at-a-time -fno-zero-initialized-in-bss \
1.15 - -ffreestanding -fno-hosted -fno-builtin \
1.16 + -ffreestanding -fno-hosted -fno-builtin -fPIC \
1.17 -march=mips32 \
1.18 -I../include
1.19 LDFLAGS = -nostdlib -EL
2.1 --- a/stage2/entry.S Tue Feb 23 23:57:53 2016 +0100
2.2 +++ b/stage2/entry.S Wed Feb 24 16:11:43 2016 +0100
2.3 @@ -26,14 +26,16 @@
2.4 .set noreorder
2.5
2.6 _tlb_entry:
2.7 - lui $k0, %hi(tlb_handler)
2.8 - ori $k0, $k0, %lo(tlb_handler)
2.9 + lui $k0, %hi(_GLOBAL_OFFSET_TABLE_)
2.10 + ori $k0, $k0, %lo(_GLOBAL_OFFSET_TABLE_)
2.11 + la $k0, tlb_handler
2.12 jr $k0
2.13 nop
2.14
2.15 _irq_entry:
2.16 - lui $k0, %hi(interrupt_handler)
2.17 - ori $k0, $k0, %lo(interrupt_handler)
2.18 + lui $k0, %hi(_GLOBAL_OFFSET_TABLE_)
2.19 + ori $k0, $k0, %lo(_GLOBAL_OFFSET_TABLE_)
2.20 + la $k0, interrupt_handler
2.21 jr $k0
2.22 nop
2.23
3.1 --- a/stage2/head2.S Tue Feb 23 23:57:53 2016 +0100
3.2 +++ b/stage2/head2.S Wed Feb 24 16:11:43 2016 +0100
3.3 @@ -82,6 +82,7 @@
3.4
3.5 /* Start the program. */
3.6
3.7 + la $t9, c_main /* load the address of the routine */
3.8 j c_main
3.9 nop
3.10
4.1 --- a/stage2/stage2.ld Tue Feb 23 23:57:53 2016 +0100
4.2 +++ b/stage2/stage2.ld Wed Feb 24 16:11:43 2016 +0100
4.3 @@ -19,6 +19,7 @@
4.4
4.5 _gp = ALIGN(16);
4.6
4.7 + _got_start = ABSOLUTE(.);
4.8 .got : { *(.got*) }
4.9 _got_end = ABSOLUTE(.);
4.10