fusee_cpp: rename source dir to fusee
This commit is contained in:
154
fusee/loader_stub/Makefile
Normal file
154
fusee/loader_stub/Makefile
Normal file
@@ -0,0 +1,154 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
# Define the atmosphere board and cpu
|
||||
#---------------------------------------------------------------------------------
|
||||
export ATMOSPHERE_BOARD := nx-hac-001
|
||||
export ATMOSPHERE_CPU := arm7tdmi
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# pull in common atmosphere configuration
|
||||
#---------------------------------------------------------------------------------
|
||||
THIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
CURRENT_DIRECTORY := $(abspath $(dir $(THIS_MAKEFILE)))
|
||||
include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/../../libraries/config/templates/exosphere.mk
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# no real need to edit anything past this point unless you need to add additional
|
||||
# rules for different file extensions
|
||||
#---------------------------------------------------------------------------------
|
||||
ifneq ($(__RECURSIVE__),1)
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) $(CURDIR)/include \
|
||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
||||
|
||||
CFILES := $(call FIND_SOURCE_FILES,$(SOURCES),c)
|
||||
CPPFILES := $(call FIND_SOURCE_FILES,$(SOURCES),cpp)
|
||||
SFILES := $(call FIND_SOURCE_FILES,$(SOURCES),s)
|
||||
BINFILES :=
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# use CXX for linking C++ projects, CC for standard C
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(strip $(CPPFILES)),)
|
||||
#---------------------------------------------------------------------------------
|
||||
export LD := $(CC)
|
||||
#---------------------------------------------------------------------------------
|
||||
else
|
||||
#---------------------------------------------------------------------------------
|
||||
export LD := $(CXX)
|
||||
#---------------------------------------------------------------------------------
|
||||
endif
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
export OFILES_BIN := $(addsuffix .o,$(BINFILES))
|
||||
export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
||||
export OFILES := $(OFILES_BIN) $(OFILES_SRC) program.lz4.o
|
||||
export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(subst -,_,$(BINFILES))))
|
||||
|
||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||
-I.
|
||||
|
||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/$(ATMOSPHERE_LIBRARY_DIR))
|
||||
|
||||
export TOPDIR := $(CURRENT_DIRECTORY)
|
||||
|
||||
OUTPUT_BASE := $(TOPDIR)/$(notdir $(TOPDIR))
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
ATMOSPHERE_BUILD_CONFIGS :=
|
||||
all: release
|
||||
|
||||
define ATMOSPHERE_ADD_TARGET
|
||||
|
||||
ATMOSPHERE_BUILD_CONFIGS += $(strip $1)
|
||||
|
||||
$(strip $1): check_libexo_$(strip $1) $$(ATMOSPHERE_BUILD_DIR)/$(strip $1)
|
||||
@$$(MAKE) __RECURSIVE__=1 OUTPUT=$$(OUTPUT_BASE)$(strip $2) $(3) \
|
||||
ATMOSPHERE_BUILD_TARGET_IDENTIFIER=$(strip $1) \
|
||||
ATMOSPHERE_BUILD_TARGET_BINARY_SUFFIX=$(strip $2) \
|
||||
DEPSDIR=$$(CURDIR)/$$(ATMOSPHERE_BUILD_DIR)/$(strip $1) \
|
||||
LIBEXOSPHERE_NAME=exosphere$(strip $2) \
|
||||
--no-print-directory -C $$(ATMOSPHERE_BUILD_DIR)/$(strip $1) \
|
||||
-f $$(THIS_MAKEFILE)
|
||||
|
||||
check_libexo_$(strip $1):
|
||||
@$$(MAKE) --no-print-directory -C $$(ATMOSPHERE_LIBRARIES_DIR)/libexosphere $$(ATMOSPHERE_ARCH_NAME)-$(strip $1)
|
||||
|
||||
clean-$(strip $1):
|
||||
@echo clean $(strip $1) ...
|
||||
@rm -fr $$(ATMOSPHERE_BUILD_DIR)/$(strip $1) $$(OUTPUT_BASE)$(strip $2).bin $$(OUTPUT_BASE)$(strip $2).elf
|
||||
|
||||
endef
|
||||
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, release, , \
|
||||
ATMOSPHERE_BUILD_SETTINGS="-DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS" \
|
||||
))
|
||||
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, debug, _debug, \
|
||||
ATMOSPHERE_BUILD_SETTINGS="-DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS -DAMS_BUILD_FOR_DEBUGGING" \
|
||||
))
|
||||
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, audit, _audit, \
|
||||
ATMOSPHERE_BUILD_SETTINGS="-DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS -DAMS_BUILD_FOR_AUDITING" \
|
||||
))
|
||||
|
||||
$(ATMOSPHERE_BUILD_DIR)/%:
|
||||
@[ -d $@ ] || mkdir -p $@
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
clean: $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),clean-$(config))
|
||||
|
||||
.PHONY: all clean $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),$(config) clean-$(config))
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
else
|
||||
|
||||
DEPENDS := $(OFILES:.o=.d)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# main targets
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
$(OUTPUT).bin : $(OUTPUT).elf
|
||||
$(OBJCOPY) -S -O binary --set-section-flags .bss=alloc,load,contents $< $@
|
||||
@echo built ... $(notdir $@)
|
||||
|
||||
$(OUTPUT).elf : $(OFILES)
|
||||
|
||||
$(OFILES) : $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere/$(ATMOSPHERE_LIBRARY_DIR)/lib$(LIBEXOSPHERE_NAME).a
|
||||
|
||||
program.lz4.o: program_lz4.h
|
||||
|
||||
program_lz4.h: $(TOPDIR)/../program/program$(ATMOSPHERE_BUILD_TARGET_BINARY_SUFFIX).lz4
|
||||
@echo $(notdir $<)
|
||||
@rm -rf tmp_program_$(ATMOSPHERE_BUILD_TARGET_IDENTIFIER)
|
||||
@mkdir -p tmp_program_$(ATMOSPHERE_BUILD_TARGET_IDENTIFIER)
|
||||
@cp $(TOPDIR)/../program/program$(ATMOSPHERE_BUILD_TARGET_BINARY_SUFFIX).lz4 tmp_program_$(ATMOSPHERE_BUILD_TARGET_IDENTIFIER)/program.lz4
|
||||
@bin2s -a 8 -H program_lz4.h tmp_program_$(ATMOSPHERE_BUILD_TARGET_IDENTIFIER)/program.lz4 | $(AS) -o program.lz4.o
|
||||
@rm -rf tmp_program_$(ATMOSPHERE_BUILD_TARGET_IDENTIFIER)
|
||||
|
||||
$(TOPDIR)/../program/program$(ATMOSPHERE_BUILD_TARGET_BINARY_SUFFIX).lz4:
|
||||
@$(MAKE) __RECURSIVE__=0 --no-print-directory -C $(TOPDIR)/../program $(ATMOSPHERE_BUILD_TARGET_IDENTIFIER)
|
||||
|
||||
%.elf:
|
||||
@echo linking $(notdir $@)
|
||||
$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
||||
@$(NM) -CSn $@ > $(notdir $*.lst)
|
||||
|
||||
$(OFILES_SRC) : $(HFILES_BIN) program_lz4.h
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# you need a rule like this for each extension you use as binary data
|
||||
#---------------------------------------------------------------------------------
|
||||
%.bin.o %_bin.h: %.bin
|
||||
#---------------------------------------------------------------------------------
|
||||
@echo $(notdir $<)
|
||||
@$(bin2o)
|
||||
|
||||
-include $(DEPENDS)
|
||||
|
||||
#---------------------------------------------------------------------------------------
|
||||
endif
|
||||
#---------------------------------------------------------------------------------------
|
||||
125
fusee/loader_stub/loader_stub.ld
Normal file
125
fusee/loader_stub/loader_stub.ld
Normal file
@@ -0,0 +1,125 @@
|
||||
OUTPUT_ARCH(arm)
|
||||
ENTRY(_ZN3ams6nxboot6loader5StartEv)
|
||||
|
||||
MEMORY
|
||||
{
|
||||
NULL : ORIGIN = 0, LENGTH = 4K
|
||||
data : ORIGIN = 0x40010000, LENGTH = 0x28000
|
||||
loader_stub : ORIGIN = 0x4003D000, LENGTH = 4K
|
||||
}
|
||||
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
/* =========== CODE section =========== */
|
||||
|
||||
. = ORIGIN(data);
|
||||
__data_start__ = . ;
|
||||
|
||||
.crt0 :
|
||||
{
|
||||
KEEP(*(.crt0 .crt0.*))
|
||||
. = ALIGN(8);
|
||||
} >data
|
||||
|
||||
/* =========== RODATA section =========== */
|
||||
. = ALIGN(8);
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
||||
. = ALIGN(8);
|
||||
} >data
|
||||
|
||||
.eh_frame_hdr : { __eh_frame_hdr_start = .; *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) __eh_frame_hdr_end = .; } >data
|
||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } >data
|
||||
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } >data
|
||||
.gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } >data
|
||||
|
||||
.hash : { *(.hash) } >data
|
||||
|
||||
/* =========== DATA section =========== */
|
||||
. = ALIGN(8);
|
||||
|
||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } >data
|
||||
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } >data
|
||||
.gnu_extab : ONLY_IF_RW { *(.gnu_extab*) } >data
|
||||
.exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } >data
|
||||
|
||||
.data ALIGN(8) :
|
||||
{
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
SORT(CONSTRUCTORS)
|
||||
} >data
|
||||
|
||||
__bss_start__ = .;
|
||||
.bss (NOLOAD) :
|
||||
{
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
. = ALIGN(16);
|
||||
} >data :NONE
|
||||
__bss_end__ = .;
|
||||
|
||||
__data_end__ = ABSOLUTE(.);
|
||||
|
||||
|
||||
.loader_stub :
|
||||
{
|
||||
. = ALIGN(32);
|
||||
PROVIDE (__loader_stub_start__ = ABSOLUTE(.));
|
||||
PROVIDE (__loader_stub_lma__ = LOADADDR(.loader_stub));
|
||||
fusee_loader_main.o(.text*)
|
||||
fusee_loader_uncompress.o(.text*)
|
||||
fusee_loader_error.o(.text*)
|
||||
fusee_loader_main.o(.rodata*)
|
||||
fusee_loader_uncompress.o(.rodata*)
|
||||
fusee_loader_error.o(.rodata*)
|
||||
fusee_loader_main.o(.data*)
|
||||
fusee_loader_uncompress.o(.data*)
|
||||
fusee_loader_error.o(.data*)
|
||||
. = ALIGN(32);
|
||||
PROVIDE (__loader_stub_end__ = ABSOLUTE(.));
|
||||
} >loader_stub AT>data
|
||||
|
||||
/* ==================
|
||||
==== Metadata ====
|
||||
================== */
|
||||
|
||||
/* Discard sections that difficult post-processing */
|
||||
/DISCARD/ : { *(.group .comment .note .interp) }
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section so we begin them at 0. */
|
||||
|
||||
/* DWARF 1 */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
|
||||
/* GNU DWARF 1 extensions */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
|
||||
/* DWARF 1.1 and DWARF 2 */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
|
||||
/* DWARF 2 */
|
||||
.debug_info 0 : { *(.debug_info) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
}
|
||||
4
fusee/loader_stub/loader_stub.specs
Normal file
4
fusee/loader_stub/loader_stub.specs
Normal file
@@ -0,0 +1,4 @@
|
||||
%rename link old_link
|
||||
|
||||
*link:
|
||||
%(old_link) -T %:getenv(TOPDIR /loader_stub.ld) --gc-sections --nmagic
|
||||
47
fusee/loader_stub/source/fusee_loader_error.cpp
Normal file
47
fusee/loader_stub/source/fusee_loader_error.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 Atmosphère-NX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <exosphere.hpp>
|
||||
#include "fusee_loader_error.hpp"
|
||||
|
||||
namespace ams::diag {
|
||||
|
||||
NORETURN void AbortImpl(const char *file, int line, const char *func, const char *expr, u64 value, const char *format, ...) {
|
||||
AMS_UNUSED(file, line, func, expr, value, format);
|
||||
ams::nxboot::loader::ErrorStop();
|
||||
}
|
||||
|
||||
NORETURN void AbortImpl(const char *file, int line, const char *func, const char *expr, u64 value) {
|
||||
AMS_UNUSED(file, line, func, expr, value);
|
||||
ams::nxboot::loader::ErrorStop();
|
||||
}
|
||||
|
||||
NORETURN void AbortImpl() {
|
||||
ams::nxboot::loader::ErrorStop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace ams::nxboot::loader {
|
||||
|
||||
NORETURN void ErrorStop() {
|
||||
/* Halt ourselves. */
|
||||
while (true) {
|
||||
reg::Write(secmon::MemoryRegionPhysicalDeviceFlowController.GetAddress() + FLOW_CTLR_HALT_COP_EVENTS, FLOW_REG_BITS_ENUM(HALT_COP_EVENTS_MODE, FLOW_MODE_STOP),
|
||||
FLOW_REG_BITS_ENUM(HALT_COP_EVENTS_JTAG, ENABLED));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
23
fusee/loader_stub/source/fusee_loader_error.hpp
Normal file
23
fusee/loader_stub/source/fusee_loader_error.hpp
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 Atmosphère-NX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <exosphere.hpp>
|
||||
#pragma once
|
||||
|
||||
namespace ams::nxboot::loader {
|
||||
|
||||
NORETURN void ErrorStop();
|
||||
|
||||
}
|
||||
56
fusee/loader_stub/source/fusee_loader_main.cpp
Normal file
56
fusee/loader_stub/source/fusee_loader_main.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 Atmosphère-NX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <exosphere.hpp>
|
||||
#include "fusee_loader_uncompress.hpp"
|
||||
#include "program_lz4.h"
|
||||
|
||||
namespace ams::nxboot::loader {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr uintptr_t ProgramImageBase = 0x40001000;
|
||||
constexpr uintptr_t ProgramImageEnd = 0x4003D000;
|
||||
constexpr size_t ProgramImageSizeMax = ProgramImageEnd - ProgramImageBase;
|
||||
|
||||
void CopyBackwards(void *dst, const void *src, size_t size) {
|
||||
u8 *dst_8 = static_cast<u8 *>(dst) + size;
|
||||
const u8 *src_8 = static_cast<const u8 *>(src) + size;
|
||||
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
*(--dst_8) = *(--src_8);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
NORETURN void UncompressAndExecute(const void *program, size_t program_size) {
|
||||
/* Relocate the compressed binary to a place where we can safely decompress it. */
|
||||
void *relocated_program = reinterpret_cast<void *>(ProgramImageEnd - program_size);
|
||||
if (relocated_program != program) {
|
||||
CopyBackwards(relocated_program, program, program_size);
|
||||
}
|
||||
|
||||
/* Uncompress the program image. */
|
||||
Uncompress(reinterpret_cast<void *>(ProgramImageBase), ProgramImageSizeMax, relocated_program, program_size);
|
||||
|
||||
/* Jump to the boot image. */
|
||||
reinterpret_cast<void (*)()>(ProgramImageBase)();
|
||||
|
||||
/* We will never reach this point. */
|
||||
__builtin_unreachable();
|
||||
}
|
||||
|
||||
}
|
||||
85
fusee/loader_stub/source/fusee_loader_start.s
Normal file
85
fusee/loader_stub/source/fusee_loader_start.s
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 Atmosphère-NX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
.section .crt0._ZN3ams6nxboot6loader5StartEv, "ax", %progbits
|
||||
.arm
|
||||
.align 5
|
||||
.global _ZN3ams6nxboot6loader5StartEv
|
||||
.type _ZN3ams6nxboot6loader5StartEv, %function
|
||||
_ZN3ams6nxboot6loader5StartEv:
|
||||
/* Switch to system mode, mask all interrupts, clear all flags */
|
||||
msr cpsr_cxsf, #0xDF
|
||||
|
||||
/* Relocate main program. */
|
||||
ldr r0, =_ZN3ams6nxboot6loader5StartEv
|
||||
adr r1, _ZN3ams6nxboot6loader5StartEv
|
||||
cmp r0, r1
|
||||
beq 3f
|
||||
|
||||
/* Relocate first 0x100. */
|
||||
mov r4, #0x100
|
||||
0:
|
||||
ldmia r1!, {r5-r12}
|
||||
stmia r0!, {r5-r12}
|
||||
subs r4, #0x20
|
||||
bne 0b
|
||||
|
||||
/* Jump, continue relocating. */
|
||||
ldr r3, =1f
|
||||
bx r3
|
||||
|
||||
1:
|
||||
ldr r4, =__loader_stub_lma__
|
||||
ldr r3, =__loader_stub_end__
|
||||
add r4, r4, r3
|
||||
ldr r3, =__loader_stub_start__
|
||||
sub r4, r4, r3
|
||||
sub r4, r4, r0
|
||||
2:
|
||||
ldmia r1!, {r5-r12}
|
||||
stmia r0!, {r5-r12}
|
||||
subs r4, #0x20
|
||||
bne 2b
|
||||
|
||||
/* Relocate loader stub. */
|
||||
3:
|
||||
ldr r2, =__loader_stub_lma__
|
||||
|
||||
ldr r3, =__loader_stub_start__
|
||||
ldr r4, =__loader_stub_end__
|
||||
sub r4, r4, r3
|
||||
4:
|
||||
ldmia r2!, {r5-r12}
|
||||
stmia r3!, {r5-r12}
|
||||
subs r4, #0x20
|
||||
bne 4b
|
||||
|
||||
/* Set the stack pointer */
|
||||
ldr sp, =0x40001000
|
||||
mov fp, #0
|
||||
|
||||
/* Generate arguments. */
|
||||
ldr r3, =program_lz4
|
||||
ldr r4, =program_lz4_end
|
||||
sub r4, r4, r3
|
||||
mov r0, r3
|
||||
mov r1, r4
|
||||
|
||||
/* Jump to the loader stub. */
|
||||
ldr r3, =_ZN3ams6nxboot6loader20UncompressAndExecuteEPKvj
|
||||
bx r3
|
||||
105
fusee/loader_stub/source/fusee_loader_uncompress.cpp
Normal file
105
fusee/loader_stub/source/fusee_loader_uncompress.cpp
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 Atmosphère-NX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <exosphere.hpp>
|
||||
#include "fusee_loader_uncompress.hpp"
|
||||
|
||||
namespace ams::nxboot::loader {
|
||||
|
||||
namespace {
|
||||
|
||||
class Lz4Uncompressor {
|
||||
private:
|
||||
const u8 *src;
|
||||
size_t src_size;
|
||||
size_t src_offset;
|
||||
u8 *dst;
|
||||
size_t dst_size;
|
||||
size_t dst_offset;
|
||||
public:
|
||||
Lz4Uncompressor(void *dst, size_t dst_size, const void *src, size_t src_size) : src(static_cast<const u8 *>(src)), src_size(src_size), src_offset(0), dst(static_cast<u8 *>(dst)), dst_size(dst_size), dst_offset(0) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void Uncompress() {
|
||||
while (true) {
|
||||
/* Read a control byte. */
|
||||
const u8 control = this->ReadByte();
|
||||
|
||||
/* Copy what it specifies we should copy. */
|
||||
this->Copy(this->GetCopySize(control >> 4));
|
||||
|
||||
/* If we've exceeded size, we're done. */
|
||||
if (this->src_offset >= this->src_size) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* Read the wide copy offset. */
|
||||
u16 wide_offset = this->ReadByte();
|
||||
AMS_ABORT_UNLESS(this->CanRead());
|
||||
wide_offset |= (this->ReadByte() << 8);
|
||||
|
||||
/* Determine the copy size. */
|
||||
const size_t wide_copy_size = this->GetCopySize(control & 0xF);
|
||||
|
||||
/* Copy bytes. */
|
||||
const size_t end_offset = this->dst_offset + wide_copy_size + 4;
|
||||
for (size_t cur_offset = this->dst_offset; cur_offset < end_offset; this->dst_offset = (++cur_offset)) {
|
||||
AMS_ABORT_UNLESS(wide_offset <= cur_offset);
|
||||
|
||||
this->dst[cur_offset] = this->dst[cur_offset - wide_offset];
|
||||
}
|
||||
}
|
||||
}
|
||||
private:
|
||||
u8 ReadByte() {
|
||||
return this->src[this->src_offset++];
|
||||
}
|
||||
|
||||
bool CanRead() const {
|
||||
return this->src_offset < this->src_size;
|
||||
}
|
||||
|
||||
size_t GetCopySize(u8 control) {
|
||||
size_t size = control;
|
||||
|
||||
if (control >= 0xF) {
|
||||
do {
|
||||
AMS_ABORT_UNLESS(this->CanRead());
|
||||
control = this->ReadByte();
|
||||
size += control;
|
||||
} while (control == 0xFF);
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
void Copy(size_t size) {
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
this->dst[this->dst_offset + i] = this->src[this->src_offset + i];
|
||||
}
|
||||
this->dst_offset += size;
|
||||
this->src_offset += size;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
void Uncompress(void *dst, size_t dst_size, const void *src, size_t src_size) {
|
||||
/* Create an execute a decompressor. */
|
||||
Lz4Uncompressor(dst, dst_size, src, src_size).Uncompress();
|
||||
}
|
||||
|
||||
}
|
||||
23
fusee/loader_stub/source/fusee_loader_uncompress.hpp
Normal file
23
fusee/loader_stub/source/fusee_loader_uncompress.hpp
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2020 Atmosphère-NX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <vapours.hpp>
|
||||
#pragma once
|
||||
|
||||
namespace ams::nxboot::loader {
|
||||
|
||||
void Uncompress(void *dst, size_t dst_size, const void *src, size_t src_size);
|
||||
|
||||
}
|
||||
144
fusee/program/Makefile
Normal file
144
fusee/program/Makefile
Normal file
@@ -0,0 +1,144 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
# Define the atmosphere board and cpu
|
||||
#---------------------------------------------------------------------------------
|
||||
export ATMOSPHERE_BOARD := nx-hac-001
|
||||
export ATMOSPHERE_CPU := arm7tdmi
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# pull in common atmosphere configuration
|
||||
#---------------------------------------------------------------------------------
|
||||
THIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
CURRENT_DIRECTORY := $(abspath $(dir $(THIS_MAKEFILE)))
|
||||
include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/../../libraries/config/templates/exosphere.mk
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# no real need to edit anything past this point unless you need to add additional
|
||||
# rules for different file extensions
|
||||
#---------------------------------------------------------------------------------
|
||||
ifneq ($(__RECURSIVE__),1)
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) $(CURDIR)/include \
|
||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
||||
|
||||
CFILES := $(call FIND_SOURCE_FILES,$(SOURCES),c)
|
||||
CPPFILES := $(call FIND_SOURCE_FILES,$(SOURCES),cpp)
|
||||
SFILES := $(call FIND_SOURCE_FILES,$(SOURCES),s)
|
||||
BINFILES :=
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# use CXX for linking C++ projects, CC for standard C
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(strip $(CPPFILES)),)
|
||||
#---------------------------------------------------------------------------------
|
||||
export LD := $(CC)
|
||||
#---------------------------------------------------------------------------------
|
||||
else
|
||||
#---------------------------------------------------------------------------------
|
||||
export LD := $(CXX)
|
||||
#---------------------------------------------------------------------------------
|
||||
endif
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
export OFILES_BIN := $(addsuffix .o,$(BINFILES))
|
||||
export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
||||
export OFILES := $(OFILES_BIN) $(OFILES_SRC)
|
||||
export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(subst -,_,$(BINFILES))))
|
||||
|
||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||
-I.
|
||||
|
||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/$(ATMOSPHERE_LIBRARY_DIR))
|
||||
|
||||
export TOPDIR := $(CURRENT_DIRECTORY)
|
||||
|
||||
OUTPUT_BASE := $(TOPDIR)/$(notdir $(TOPDIR))
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
ATMOSPHERE_BUILD_CONFIGS :=
|
||||
all: release
|
||||
|
||||
define ATMOSPHERE_ADD_TARGET
|
||||
|
||||
ATMOSPHERE_BUILD_CONFIGS += $(strip $1)
|
||||
|
||||
$(strip $1): check_libexo_$(strip $1) $$(ATMOSPHERE_BUILD_DIR)/$(strip $1)
|
||||
@$$(MAKE) __RECURSIVE__=1 OUTPUT=$$(OUTPUT_BASE)$(strip $2) $(3) \
|
||||
ATMOSPHERE_BUILD_TARGET=$(strip $2) \
|
||||
DEPSDIR=$$(CURDIR)/$$(ATMOSPHERE_BUILD_DIR)/$(strip $1) \
|
||||
LIBEXOSPHERE_NAME=exosphere$(strip $2) \
|
||||
--no-print-directory -C $$(ATMOSPHERE_BUILD_DIR)/$(strip $1) \
|
||||
-f $$(THIS_MAKEFILE)
|
||||
|
||||
check_libexo_$(strip $1):
|
||||
@$$(MAKE) --no-print-directory -C $$(ATMOSPHERE_LIBRARIES_DIR)/libexosphere $$(ATMOSPHERE_ARCH_NAME)-$(strip $1)
|
||||
|
||||
clean-$(strip $1):
|
||||
@echo clean $(strip $1) ...
|
||||
@rm -fr $$(ATMOSPHERE_BUILD_DIR)/$(strip $1) $$(OUTPUT_BASE)$(strip $2).bin $$(OUTPUT_BASE)$(strip $2).lz4 $$(OUTPUT_BASE)$(strip $2).elf
|
||||
|
||||
endef
|
||||
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, release, , \
|
||||
ATMOSPHERE_BUILD_SETTINGS="-DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS" \
|
||||
))
|
||||
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, debug, _debug, \
|
||||
ATMOSPHERE_BUILD_SETTINGS="-DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS -DAMS_BUILD_FOR_DEBUGGING" \
|
||||
))
|
||||
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, audit, _audit, \
|
||||
ATMOSPHERE_BUILD_SETTINGS="-DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS -DAMS_BUILD_FOR_AUDITING" \
|
||||
))
|
||||
|
||||
$(ATMOSPHERE_BUILD_DIR)/%:
|
||||
@[ -d $@ ] || mkdir -p $@
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
clean: $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),clean-$(config))
|
||||
|
||||
.PHONY: all clean $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),$(config) clean-$(config))
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
else
|
||||
|
||||
DEPENDS := $(OFILES:.o=.d)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# main targets
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
$(OUTPUT).lz4 : $(OUTPUT).bin
|
||||
@python $(TOPDIR)/split_bin.py "$(ATMOSPHERE_BUILD_TARGET)"
|
||||
@echo built ... $(notdir $@)
|
||||
|
||||
$(OUTPUT).bin : $(OUTPUT).elf
|
||||
$(OBJCOPY) -S -O binary --set-section-flags .bss=alloc,load,contents $< $@
|
||||
@echo built ... $(notdir $@)
|
||||
|
||||
$(OUTPUT).elf : $(OFILES)
|
||||
|
||||
$(OFILES) : $(ATMOSPHERE_LIBRARIES_DIR)/libexosphere/$(ATMOSPHERE_LIBRARY_DIR)/lib$(LIBEXOSPHERE_NAME).a
|
||||
|
||||
%.elf:
|
||||
@echo linking $(notdir $@)
|
||||
$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
||||
@$(NM) -CSn $@ > $(notdir $*.lst)
|
||||
|
||||
$(OFILES_SRC) : $(HFILES_BIN)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# you need a rule like this for each extension you use as binary data
|
||||
#---------------------------------------------------------------------------------
|
||||
%.bin.o %_bin.h: %.bin
|
||||
#---------------------------------------------------------------------------------
|
||||
@echo $(notdir $<)
|
||||
@$(bin2o)
|
||||
|
||||
-include $(DEPENDS)
|
||||
|
||||
#---------------------------------------------------------------------------------------
|
||||
endif
|
||||
#---------------------------------------------------------------------------------------
|
||||
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/2.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/3.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/3.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/4.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/4.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/5.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/5.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/6.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/6.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/7.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/7.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/8.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/8.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/9.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableH4gb01/9.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/2.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/3.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/3.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/4.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/4.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/5.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/5.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/6.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/6.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/7.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/7.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/8.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/8.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/9.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS4gb01/9.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/2.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/3.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/3.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/4.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/4.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/5.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/5.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/6.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/6.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/7.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/7.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/8.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/8.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/9.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210SdevEmcDvfsTableS6gb01/9.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableH4gb03/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableH4gb03/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableH4gb03/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableH4gb03/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableH4gb03/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableH4gb03/2.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableM4gb03/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableM4gb03/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableM4gb03/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableM4gb03/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableM4gb03/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableM4gb03/2.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb01/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb01/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb01/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb01/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb01/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb01/2.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb03/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb03/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb03/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb03/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb03/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS4gb03/2.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS8gb03/0.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS8gb03/0.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS8gb03/1.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS8gb03/1.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS8gb03/2.bin
Normal file
BIN
fusee/program/mtc_tables/bin/T210b01SdevEmcDvfsTableS8gb03/2.bin
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/0.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/0.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/1.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/1.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/2.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/2.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/3.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/3.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/4.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/4.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/5.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/5.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/6.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/6.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/7.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/7.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/8.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/8.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/9.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableH4gb01/9.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/0.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/0.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/1.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/1.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/2.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/2.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/3.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/3.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/4.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/4.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/5.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/5.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/6.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/6.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/7.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/7.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/8.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/8.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/9.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS4gb01/9.lz4
Normal file
Binary file not shown.
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS6gb01/0.lz4
Normal file
BIN
fusee/program/mtc_tables/lz/T210SdevEmcDvfsTableS6gb01/0.lz4
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user