Skip to content

Commit 05adc7b

Browse files
author
Cyril Lugan
committed
prex-0.9.0
1 parent b5b88de commit 05adc7b

File tree

911 files changed

+88353
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

911 files changed

+88353
-0
lines changed

Makefile

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
PATH := $(DEVKITARM)/bin:$(PATH)
3+
4+
GAME_TITLE := PrexDS
5+
GAME_SUBTITLE1 := cyril.lugan.info
6+
GAME_SUBTITLE2 := www.devkitpro.org
7+
GAME_ICON := $(DEVKITPRO)/libnds/icon.bmp
8+
9+
all : prex.nds
10+
11+
prex.nds : prex.arm9
12+
ndstool -c $@ -9 prex.arm9 -b $(GAME_ICON) "$(GAME_TITLE);$(GAME_SUBTITLE1);$(GAME_SUBTITLE2)"
13+
14+
.PHONY : prex.arm9 clean
15+
16+
prex.arm9 :
17+
@$(MAKE) --file=prex.mk prex.arm9
18+
19+
clean :
20+
@$(MAKE) --file=prex.mk clean

bsp/boot/arm/arch/Makefile.inc

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
SRCS+= arm/arch/elf_reloc.c

bsp/boot/arm/arch/boot.ld

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Linker script for boot loader
3+
*/
4+
INCLUDE config.ld
5+
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
6+
OUTPUT_ARCH(arm)
7+
SECTIONS {
8+
. = CONFIG_LOADER_TEXT ;
9+
10+
.text . : {
11+
*(.text)
12+
}
13+
. = ALIGN(4);
14+
.rodata . : {
15+
*(.rodata)
16+
*(.rodata.*)
17+
}
18+
. = ALIGN(4);
19+
.data . : {
20+
*(.data)
21+
}
22+
. = ALIGN(4);
23+
.bss . : {
24+
*(.bss)
25+
*(COMMON)
26+
}
27+
. = CONFIG_LOADER_TEXT + 0x1fff;
28+
.tail : {
29+
*(.tail)
30+
}
31+
}

bsp/boot/arm/arch/elf_reloc.c

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*-
2+
* Copyright (c) 2006, Kohsuke Ohtani
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* 3. Neither the name of the author nor the names of any co-contributors
14+
* may be used to endorse or promote products derived from this software
15+
* without specific prior written permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27+
* SUCH DAMAGE.
28+
*/
29+
30+
#include <sys/param.h>
31+
#include <sys/elf.h>
32+
#include <boot.h>
33+
34+
int
35+
relocate_rel(Elf32_Rel *rel, Elf32_Addr sym_val, char *target_sect)
36+
{
37+
Elf32_Addr *where, tmp;
38+
Elf32_Sword addend;
39+
40+
where = (Elf32_Addr *)(target_sect + rel->r_offset);
41+
42+
switch (ELF32_R_TYPE(rel->r_info)) {
43+
case R_ARM_NONE:
44+
break;
45+
case R_ARM_ABS32:
46+
*where += (vaddr_t)ptokv(sym_val);
47+
ELFDBG(("R_ARM_ABS32: %lx -> %lx\n",
48+
(long)where, (long)*where));
49+
break;
50+
case R_ARM_PC24:
51+
case R_ARM_PLT32:
52+
case R_ARM_CALL:
53+
case R_ARM_JUMP24:
54+
addend = (Elf32_Sword)(*where & 0x00ffffff);
55+
if (addend & 0x00800000)
56+
addend |= 0xff000000;
57+
tmp = sym_val - (Elf32_Addr)where + (addend << 2);
58+
tmp >>= 2;
59+
*where = (*where & 0xff000000) | (tmp & 0x00ffffff);
60+
ELFDBG(("R_ARM_PC24: %lx -> %lx\n",
61+
(long)where, (long)*where));
62+
break;
63+
default:
64+
ELFDBG(("Unkown relocation type=%d\n",
65+
ELF32_R_TYPE(rel->r_info)));
66+
panic("relocation fail");
67+
return -1;
68+
}
69+
return 0;
70+
}
71+
72+
int
73+
relocate_rela(Elf32_Rela *rela, Elf32_Addr sym_val, char *target_sec)
74+
{
75+
76+
panic("invalid relocation type");
77+
return -1;
78+
}

bsp/boot/arm/arch/head.S

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*-
2+
* Copyright (c) 2008, Kohsuke Ohtani
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* 3. Neither the name of the author nor the names of any co-contributors
14+
* may be used to endorse or promote products derived from this software
15+
* without specific prior written permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27+
* SUCH DAMAGE.
28+
*/
29+
30+
/*
31+
* head.S - generic header code for ARM platforms.
32+
*/
33+
34+
#include <conf/config.h>
35+
#include <machine/memory.h>
36+
#include <machine/syspage.h>
37+
38+
#define ENTRY(x) .global x; .align; x##:
39+
40+
.section ".text","ax"
41+
.code 32
42+
/*
43+
* Loader entry point
44+
*/
45+
ENTRY(boot_entry)
46+
b start_vector
47+
48+
.align
49+
.code 32
50+
stack_end: .word (BOOTSTKTOP - KERNBASE)
51+
52+
start_vector:
53+
mov r0, #0xd3 /* Enter SVC mode, Disable IRQ,FIQ */
54+
msr cpsr_c, r0
55+
ldr sp, stack_end
56+
57+
adr r0, thumb_mode + 1
58+
bx r0
59+
.code 16
60+
thumb_mode:
61+
62+
ldr r0, =main
63+
bx r0 /* Change to ARM mode */
64+
65+
.section .tail,"ax"
66+
dummy:
67+
.byte 0xff
68+
69+
.end

bsp/boot/arm/gba/Makefile.inc

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
SRCS:= arm/gba/head.S \
3+
arm/gba/startup.c \
4+
arm/gba/debug.c
5+

bsp/boot/arm/gba/debug.c

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*-
2+
* Copyright (c) 2005-2009, Kohsuke Ohtani
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* 3. Neither the name of the author nor the names of any co-contributors
14+
* may be used to endorse or promote products derived from this software
15+
* without specific prior written permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27+
* SUCH DAMAGE.
28+
*/
29+
30+
#include <sys/param.h>
31+
#include <boot.h>
32+
33+
#if defined(DEBUG) && defined(CONFIG_DIAG_VBA)
34+
extern void vba_putc(int);
35+
#endif
36+
37+
/*
38+
* Print one chracter
39+
*/
40+
void
41+
debug_putc(int c)
42+
{
43+
44+
#if defined(DEBUG) && defined(CONFIG_DIAG_VBA)
45+
vba_putc(c);
46+
#endif
47+
}
48+
49+
/*
50+
* Initialize debug port.
51+
*/
52+
void
53+
debug_init(void)
54+
{
55+
/* DO NOTHING */
56+
}
57+

0 commit comments

Comments
 (0)