Skip to content

Commit

Permalink
Merge pull request #2 from AuroraWright/master
Browse files Browse the repository at this point in the history
Reorganized screen init functions, removed all delays (thanks to disa…
  • Loading branch information
pixel-stuck committed Mar 20, 2016
2 parents 1ee8d88 + ea342ff commit 22f8be9
Show file tree
Hide file tree
Showing 100 changed files with 260 additions and 42,607 deletions.
17 changes: 0 additions & 17 deletions .gitattributes

This file was deleted.

17 changes: 9 additions & 8 deletions .gitignore
@@ -1,8 +1,9 @@
.idea
CMakeLists.txt

data_output
data_input/*.bin
data_input/*.firm

*.bat
screen_init/obj
out
payload_stage1/build
payload_stage2/build
payload_stage2/data
*.elf
*.bin
*.o
*.d
51 changes: 13 additions & 38 deletions Makefile
@@ -1,52 +1,27 @@
.PHONY : all hax firm0 firm1 sector screen_init stage2 installer clean
.PHONY : stage1 arm11 stage2

TARGET = arm9loaderhax
PYTHON = python
INDIR = data_input
OUTDIR = data_output
OUTDIR = out

all : $(OUTDIR) hax installer

hax : $(OUTDIR) firm0 firm1 sector screen_init stage2
all : $(OUTDIR) stage1 arm11 stage2

$(OUTDIR):
@[ -d $(OUTDIR) ] || mkdir -p $(OUTDIR)

firm0:
@cd payload_stage1 && make
@cp $(INDIR)/new3ds90.firm $(OUTDIR)/firm0.bin
@dd if=payload_stage1/payload_stage1.bin of=$(OUTDIR)/firm0.bin bs=512 seek=1922 conv=notrunc
@echo FIRM0 done!

firm1:
@cp $(INDIR)/new3ds10.firm $(OUTDIR)/firm1.bin
@echo FIRM1 done!

sector:
@$(PYTHON) common/sector_generator.py $(INDIR)/secret_sector.bin $(INDIR)/otp.bin $(OUTDIR)/sector.bin
@echo SECTOR done!
arm11:
@$(MAKE) -C arm11

screen_init:
@[ -d payload_stage2/data ] || mkdir -p payload_stage2/data
$(MAKE) -C screen_init
@cp screen_init/screen_init.bin payload_stage2/data/
stage1:
@$(MAKE) -C payload_stage1
@mv payload_stage1/payload_stage1.bin $(OUTDIR)

stage2:
@cp screen_init/screen_init.bin payload_stage2/data
@[ -d payload_stage2/data ] || mkdir -p payload_stage2/data
@mv arm11/arm11.bin payload_stage2/data
@$(MAKE) -C payload_stage2
@cp payload_stage2/payload_stage2.bin $(OUTDIR)/stage0x5C000.bin

installer:
@cp $(OUTDIR)/sector.bin payload_installer/brahma2/data/sector.bin
@cp $(OUTDIR)/firm0.bin payload_installer/brahma2/data/firm0.bin
@cp $(OUTDIR)/firm1.bin payload_installer/brahma2/data/firm1.bin
@cp $(OUTDIR)/stage0x5C000.bin payload_installer/brahma2/data/stage2.bin
@cd payload_installer && make TARGET=../$(OUTDIR)/$(TARGET)
@echo INSTALLER done!
@mv payload_stage2/payload_stage2.bin $(OUTDIR)

clean:
@echo clean...
@$(MAKE) -C payload_stage1 clean
@$(MAKE) -C screen_init clean
@$(MAKE) -C arm11 clean
@$(MAKE) -C payload_stage2 clean
@$(MAKE) -C payload_installer clean TARGET=../$(TARGET)
@rm -rf $(OUTDIR)
36 changes: 17 additions & 19 deletions screen_init/Makefile → arm11/Makefile
Expand Up @@ -7,53 +7,51 @@ LD=arm-none-eabi-ld
MV=mv -f
RM=rm -rf

LIBNAME=screen_init
LIBNAME=arm11
ELFNAME=$(LIBNAME).elf
BINNAME=$(LIBNAME).bin
DATNAME=$(LIBNAME).dat

SRC_DIR:=source/$(LIBNAME)
OBJ_DIR:=obj/$(LIBNAME)
LIB_DIR:=lib
DEP_DIR:=obj/$(LIBNAME)
SRC_DIR:=source
OBJ_DIR:=build

LIBS=
CFLAGS=-std=gnu99 -Os -g -mword-relocations -fomit-frame-pointer -ffast-math
C9FLAGS=-mcpu=arm946e-s -march=armv5te -mlittle-endian
C11FLAGS=-mcpu=mpcore -mlittle-endian
CFLAGS= -g -Wall -O2 -mword-relocations\
-ffast-math -Wno-main -std=c99\
-mcpu=mpcore -mlittle-endian $(ARCH)
LDFLAGS=$(LIBS)
OCFLAGS=--set-section-flags .bss=alloc,load,contents

OBJS:=$(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(wildcard $(SRC_DIR)/*.c))
OBJS+=$(patsubst $(SRC_DIR)/%.s, $(OBJ_DIR)/%.o, $(wildcard $(SRC_DIR)/*.s))
OBJS+=$(patsubst $(SRC_DIR)/%.S, $(OBJ_DIR)/%.o, $(wildcard $(SRC_DIR)/*.S))

OUT_DIR= obj/$(LIBNAME)
OUT_DIR=build

.PHONY: clean

all: screen_init.bin
all: $(LIBNAME).bin

screen_init.bin: $(OBJS)
$(CC) -nostartfiles --specs=$(LIBNAME).specs $(OBJS) $(LDFLAGS) -o $(ELFNAME)
$(LIBNAME).bin: $(OBJS)
$(CC) -nostartfiles --specs=../common/$(LIBNAME).specs $(OBJS) $(LDFLAGS) -o $(ELFNAME)
$(OC) $(OCFLAGS) -O binary $(ELFNAME) $(BINNAME)

obj/%.o: source/%.c | dirs
${OBJ_DIR}/%.o: source/%.c | dirs
@echo Compiling $<
$(CC) -c $(CFLAGS) $(C11FLAGS) $< -o $@
$(CC) -c $(CFLAGS) $< -o $@

obj/%.o: source/%.s | dirs
${OBJ_DIR}/%.o: source/%.s | dirs
@echo Compiling $<
$(CC) -c $(CFLAGS) $(C11FLAGS) $< -o $@
$(CC) -c $(CFLAGS) $< -o $@

obj/%.o: source/%.S | dirs
${OBJ_DIR}/%.o: source/%.S | dirs
@echo Compiling $<
$(CC) -c $(CFLAGS) $(C11FLAGS) $< -o $@
$(CC) -c $(CFLAGS) $< -o $@

dirs: ${OUT_DIR}

${OUT_DIR}:
mkdir -p ${OUT_DIR}

clean:
rm -rf *.elf *.bin obj/*
rm -rf *.elf *.bin ${OUT_DIR} ${OBJ_DIR}
Expand Up @@ -6,9 +6,15 @@
#define FB_BOTTOM 0x18346500

static inline void regSet();

void __attribute__ ((naked)) a11Entry()
{
__asm__ ("ldr r0,=_stack\n\t mov sp, r0");
__asm__ (
"CPSID aif\n\t" //Disable interrupts
"ldr r0,=_stack\n\t"
"mov sp, r0"
);

regSet();
}

Expand Down Expand Up @@ -100,11 +106,12 @@ static inline void regSet()
*(volatile uint32_t*)0x10400568 = FB_BOTTOM;
*(volatile uint32_t*)0x1040056c = FB_BOTTOM;

// Reset the entry
*entry = 0;

// Wait for entry to be set
while(!*entry);

// Jump
((void (*)())*entry)();
}
File renamed without changes.
4 changes: 4 additions & 0 deletions common/arm11.specs
@@ -0,0 +1,4 @@
%rename link old_link

*link:
%(old_link) -T ../common/arm11.ld%s
47 changes: 0 additions & 47 deletions common/sector_generator.py

This file was deleted.

Empty file removed data_input/.place_here
Empty file.
28 changes: 0 additions & 28 deletions payload_installer/Makefile

This file was deleted.

0 comments on commit 22f8be9

Please sign in to comment.