Skip to content
This repository has been archived by the owner on Oct 24, 2023. It is now read-only.

Commit

Permalink
minrt: unify specific and standard data sections when copying
Browse files Browse the repository at this point in the history
  • Loading branch information
LunarLambda committed Mar 8, 2023
1 parent 746c05b commit abc545f
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 47 deletions.
2 changes: 1 addition & 1 deletion dist.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ make_dist() {
[ ! -d "$DIST" ] && mkdir "$DIST" || rm "$DIST"/*

(PROJECT=libseven VERSION=0.17.2 make_dist)
(PROJECT=minrt VERSION=0.8.0 make_dist)
(PROJECT=minrt VERSION=0.8.1 make_dist)
4 changes: 2 additions & 2 deletions meson.build
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
project('sdk-seven', 'c',
version: '0.20.0',
version: '0.20.1',
license: 'Zlib',
meson_version: '>=0.59.0',
default_options: ['warning_level=2', 'c_std=c99'])

libseven_version = '0.17.2'
minrt_version = '0.8.0'
minrt_version = '0.8.1'

cflags = [
'-mthumb',
Expand Down
2 changes: 1 addition & 1 deletion minrt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ add_library(minrt STATIC
src/c/fini.c
src/c/init.c
src/c/start.c
src/gba/crt0.s
src/gba/ram.c
src/gba/rom_header.s
src/gba/rt0.s
)

target_include_directories(minrt PUBLIC include/)
Expand Down
31 changes: 15 additions & 16 deletions minrt/lib/ldscripts/gba.x
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,11 @@ SECTIONS
*(.data .data.* .gnu.linkonce.d.*)
} >DATA_REGION AT>LOAD_REGION :DATA


.iwram_init_end : {} >IWRAM
.ewram_init_end : {} >EWRAM
.vram_init_end : {} >VRAM

/* Persistent data */

.persistent :
Expand Down Expand Up @@ -177,6 +182,10 @@ SECTIONS
*(COMMON)
} >BSS_REGION :NONE

.iwram_bss_end : {} >IWRAM
.ewram_bss_end : {} >EWRAM
.vram_bss_end : {} >VRAM

/* Persistent zero-initialized data */

.noinit (NOLOAD) :
Expand Down Expand Up @@ -267,44 +276,34 @@ SECTIONS

__iwram_vma = ADDR(.iwram);
__iwram_lma = LOADADDR(.iwram);
__iwram_len = SIZEOF(.iwram);
__iwram_len = ADDR(.iwram_init_end) - ORIGIN(IWRAM);

__iwram_overlay = ADDR(.iwram0);

__ewram_vma = ADDR(.ewram);
__ewram_lma = LOADADDR(.ewram);
__ewram_len = SIZEOF(.ewram);
__ewram_len = ADDR(.ewram_init_end) - ORIGIN(EWRAM);

__ewram_overlay = ADDR(.ewram0);

__vram_vma = ADDR(.vram);
__vram_lma = LOADADDR(.vram);
__vram_len = SIZEOF(.vram);
__vram_len = ADDR(.vram_init_end) - ORIGIN(VRAM);

__vram_overlay = ADDR(.vram0);

__data_vma = ADDR(.data);
__data_lma = LOADADDR(.data);
__data_len = SIZEOF(.data);

__persistent_vma = ADDR(.persistent);
__persistent_lma = LOADADDR(.persistent);
__persistent_len = SIZEOF(.persistent);

__iwram_bss_vma = ADDR(.iwram_bss);
__iwram_bss_len = SIZEOF(.iwram_bss);
__iwram_bss_len = ADDR(.iwram_bss_end) - ADDR(.iwram_bss);

__ewram_bss_vma = ADDR(.ewram_bss);
__ewram_bss_len = SIZEOF(.ewram_bss);
__ewram_bss_len = ADDR(.ewram_bss_end) - ADDR(.ewram_bss);

__vram_bss_vma = ADDR(.vram_bss);
__vram_bss_len = SIZEOF(.vram_bss);

__bss_vma = ADDR(.bss);
__bss_len = SIZEOF(.bss);

__noinit_vma = ADDR(.noinit);
__noinit_len = SIZEOF(.noinit);
__vram_bss_len = ADDR(.vram_bss_end) - ADDR(.vram_bss);

__load = ORIGIN(LOAD_REGION);
__load_end = ADDR(.load_end);
Expand Down
2 changes: 1 addition & 1 deletion minrt/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ sources_rs = [
]

sources = [
'src/gba/crt0.s',
'src/gba/ram.c',
'src/gba/rt0.s',
]

lang = get_option('minrt_lang')
Expand Down
38 changes: 12 additions & 26 deletions minrt/src/gba/crt0.s → minrt/src/gba/rt0.s
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
.cpu arm7tdmi

.section .pad,"aR",%progbits
.string "minrt 0.8.0"
.string "minrt 0.8.1"

.section .text._start_rom,"ax",%progbits
_start_rom:
Expand Down Expand Up @@ -56,39 +56,30 @@ _start:
bx r0

.thumb
@ .iwram section
ldr r0, =__iwram_vma
ldr r1, =__iwram_lma
@ IWRAM segment
ldr r2, =__iwram_len
cmp r2, 0
beq 1f
ldr r0, =__iwram_vma
ldr r1, =__iwram_lma
bl memcpy
1:

@ .ewram section
ldr r0, =__ewram_vma
ldr r1, =__ewram_lma
@ EWRAM segment
ldr r2, =__ewram_len
cmp r2, 0
beq 1f
ldr r0, =__ewram_vma
ldr r1, =__ewram_lma
bl memcpy
1:

@ .vram section
ldr r0, =__vram_vma
ldr r1, =__vram_lma
@ VRAM segment
ldr r2, =__vram_len
cmp r2, 0
beq 1f
bl memcpy
1:

@ .data section
ldr r0, =__data_vma
ldr r1, =__data_lma
ldr r2, =__data_len
cmp r2, 0
beq 1f
ldr r0, =__vram_vma
ldr r1, =__vram_lma
bl memcpy
1:

Expand All @@ -99,11 +90,11 @@ _start:
bne 1f
movs r0, 1
strb r0, [r3]
ldr r0, =__persistent_vma
ldr r1, =__persistent_lma
ldr r2, =__persistent_len
cmp r2, 0
beq 1f
ldr r0, =__persistent_vma
ldr r1, =__persistent_lma
bl memcpy
1:

Expand All @@ -125,11 +116,6 @@ _start:
ldr r2, =__vram_bss_len
bl memset

@ .bss section
ldr r0, =__bss_vma
movs r1, 0
ldr r2, =__bss_len

bl _start_lang

pool: .pool
Expand Down

0 comments on commit abc545f

Please sign in to comment.