mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NandInitializer/NandInitializerAuto/NandFormatter のARM7側コードはこれまで mongoose.TWL を元にしていましたが
機密性向上のため armadillo ベースに作り直しました。(ARM7側のコードが全てARM7専用WRAMで動作) git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@981 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
1b866df715
commit
73dd85efc7
@ -1,9 +1,9 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - tests - camera-test
|
||||
# Project: TwlSDK - components - armadillo.TWL
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
# Copyright 2008 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
@ -16,75 +16,65 @@
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
#============================================================================
|
||||
# NandInitializerから一部の機能を削除するために定義を追加します。
|
||||
MACRO_FLAGS += -DNAND_FORMATTER_MODE
|
||||
#============================================================================
|
||||
|
||||
override TARGET_PLATFORM = TWL
|
||||
override TWL_PROC = ARM7
|
||||
TWL_ARCHGEN = LIMITED
|
||||
TWL_NO_STD_PCHDR = True
|
||||
#TWL_CODEGEN = THUMB
|
||||
override TARGET_PLATFORM = TWL
|
||||
override TWL_PROC = ARM7
|
||||
override TWL_ARCHGEN = LIMITED
|
||||
##override TWL_PLATFORM = TS
|
||||
TWL_NO_STD_PCHDR = True
|
||||
##TWL_CODEGEN ?= ALL
|
||||
|
||||
TARGET_TEF = main.tef
|
||||
LCFILE_SPEC = ../../NandInitializer/ARM7.TWL/racoon.lsf
|
||||
LCFILE_TEMPLATE = ../../NandInitializer/ARM7.TWL/racoon.lcf.template
|
||||
LDRES_TEMPLATE = ../../NandInitializer/ARM7.TWL/racoon.response.template
|
||||
ifndef TWLSDK_NOCRYPTO
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SRCS = main.c \
|
||||
kami_pxi.c \
|
||||
formatter.c \
|
||||
nvram_misc.c \
|
||||
initScfg.c \
|
||||
nvram_misc.c
|
||||
|
||||
TARGET_NAME = armadillo
|
||||
|
||||
TARGET_NEF = $(TARGET_NAME).tef
|
||||
LCFILE_SPEC = ../../NandInitializer/ARM7.TWL/$(TARGET_NAME).lsf
|
||||
LCFILE_TEMPLATE = ../../NandInitializer/ARM7.TWL/$(TARGET_NAME).lcf.template
|
||||
LDRES_TEMPLATE = ../../NandInitializer/ARM7.TWL/$(TARGET_NAME).response.template
|
||||
|
||||
CRT0_O = crt0.SCR.TWL.o
|
||||
|
||||
# スタック不足防止の為、インライン展開せずにコンパイルする
|
||||
CCFLAGS_OPT = -O4 -inline off
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA
|
||||
|
||||
MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \
|
||||
-DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a'
|
||||
|
||||
LINCLUDES = ../../NandInitializer/common/include \
|
||||
../../NandInitializer/ARM7.TWL/include \
|
||||
../common/include $(ROOT)/build/libraries/spi/ARM7/include
|
||||
|
||||
|
||||
SRCDIR = ../../NandInitializer/ARM7.TWL/src
|
||||
#LCFILE = # using default
|
||||
|
||||
LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \
|
||||
libsdio_sp$(TWL_LIBSUFFIX).a \
|
||||
libathdrv_sp$(TWL_LIBSUFFIX).a \
|
||||
libwpa_sp$(TWL_LIBSUFFIX).a \
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES)
|
||||
|
||||
ifdef TWLSDK_NOCRYPTO
|
||||
CCFLAGS += -DSDK_NOCRYPTO
|
||||
endif
|
||||
|
||||
ifndef TWLSDK_NOCRYPTO
|
||||
MAKELCF_FLAGS += -DUSE_CRYPTO_LIBS='libsea_sp$(TWL_LIBSUFFIX).a libcrypto_sp$(TWL_LIBSUFFIX).a'
|
||||
MACRO_FLAGS += -DSDK_SEA
|
||||
endif
|
||||
|
||||
ifeq ($(TWL_PLATFORM),BB)
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000'
|
||||
else
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000'
|
||||
endif
|
||||
|
||||
MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \
|
||||
-DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a'
|
||||
|
||||
TWL_LIBS_EX = libcamera_sp$(TWL_LIBSUFFIX).a \
|
||||
libfatfs_sp$(TWL_LIBSUFFIX).a \
|
||||
libi2c_sp$(TWL_LIBSUFFIX).a \
|
||||
libcamera_sp$(TWL_LIBSUFFIX).a \
|
||||
libcdc_sp$(TWL_LIBSUFFIX).a \
|
||||
libtpex_sp$(TWL_LIBSUFFIX).a
|
||||
do-build: $(TARGETS)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
endif #ifndef TWLSDK_NOCRYPTO
|
||||
|
||||
#===== End of Makefile =====
|
||||
|
||||
@ -43,7 +43,7 @@ TARGET_BIN = NandFormatter.srl
|
||||
LCFILE_SPEC = ../../NandInitializer/ARM9.TWL/ARM9-TS.lsf
|
||||
ROM_SPEC = ../../NandInitializer/ARM9.TWL/main.rsf
|
||||
|
||||
MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/main
|
||||
MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/armadillo
|
||||
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
|
||||
|
||||
SRCS = main.c \
|
||||
@ -62,15 +62,13 @@ SRCS = main.c \
|
||||
|
||||
LINCLUDES = ../../NandInitializer/common/include \
|
||||
../../NandInitializer/ARM9.TWL/include \
|
||||
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include \
|
||||
../../misc/include
|
||||
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include
|
||||
|
||||
SRCDIR = ../../NandInitializer/ARM9.TWL/src \
|
||||
../../HWInfoWriter/ARM9/src
|
||||
|
||||
#LCFILE = # using default
|
||||
|
||||
|
||||
ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),)
|
||||
ifdef USE_PRODUCT_KEY
|
||||
MACRO_FLAGS += -DUSE_PRODUCT_KEY
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - tests - camera-test
|
||||
# Project: TwlSDK - components - armadillo.TWL
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
# Copyright 2008 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
@ -16,69 +16,56 @@
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
override TARGET_PLATFORM = TWL
|
||||
override TWL_PROC = ARM7
|
||||
override TWL_ARCHGEN = LIMITED
|
||||
##override TWL_PLATFORM = TS
|
||||
TWL_NO_STD_PCHDR = True
|
||||
##TWL_CODEGEN ?= ALL
|
||||
|
||||
ifndef TWLSDK_NOCRYPTO
|
||||
#----------------------------------------------------------------------------
|
||||
override TARGET_PLATFORM = TWL
|
||||
override TWL_PROC = ARM7
|
||||
TWL_ARCHGEN = LIMITED
|
||||
TWL_NO_STD_PCHDR = True
|
||||
#TWL_CODEGEN = THUMB
|
||||
|
||||
TARGET_TEF = main.tef
|
||||
LCFILE_SPEC = racoon.lsf
|
||||
LCFILE_TEMPLATE = racoon.lcf.template
|
||||
LDRES_TEMPLATE = racoon.response.template
|
||||
|
||||
CRT0_O = crt0.LTD.TWL.o
|
||||
|
||||
SRCS = main.c \
|
||||
kami_pxi.c \
|
||||
formatter.c \
|
||||
nvram_misc.c \
|
||||
initScfg.c \
|
||||
nvram_misc.c
|
||||
|
||||
LINCLUDES = ../common/include $(ROOT)/build/libraries/spi/ARM7/include
|
||||
TARGET_NAME = armadillo
|
||||
|
||||
TARGET_NEF = $(TARGET_NAME).tef
|
||||
LCFILE_SPEC = $(TARGET_NAME).lsf
|
||||
LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template
|
||||
LDRES_TEMPLATE = $(TARGET_NAME).response.template
|
||||
|
||||
#SRCDIR = # using default
|
||||
#LCFILE = # using default
|
||||
CRT0_O = crt0.SCR.TWL.o
|
||||
|
||||
# スタック不足防止の為、インライン展開せずにコンパイルする
|
||||
CCFLAGS_OPT = -O4 -inline off
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
ifdef TWLSDK_NOCRYPTO
|
||||
CCFLAGS += -DSDK_NOCRYPTO
|
||||
endif
|
||||
|
||||
ifndef TWLSDK_NOCRYPTO
|
||||
MAKELCF_FLAGS += -DUSE_CRYPTO_LIBS='libsea_sp$(TWL_LIBSUFFIX).a libcrypto_sp$(TWL_LIBSUFFIX).a'
|
||||
MACRO_FLAGS += -DSDK_SEA
|
||||
endif
|
||||
|
||||
ifeq ($(TWL_PLATFORM),BB)
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000'
|
||||
else
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000'
|
||||
endif
|
||||
MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA
|
||||
|
||||
MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \
|
||||
-DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a'
|
||||
|
||||
TWL_LIBS_EX = libcamera_sp$(TWL_LIBSUFFIX).a \
|
||||
libfatfs_sp$(TWL_LIBSUFFIX).a \
|
||||
libi2c_sp$(TWL_LIBSUFFIX).a \
|
||||
libcamera_sp$(TWL_LIBSUFFIX).a \
|
||||
libcdc_sp$(TWL_LIBSUFFIX).a \
|
||||
libtpex_sp$(TWL_LIBSUFFIX).a
|
||||
LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include ../common/include
|
||||
|
||||
LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \
|
||||
libsdio_sp$(TWL_LIBSUFFIX).a \
|
||||
libathdrv_sp$(TWL_LIBSUFFIX).a \
|
||||
libwpa_sp$(TWL_LIBSUFFIX).a \
|
||||
|
||||
LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES)
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
endif #ifndef TWLSDK_NOCRYPTO
|
||||
|
||||
#===== End of Makefile =====
|
||||
|
||||
@ -0,0 +1,388 @@
|
||||
#---------------------------------------------------------------------------
|
||||
# Project: TwlSDK - components - armadillo.TWL
|
||||
# File: armadillo.lcf.template
|
||||
#
|
||||
# Copyright 2008 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Date:: $
|
||||
# $Rev$
|
||||
# $Author$
|
||||
#---------------------------------------------------------------------------
|
||||
MEMORY
|
||||
{
|
||||
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||
binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||
|
||||
<PROPERTY.OVERLAYDEFS>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.FLXSUFFIX>
|
||||
|
||||
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
<LTDAUTOLOAD.NAME> (RWX) : ORIGIN = <LTDAUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||
<END.LTDAUTOLOADS>
|
||||
binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||
|
||||
<PROPERTY.LTDOVERLAYDEFS>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYDEFS><PROPERTY.LTDSUFFIX>
|
||||
|
||||
check.WORKRAM (RWX) : ORIGIN = 0x03740000, LENGTH = 0xd0000 > workram.check
|
||||
}
|
||||
|
||||
KEEP_SECTION
|
||||
{
|
||||
.sinit
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
############################ STATIC #################################
|
||||
.<STATIC.NAME>:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||
<END.STATIC.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# TEXT BLOCK: READ ONLY
|
||||
#
|
||||
SDK_STATIC_START =.;
|
||||
OBJECT(_start,*)
|
||||
<FOREACH.STATIC.OBJECTS=.text>
|
||||
<STATIC.OBJECT=.text:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.text>
|
||||
<STATIC.LIBRARY=.text:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.rodata>
|
||||
<STATIC.OBJECT=.rodata:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.rodata>
|
||||
<STATIC.LIBRARY=.rodata:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.init>
|
||||
<STATIC.OBJECT=.init:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.init>
|
||||
<STATIC.LIBRARY=.init:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_SINIT_START =.;
|
||||
<FOREACH.STATIC.OBJECTS=.ctor>
|
||||
<STATIC.OBJECT=.ctor:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.ctor>
|
||||
<STATIC.LIBRARY=.ctor:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.sinit>
|
||||
<STATIC.OBJECT=.sinit:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.sinit>
|
||||
<STATIC.LIBRARY=.sinit:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
WRITEW 0;
|
||||
|
||||
#
|
||||
# DATA BLOCK: READ WRITE
|
||||
#
|
||||
. = ALIGN(4);
|
||||
<FOREACH.STATIC.OBJECTS=.sdata>
|
||||
<STATIC.OBJECT=.sdata:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.sdata>
|
||||
<STATIC.LIBRARY=.sdata:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.data>
|
||||
<STATIC.OBJECT=.data:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.data>
|
||||
<STATIC.LIBRARY=.data:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_END =.;
|
||||
|
||||
SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START;
|
||||
__sinit__ = SDK_STATIC_SINIT_START; # for static initializer
|
||||
|
||||
} > <STATIC.NAME>
|
||||
|
||||
.<STATIC.NAME>.bss:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||
<END.STATIC.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# BSS BLOCK
|
||||
#
|
||||
SDK_STATIC_BSS_START =.;
|
||||
<FOREACH.STATIC.OBJECTS=.sbss>
|
||||
<STATIC.OBJECT=.sbss:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.sbss>
|
||||
<STATIC.LIBRARY=.sbss:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.bss>
|
||||
<STATIC.OBJECT=.bss:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.bss>
|
||||
<STATIC.LIBRARY=.bss:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_BSS_END = .;
|
||||
|
||||
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
|
||||
|
||||
} >> <STATIC.NAME>
|
||||
|
||||
############################ STATIC_FOOTER ##########################
|
||||
.binary.STATIC_FOOTER:
|
||||
{
|
||||
WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE
|
||||
WRITEW _start_ModuleParams - ADDR(.<STATIC.NAME>);
|
||||
WRITEW 0; # NO DIGEST
|
||||
WRITEW _start_LtdModuleParams - ADDR(.<STATIC.NAME>);
|
||||
|
||||
} > binary.STATIC_FOOTER
|
||||
|
||||
############################ OVERLAYDEFS ############################
|
||||
.<PROPERTY.OVERLAYDEFS>F:
|
||||
{
|
||||
### <STATIC.NAME> module information
|
||||
WRITEW ADDR(.<STATIC.NAME>); # load address
|
||||
WRITEW _start; # entry address
|
||||
WRITEW SDK_STATIC_SIZE; # size of module
|
||||
WRITEW _start_AutoloadDoneCallback; # callback autoload done
|
||||
|
||||
} > <PROPERTY.OVERLAYDEFS>F
|
||||
|
||||
########################### LTDAUTOLOADS ############################
|
||||
SDK_LTDAUTOLOAD_TOP_START = 0x02f00000;
|
||||
SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る #
|
||||
SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE;
|
||||
SDK_LTDAUTOLOAD_SIZE = 0;
|
||||
SDK_LTDAUTOLOAD_BSS_END = 0x03740000;
|
||||
|
||||
.binary.LTDAUTOLOAD_TOP:
|
||||
{
|
||||
WRITEW 0;
|
||||
|
||||
} > binary.LTDAUTOLOAD_TOP
|
||||
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
.<LTDAUTOLOAD.NAME>:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
|
||||
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# TEXT BLOCK: READ ONLY
|
||||
#
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START =.;
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.text>
|
||||
<LTDAUTOLOAD.OBJECT=.text:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.text>
|
||||
<LTDAUTOLOAD.LIBRARY=.text:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.etable>
|
||||
<LTDAUTOLOAD.OBJECT=.exception:t>
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_ETABLE_START =.;
|
||||
__exception_table_start__ =.;
|
||||
EXCEPTION
|
||||
__exception_table_end__ =.;
|
||||
SDK_STATIC_ETABLE_END =.;
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.rodata>
|
||||
<LTDAUTOLOAD.OBJECT=.rodata:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.rodata>
|
||||
<LTDAUTOLOAD.LIBRARY=.rodata:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.init>
|
||||
<LTDAUTOLOAD.OBJECT=.init:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.init>
|
||||
<LTDAUTOLOAD.LIBRARY=.init:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START =.;
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ctor>
|
||||
<LTDAUTOLOAD.OBJECT=.ctor:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ctor>
|
||||
<LTDAUTOLOAD.LIBRARY=.ctor:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.sinit>
|
||||
<LTDAUTOLOAD.OBJECT=.sinit:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sinit>
|
||||
<LTDAUTOLOAD.LIBRARY=.sinit:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
WRITEW 0;
|
||||
|
||||
#
|
||||
# DATA BLOCK: READ WRITE BLOCK
|
||||
#
|
||||
. = ALIGN(4);
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.sdata>
|
||||
<LTDAUTOLOAD.OBJECT=.sdata:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sdata>
|
||||
<LTDAUTOLOAD.LIBRARY=.sdata:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.data>
|
||||
<LTDAUTOLOAD.OBJECT=.data:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.data>
|
||||
<LTDAUTOLOAD.LIBRARY=.data:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.wram>
|
||||
<LTDAUTOLOAD.OBJECT=.wram:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.wram>
|
||||
<LTDAUTOLOAD.LIBRARY=.wram:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdwram>
|
||||
<LTDAUTOLOAD.OBJECT=.ltdwram:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdwram>
|
||||
<LTDAUTOLOAD.LIBRARY=.ltdwram:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
|
||||
<LTDAUTOLOAD.OBJECT=.ltdmain:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
|
||||
<LTDAUTOLOAD.LIBRARY=.ltdmain:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END =.;
|
||||
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START;
|
||||
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
|
||||
|
||||
} > <LTDAUTOLOAD.NAME>
|
||||
|
||||
.<LTDAUTOLOAD.NAME>.bss:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
|
||||
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# BSS BLOCK
|
||||
#
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START =.;
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.sbss>
|
||||
<LTDAUTOLOAD.OBJECT=.sbss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sbss>
|
||||
<LTDAUTOLOAD.LIBRARY=.sbss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.bss>
|
||||
<LTDAUTOLOAD.OBJECT=.bss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.bss>
|
||||
<LTDAUTOLOAD.LIBRARY=.bss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.wram>
|
||||
<LTDAUTOLOAD.OBJECT=.wram.bss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.wram>
|
||||
<LTDAUTOLOAD.LIBRARY=.wram.bss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdwram>
|
||||
<LTDAUTOLOAD.OBJECT=.ltdwram.bss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdwram>
|
||||
<LTDAUTOLOAD.LIBRARY=.ltdwram.bss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
|
||||
<LTDAUTOLOAD.OBJECT=.ltdmain.bss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
|
||||
<LTDAUTOLOAD.LIBRARY=.ltdmain.bss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END =.;
|
||||
SDK_LTDAUTOLOAD_BSS_END =.;
|
||||
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START;
|
||||
|
||||
} >> <LTDAUTOLOAD.NAME>
|
||||
<END.LTDAUTOLOADS>
|
||||
|
||||
SDK_MOUNT_INFO_TABLE = SDK_LTDAUTOLOAD_BSS_END;
|
||||
SDK_LTDAUTOLOAD_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400;
|
||||
|
||||
######################### LTDAUTOLOAD_INFO ##########################
|
||||
.binary.LTDAUTOLOAD_INFO:
|
||||
{
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
WRITEW ADDR(.<LTDAUTOLOAD.NAME>);
|
||||
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
|
||||
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START;
|
||||
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE;
|
||||
<END.LTDAUTOLOADS>
|
||||
|
||||
} > binary.LTDAUTOLOAD_INFO
|
||||
|
||||
SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE;
|
||||
SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO);
|
||||
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO);
|
||||
|
||||
########################## LTDOVERLAYDEFS ###########################
|
||||
.<PROPERTY.LTDOVERLAYDEFS>L:
|
||||
{
|
||||
### TWL limited extended static module information
|
||||
WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address
|
||||
WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table
|
||||
WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module
|
||||
WRITEW 0; # padding
|
||||
|
||||
} > <PROPERTY.LTDOVERLAYDEFS>L
|
||||
|
||||
############################ OTHERS #################################
|
||||
SDK_SUBPRIV_ARENA_LO = 0x02ffc000; # メインメモリアリーナはサイズ 0
|
||||
SDK_SEA_KEY_STORE = SDK_LTDAUTOLOAD_BSS_END;
|
||||
SDK_WRAM_ARENA_LO = SDK_LTDAUTOLOAD_BSS_END + 0x40;
|
||||
|
||||
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
|
||||
|
||||
.check.WORKRAM:
|
||||
{
|
||||
. = SDK_WRAM_ARENA_LO + 0x80 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||
|
||||
} > check.WORKRAM
|
||||
}
|
||||
87
build/systemMenu_RED/NandInitializer/ARM7.TWL/armadillo.lsf
Normal file
87
build/systemMenu_RED/NandInitializer/ARM7.TWL/armadillo.lsf
Normal file
@ -0,0 +1,87 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - components - armadillo.TWL
|
||||
# File: armadillo.lsf
|
||||
#
|
||||
# Copyright 2008 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded insructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Date:: $
|
||||
# $Rev$
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# Nitro LCF SPEC FILE
|
||||
#
|
||||
#--------
|
||||
Static $(TARGET_NAME)
|
||||
{
|
||||
Address 0x02380000
|
||||
StackSize 1024 1024
|
||||
|
||||
Library $(CRT0_O)
|
||||
}
|
||||
|
||||
#--------
|
||||
Ltdautoload SCRWRAM
|
||||
{
|
||||
Address 0x03740000
|
||||
|
||||
Library libsubpsyscall.a
|
||||
Library libsyscall_sp.twl.a
|
||||
Library $(CW_LIBS)
|
||||
Library $(ISDBG_LIBS_TWL)
|
||||
Library $(ISDBG_LIBS_NITRO)
|
||||
|
||||
Object * (.etable)
|
||||
Object $(OBJDIR)/main.o
|
||||
Object $(OBJDIR)/kami_pxi.o
|
||||
Object $(OBJDIR)/formatter.o
|
||||
Object $(OBJDIR)/nvram_misc.o
|
||||
|
||||
Library libsea_sp$(LIBSUFFIX).a
|
||||
Library libcrypto_sp$(LIBSUFFIX).a
|
||||
|
||||
Library libos_sp$(LIBSUFFIX).a
|
||||
Library libmi_sp$(LIBSUFFIX).a
|
||||
Library libstd_sp$(LIBSUFFIX).a
|
||||
Library libmath_sp$(LIBSUFFIX).a
|
||||
Library libpxi_sp$(LIBSUFFIX).a
|
||||
Library libexi_sp$(LIBSUFFIX).a
|
||||
Library libi2c_sp$(LIBSUFFIX).a
|
||||
Library libsdio_sp$(LIBSUFFIX).a
|
||||
Library libpad_sp$(LIBSUFFIX).a
|
||||
Library libscfg_sp$(LIBSUFFIX).a
|
||||
Library libmcu_sp$(LIBSUFFIX).a
|
||||
Library libcdc_sp$(LIBSUFFIX).a
|
||||
Library libsnd_sp$(LIBSUFFIX).a
|
||||
Library libsndex_sp$(LIBSUFFIX).a
|
||||
Library libspi_sp$(LIBSUFFIX).a
|
||||
Library libpm_sp$(LIBSUFFIX).a
|
||||
Library libtp_sp$(LIBSUFFIX).a
|
||||
Library libtpex_sp$(LIBSUFFIX).a
|
||||
Library libmic_sp$(LIBSUFFIX).a
|
||||
Library libmicex_sp$(LIBSUFFIX).a
|
||||
Library libnvram_sp$(LIBSUFFIX).a
|
||||
Library librtc_sp$(LIBSUFFIX).a
|
||||
Library libfatfs_sp$(LIBSUFFIX).a
|
||||
# Library libwm_sp$(LIBSUFFIX).a
|
||||
# Library libnwm_sp$(LIBSUFFIX).a
|
||||
Library libwvr_sp$(LIBSUFFIX).a
|
||||
Library libwl_sp$(LIBSUFFIX).a
|
||||
Library libwpa_sp$(LIBSUFFIX).a
|
||||
Library libathdrv_sp$(LIBSUFFIX).a
|
||||
Library libfs_sp$(LIBSUFFIX).a
|
||||
Library libcard_sp$(LIBSUFFIX).a
|
||||
# Library libcamera_sp$(LIBSUFFIX).a
|
||||
|
||||
Object * (.wram)
|
||||
Object * (.ltdwram)
|
||||
Object * (.rsvwram)
|
||||
Object * (.main)
|
||||
Object * (.ltdmain)
|
||||
}
|
||||
@ -12,15 +12,6 @@
|
||||
-l<AUTOLOAD.LIBRARY>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<END.AUTOLOADS>
|
||||
<FOREACH.OVERLAYS>
|
||||
-og <OVERLAY.GROUP>,0 -ol <OVERLAY.NAME>
|
||||
<FOREACH.OVERLAY.OBJECTS:f>
|
||||
<OVERLAY.OBJECT>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES:f>
|
||||
-l<OVERLAY.LIBRARY>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
<END.OVERLAYS>
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS:f>
|
||||
<LTDAUTOLOAD.OBJECT>
|
||||
@ -29,12 +20,3 @@
|
||||
-l<LTDAUTOLOAD.LIBRARY>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<END.LTDAUTOLOADS>
|
||||
<FOREACH.LTDOVERLAYS>
|
||||
-og <LTDOVERLAY.GROUP>,0 -ol <LTDOVERLAY.NAME>
|
||||
<FOREACH.LTDOVERLAY.OBJECTS:f>
|
||||
<LTDOVERLAY.OBJECT>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES:f>
|
||||
-l<LTDOVERLAY.LIBRARY>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
<END.LTDOVERLAYS>
|
||||
@ -1,917 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
# Project: TwlSDK - components - racoon.TWL
|
||||
# File: racoon.lcf.template
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Date:: 2008-03-11#$
|
||||
# $Rev: 4670 $
|
||||
# $Author: terui $
|
||||
#---------------------------------------------------------------------------
|
||||
MEMORY
|
||||
{
|
||||
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||
|
||||
<FOREACH.AUTOLOADS>
|
||||
<AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||
<END.AUTOLOADS>
|
||||
binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||
binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX>
|
||||
|
||||
<PROPERTY.OVERLAYDEFS>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.FLXSUFFIX>
|
||||
<PROPERTY.OVERLAYTABLE>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.FLXSUFFIX>
|
||||
<FOREACH.OVERLAYS>
|
||||
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.FLXSUFFIX>
|
||||
<END.OVERLAYS>
|
||||
|
||||
check.WORKRAM (RWX) : ORIGIN = 0x037c0000, LENGTH = 0x50000 > workram.check
|
||||
|
||||
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
<LTDAUTOLOAD.NAME> (RWX) : ORIGIN = <LTDAUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||
<END.LTDAUTOLOADS>
|
||||
binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||
|
||||
<PROPERTY.LTDOVERLAYDEFS>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYDEFS><PROPERTY.LTDSUFFIX>
|
||||
<PROPERTY.LTDOVERLAYTABLE>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYTABLE><PROPERTY.LTDSUFFIX>
|
||||
<FOREACH.LTDOVERLAYS>
|
||||
<LTDOVERLAY.NAME> (RWXO): ORIGIN = <LTDOVERLAY.ADDRESS>, LENGTH = 0x0 > <LTDOVERLAY.NAME><PROPERTY.LTDSUFFIX>
|
||||
<END.LTDOVERLAYS>
|
||||
|
||||
check.LTDMAIN (RWX) : ORIGIN = 0x02f88000, LENGTH = 0x74000 > ltdmain.check
|
||||
}
|
||||
|
||||
KEEP_SECTION
|
||||
{
|
||||
.sinit
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
############################ STATIC #################################
|
||||
.<STATIC.NAME>:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||
<END.STATIC.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# TEXT BLOCK: READ ONLY
|
||||
#
|
||||
SDK_STATIC_START =.;
|
||||
SDK_STATIC_TEXT_START =.;
|
||||
#:::::::::: text/rodata
|
||||
OBJECT(_start,*)
|
||||
<FOREACH.STATIC.OBJECTS=.text>
|
||||
<STATIC.OBJECT=.text:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.text>
|
||||
<STATIC.LIBRARY=.text:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.rodata>
|
||||
<STATIC.OBJECT=.rodata:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.rodata>
|
||||
<STATIC.LIBRARY=.rodata:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.init>
|
||||
<STATIC.OBJECT=.init:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.init>
|
||||
<STATIC.LIBRARY=.init:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_SINIT_START =.;
|
||||
#:::::::::: ctor
|
||||
<FOREACH.STATIC.OBJECTS=.ctor>
|
||||
<STATIC.OBJECT=.ctor:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.ctor>
|
||||
<STATIC.LIBRARY=.ctor:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.sinit>
|
||||
<STATIC.OBJECT=.sinit:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.sinit>
|
||||
<STATIC.LIBRARY=.sinit:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
WRITEW 0;
|
||||
#:::::::::: ctor
|
||||
SDK_STATIC_SINIT_END =.;
|
||||
#:::::::::: text/rodata
|
||||
SDK_STATIC_TEXT_END =.;
|
||||
|
||||
#
|
||||
# DATA BLOCK: READ WRITE
|
||||
#
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_DATA_START =.;
|
||||
#:::::::::: data
|
||||
<FOREACH.STATIC.OBJECTS=.sdata>
|
||||
<STATIC.OBJECT=.sdata:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.sdata>
|
||||
<STATIC.LIBRARY=.sdata:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.data>
|
||||
<STATIC.OBJECT=.data:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.data>
|
||||
<STATIC.LIBRARY=.data:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
#:::::::::: data
|
||||
SDK_STATIC_DATA_END =.;
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_END =.;
|
||||
|
||||
SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START;
|
||||
SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START;
|
||||
SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START;
|
||||
__sinit__ = SDK_STATIC_SINIT_START; # for static initializer
|
||||
|
||||
} > <STATIC.NAME>
|
||||
|
||||
.<STATIC.NAME>.bss:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||
<END.STATIC.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# BSS BLOCK
|
||||
#
|
||||
SDK_STATIC_BSS_START =.;
|
||||
#:::::::::: bss
|
||||
<FOREACH.STATIC.OBJECTS=.sbss>
|
||||
<STATIC.OBJECT=.sbss:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.sbss>
|
||||
<STATIC.LIBRARY=.sbss:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
<FOREACH.STATIC.OBJECTS=.bss>
|
||||
<STATIC.OBJECT=.bss:t>
|
||||
<END.STATIC.OBJECTS>
|
||||
<FOREACH.STATIC.LIBRARIES=.bss>
|
||||
<STATIC.LIBRARY=.bss:t>
|
||||
<END.STATIC.LIBRARIES>
|
||||
#:::::::::: bss
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_BSS_END = .;
|
||||
|
||||
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
|
||||
|
||||
} >> <STATIC.NAME>
|
||||
|
||||
|
||||
############################ AUTOLOADS ##############################
|
||||
SDK_AUTOLOAD.WRAM.START = 0x037c0000;
|
||||
SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START;
|
||||
SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START;
|
||||
SDK_AUTOLOAD.WRAM.SIZE = 0;
|
||||
SDK_AUTOLOAD.WRAM.BSS_SIZE = 0;
|
||||
SDK_AUTOLOAD_START = SDK_STATIC_END;
|
||||
SDK_AUTOLOAD_SIZE = 0;
|
||||
SDK_AUTOLOAD_NUMBER = <NUMBER.AUTOLOADS>;
|
||||
|
||||
<FOREACH.AUTOLOADS>
|
||||
.<AUTOLOAD.NAME>:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# TEXT BLOCK: READ ONLY
|
||||
#
|
||||
SDK_AUTOLOAD_<AUTOLOAD.NAME>_ID =<AUTOLOAD.ID>;
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.ID =<AUTOLOAD.ID>;
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.START =.;
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START =.;
|
||||
#:::::::::: text/rodata
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.text>
|
||||
<AUTOLOAD.OBJECT=.text:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.text>
|
||||
<AUTOLOAD.LIBRARY=.text:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.etable>
|
||||
<AUTOLOAD.OBJECT=.exception:t>
|
||||
. = ALIGN(4);
|
||||
SDK_STATIC_ETABLE_START =.;
|
||||
__exception_table_start__ =.;
|
||||
EXCEPTION
|
||||
__exception_table_end__ =.;
|
||||
SDK_STATIC_ETABLE_END =.;
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.rodata>
|
||||
<AUTOLOAD.OBJECT=.rodata:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.rodata>
|
||||
<AUTOLOAD.LIBRARY=.rodata:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.init>
|
||||
<AUTOLOAD.OBJECT=.init:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.init>
|
||||
<AUTOLOAD.LIBRARY=.init:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.SINIT_START =.;
|
||||
#:::::::::: ctor
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.ctor>
|
||||
<AUTOLOAD.OBJECT=.ctor:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.ctor>
|
||||
<AUTOLOAD.LIBRARY=.ctor:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.sinit>
|
||||
<AUTOLOAD.OBJECT=.sinit:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.sinit>
|
||||
<AUTOLOAD.LIBRARY=.sinit:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
WRITEW 0;
|
||||
#:::::::::: ctor
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.SINIT_END =.;
|
||||
#:::::::::: text/rodata
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.;
|
||||
|
||||
#
|
||||
# DATA BLOCK: READ WRITE BLOCK
|
||||
#
|
||||
. = ALIGN(4);
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START =.;
|
||||
#:::::::::: data
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.wram>
|
||||
<AUTOLOAD.OBJECT=.wram:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.wram>
|
||||
<AUTOLOAD.LIBRARY=.wram:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.ltdwram>
|
||||
<AUTOLOAD.OBJECT=.ltdwram:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.ltdwram>
|
||||
<AUTOLOAD.LIBRARY=.ltdwram:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.sdata>
|
||||
<AUTOLOAD.OBJECT=.sdata:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.sdata>
|
||||
<AUTOLOAD.LIBRARY=.sdata:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.data>
|
||||
<AUTOLOAD.OBJECT=.data:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.data>
|
||||
<AUTOLOAD.LIBRARY=.data:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
#:::::::::: data
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.;
|
||||
. = ALIGN(4);
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.END =.;
|
||||
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START;
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START;
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.START;
|
||||
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE;
|
||||
|
||||
} > <AUTOLOAD.NAME>
|
||||
|
||||
.<AUTOLOAD.NAME>.bss:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# BSS BLOCK
|
||||
#
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .;
|
||||
#:::::::::: bss
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.wram>
|
||||
<AUTOLOAD.OBJECT=.wram.bss:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.wram>
|
||||
<AUTOLOAD.LIBRARY=.wram.bss:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.ltdwram>
|
||||
<AUTOLOAD.OBJECT=.ltdwram.bss:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.ltdwram>
|
||||
<AUTOLOAD.LIBRARY=.ltdwram.bss:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.sbss>
|
||||
<AUTOLOAD.OBJECT=.sbss:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.sbss>
|
||||
<AUTOLOAD.LIBRARY=.sbss:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
<FOREACH.AUTOLOAD.OBJECTS=.bss>
|
||||
<AUTOLOAD.OBJECT=.bss:t>
|
||||
<END.AUTOLOAD.OBJECTS>
|
||||
<FOREACH.AUTOLOAD.LIBRARIES=.bss>
|
||||
<AUTOLOAD.LIBRARY=.bss:t>
|
||||
<END.AUTOLOAD.LIBRARIES>
|
||||
#:::::::::: bss
|
||||
. = ALIGN(4);
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END = .;
|
||||
|
||||
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START;
|
||||
|
||||
} >> <AUTOLOAD.NAME>
|
||||
|
||||
<END.AUTOLOADS>
|
||||
|
||||
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
|
||||
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
|
||||
SDK_MOUNT_INFO_TABLE = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||
SDK_AUTOLOAD_WRAM_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400;
|
||||
SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE;
|
||||
SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE;
|
||||
|
||||
############################ AUTOLOAD_INFO ##########################
|
||||
.binary.AUTOLOAD_INFO:
|
||||
{
|
||||
<FOREACH.AUTOLOADS>
|
||||
WRITEW ADDR(.<AUTOLOAD.NAME>);
|
||||
WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE;
|
||||
WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SINIT_START;
|
||||
WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE;
|
||||
<END.AUTOLOADS>
|
||||
|
||||
} > binary.AUTOLOAD_INFO
|
||||
|
||||
SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE;
|
||||
SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
|
||||
SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
|
||||
|
||||
############################ STATIC_FOOTER ##########################
|
||||
.binary.STATIC_FOOTER:
|
||||
{
|
||||
WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE
|
||||
WRITEW _start_ModuleParams - ADDR(.<STATIC.NAME>);
|
||||
WRITEW 0; # NO DIGEST
|
||||
WRITEW _start_LtdModuleParams - ADDR(.<STATIC.NAME>);
|
||||
} > binary.STATIC_FOOTER
|
||||
|
||||
############################ OVERLAYS ###############################
|
||||
SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>;
|
||||
|
||||
<FOREACH.OVERLAYS>
|
||||
.<OVERLAY.NAME>:<OVERLAY.NAME>
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||
<END.OVERLAY.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# TEXT BLOCK: READ ONLY
|
||||
#
|
||||
SDK_OVERLAY_<OVERLAY.NAME>_ID =<OVERLAY.ID>; ### SEGMENT <OVERLAY.NAME> OVERLAY ID
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.ID =<OVERLAY.ID>;
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.START =.;
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START =.;
|
||||
#:::::::::: text/rodata
|
||||
<FOREACH.OVERLAY.OBJECTS=.text>
|
||||
<OVERLAY.OBJECT=.text:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.text>
|
||||
<OVERLAY.LIBRARY=.text:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
<FOREACH.OVERLAY.OBJECTS=.rodata>
|
||||
<OVERLAY.OBJECT=.rodata:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.rodata>
|
||||
<OVERLAY.LIBRARY=.rodata:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
<FOREACH.OVERLAY.OBJECTS=.init>
|
||||
<OVERLAY.OBJECT=.init:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.init>
|
||||
<OVERLAY.LIBRARY=.init:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START =.;
|
||||
#:::::::::: ctor
|
||||
<FOREACH.OVERLAY.OBJECTS=.ctor>
|
||||
<OVERLAY.OBJECT=.ctor:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.ctor>
|
||||
<OVERLAY.LIBRARY=.ctor:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
<FOREACH.OVERLAY.OBJECTS=.sinit>
|
||||
<OVERLAY.OBJECT=.sinit:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.sinit>
|
||||
<OVERLAY.LIBRARY=.sinit:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
WRITEW 0;
|
||||
#:::::::::: ctor
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.;
|
||||
#:::::::::: text/rodata
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.;
|
||||
|
||||
#
|
||||
# DATA BLOCK: READ WRITE
|
||||
#
|
||||
. = ALIGN(4);
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.DATA_START =.;
|
||||
#:::::::::: data
|
||||
<FOREACH.OVERLAY.OBJECTS=.sdata>
|
||||
<OVERLAY.OBJECT=.sdata:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.sdata>
|
||||
<OVERLAY.LIBRARY=.sdata:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
<FOREACH.OVERLAY.OBJECTS=.data>
|
||||
<OVERLAY.OBJECT=.data:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.data>
|
||||
<OVERLAY.LIBRARY=.data:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
#:::::::::: data
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.;
|
||||
. = ALIGN(4);
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.END =.;
|
||||
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END - SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START;
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.DATA_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.DATA_END - SDK_OVERLAY.<OVERLAY.NAME>.DATA_START;
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.SIZE = SDK_OVERLAY.<OVERLAY.NAME>.END - SDK_OVERLAY.<OVERLAY.NAME>.START;
|
||||
|
||||
} > <OVERLAY.NAME>
|
||||
|
||||
.<OVERLAY.NAME>.bss:<OVERLAY.NAME>
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||
<END.OVERLAY.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# BSS BLOCK
|
||||
#
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.BSS_START = .;
|
||||
#:::::::::: bss
|
||||
<FOREACH.OVERLAY.OBJECTS=.bss>
|
||||
<OVERLAY.OBJECT=.bss:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.bss>
|
||||
<OVERLAY.LIBRARY=.bss:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
<FOREACH.OVERLAY.OBJECTS=.sbss>
|
||||
<OVERLAY.OBJECT=.sbss:t>
|
||||
<END.OVERLAY.OBJECTS>
|
||||
<FOREACH.OVERLAY.LIBRARIES=.sbss>
|
||||
<OVERLAY.LIBRARY=.sbss:t>
|
||||
<END.OVERLAY.LIBRARIES>
|
||||
#:::::::::: bss
|
||||
. = ALIGN(4);
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.BSS_END = .;
|
||||
|
||||
SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.BSS_END - SDK_OVERLAY.<OVERLAY.NAME>.BSS_START;
|
||||
|
||||
} >> <OVERLAY.NAME>
|
||||
|
||||
<END.OVERLAYS>
|
||||
|
||||
############################ OVERLAYDEFS ############################
|
||||
.<PROPERTY.OVERLAYDEFS>F:
|
||||
{
|
||||
### <STATIC.NAME> module information
|
||||
WRITEW ADDR(.<STATIC.NAME>); # load address
|
||||
WRITEW _start; # entry address
|
||||
WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module
|
||||
WRITEW _start_AutoloadDoneCallback; # callback autoload done
|
||||
|
||||
### overlay filename
|
||||
<FOREACH.OVERLAYS>
|
||||
WRITES ("<OVERLAY.NAME><PROPERTY.FLXSUFFIX>"); # Overlay <OVERLAY.ID>
|
||||
<END.OVERLAYS>
|
||||
|
||||
} > <PROPERTY.OVERLAYDEFS>F
|
||||
|
||||
############################ OVERLAYTABLE ###########################
|
||||
.<PROPERTY.OVERLAYTABLE>F:
|
||||
{
|
||||
<FOREACH.OVERLAYS>
|
||||
WRITEW <OVERLAY.ID>; # overlay ID
|
||||
WRITEW ADDR(.<OVERLAY.NAME>); # load address
|
||||
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SIZE; # size of module
|
||||
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE; # size of bss
|
||||
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START; # start address of static init
|
||||
WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END; # end address of static init
|
||||
WRITEW <OVERLAY.ID>; # ROM file ID
|
||||
WRITEW 0; # Reserved
|
||||
<END.OVERLAYS>
|
||||
|
||||
} > <PROPERTY.OVERLAYTABLE>F
|
||||
|
||||
############################ OTHERS #################################
|
||||
SDK_SEA_KEY_STORE = SDK_AUTOLOAD_WRAM_BSS_END;
|
||||
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD_WRAM_BSS_END + 0x40;
|
||||
|
||||
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
|
||||
|
||||
.check.WORKRAM:
|
||||
{
|
||||
. = . + SDK_AUTOLOAD_WRAM_BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||
|
||||
} > check.WORKRAM
|
||||
|
||||
########################### LTDAUTOLOADS ############################
|
||||
SDK_LTDAUTOLOAD.LTDMAIN.START = 0x02f88000;
|
||||
SDK_LTDAUTOLOAD.LTDMAIN.END = SDK_LTDAUTOLOAD.LTDMAIN.START;
|
||||
SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START;
|
||||
SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0;
|
||||
SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0;
|
||||
SDK_LTDAUTOLOAD_TOP_START = 0x02e80000;
|
||||
SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC 領域が無い代わりに 4 bytes のダミーがバイナリファイルの先頭に入る #
|
||||
SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE;
|
||||
SDK_LTDAUTOLOAD_SIZE = 0;
|
||||
SDK_LTDAUTOLOAD_NUMBER = <NUMBER.LTDAUTOLOADS>;
|
||||
|
||||
.binary.LTDAUTOLOAD_TOP:
|
||||
{
|
||||
WRITEW 0;
|
||||
|
||||
} > binary.LTDAUTOLOAD_TOP
|
||||
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
.<LTDAUTOLOAD.NAME>:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
|
||||
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
|
||||
SDK_LTDAUTOLOAD_<LTDAUTOLOAD.NAME>_ID =<LTDAUTOLOAD.ID>;
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.ID =<LTDAUTOLOAD.ID>;
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START =.;
|
||||
#
|
||||
# TEXT BLOCK: READ ONLY
|
||||
#
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_START =.;
|
||||
#:::::::::: text/rodata
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.text>
|
||||
<LTDAUTOLOAD.OBJECT=.text:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.text>
|
||||
<LTDAUTOLOAD.LIBRARY=.text:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.rodata>
|
||||
<LTDAUTOLOAD.OBJECT=.rodata:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.rodata>
|
||||
<LTDAUTOLOAD.LIBRARY=.rodata:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.init>
|
||||
<LTDAUTOLOAD.OBJECT=.init:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.init>
|
||||
<LTDAUTOLOAD.LIBRARY=.init:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START =.;
|
||||
#:::::::::: ctor
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ctor>
|
||||
<LTDAUTOLOAD.OBJECT=.ctor:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ctor>
|
||||
<LTDAUTOLOAD.LIBRARY=.ctor:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.sinit>
|
||||
<LTDAUTOLOAD.OBJECT=.sinit:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sinit>
|
||||
<LTDAUTOLOAD.LIBRARY=.sinit:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
WRITEW 0;
|
||||
#:::::::::: ctor
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_END =.;
|
||||
#:::::::::: text/rodata
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_END =.;
|
||||
|
||||
#
|
||||
# DATA BLOCK: READ WRITE BLOCK
|
||||
#
|
||||
. = ALIGN(4);
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_START =.;
|
||||
#:::::::::: data
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.sdata>
|
||||
<LTDAUTOLOAD.OBJECT=.sdata:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sdata>
|
||||
<LTDAUTOLOAD.LIBRARY=.sdata:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.data>
|
||||
<LTDAUTOLOAD.OBJECT=.data:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.data>
|
||||
<LTDAUTOLOAD.LIBRARY=.data:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
|
||||
<LTDAUTOLOAD.OBJECT=.ltdmain:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
|
||||
<LTDAUTOLOAD.LIBRARY=.ltdmain:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
#:::::::::: data
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_END =.;
|
||||
. = ALIGN(4);
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END =.;
|
||||
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_START;
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_START;
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START;
|
||||
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
|
||||
|
||||
} > <LTDAUTOLOAD.NAME>
|
||||
|
||||
.<LTDAUTOLOAD.NAME>.bss:
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>;
|
||||
<END.LTDAUTOLOAD.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# BSS BLOCK
|
||||
#
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START =.;
|
||||
#:::::::::: bss
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.sbss>
|
||||
<LTDAUTOLOAD.OBJECT=.sbss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.sbss>
|
||||
<LTDAUTOLOAD.LIBRARY=.sbss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.bss>
|
||||
<LTDAUTOLOAD.OBJECT=.bss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.bss>
|
||||
<LTDAUTOLOAD.LIBRARY=.bss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
<FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain>
|
||||
<LTDAUTOLOAD.OBJECT=.ltdmain.bss:t>
|
||||
<END.LTDAUTOLOAD.OBJECTS>
|
||||
<FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain>
|
||||
<LTDAUTOLOAD.LIBRARY=.ltdmain.bss:t>
|
||||
<END.LTDAUTOLOAD.LIBRARIES>
|
||||
#:::::::::: bss
|
||||
. = ALIGN(4);
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END =.;
|
||||
|
||||
SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START;
|
||||
|
||||
} >> <LTDAUTOLOAD.NAME>
|
||||
|
||||
<END.LTDAUTOLOADS>
|
||||
|
||||
SDK_LTDAUTOLOAD_LTDMAIN_START = SDK_LTDAUTOLOAD.LTDMAIN.START;
|
||||
SDK_LTDAUTOLOAD_LTDMAIN_END = SDK_LTDAUTOLOAD.LTDMAIN.END;
|
||||
SDK_LTDAUTOLOAD_LTDMAIN_BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END;
|
||||
SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE;
|
||||
SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE;
|
||||
|
||||
######################### LTDAUTOLOAD_INFO ##########################
|
||||
.binary.LTDAUTOLOAD_INFO:
|
||||
{
|
||||
<FOREACH.LTDAUTOLOADS>
|
||||
WRITEW ADDR(.<LTDAUTOLOAD.NAME>);
|
||||
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE;
|
||||
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START;
|
||||
WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE;
|
||||
<END.LTDAUTOLOADS>
|
||||
|
||||
} > binary.LTDAUTOLOAD_INFO
|
||||
|
||||
SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE;
|
||||
SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO);
|
||||
SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO);
|
||||
|
||||
########################### LTDOVERLAYS #############################
|
||||
SDK_LTDOVERLAY_NUMBER = <NUMBER.LTDOVERLAYS>;
|
||||
|
||||
<FOREACH.LTDOVERLAYS>
|
||||
.<LTDOVERLAY.NAME>:<LTDOVERLAY.NAME>
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.LTDOVERLAY.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <LTDOVERLAY.SEARCHSYMBOL>;
|
||||
<END.LTDOVERLAY.SEARCHSYMBOLS>
|
||||
|
||||
SDK_LTDOVERLAY_<LTDOVERLAY.NAME>_ID =<LTDOVERLAY.ID>;
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.ID =<LTDOVERLAY.ID>;
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.START =.;
|
||||
#
|
||||
# TEXT BLOCK: READ ONLY
|
||||
#
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_START =.;
|
||||
#:::::::::: text/rodata
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.text>
|
||||
<LTDOVERLAY.OBJECT=.text:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.text>
|
||||
<LTDOVERLAY.LIBRARY=.text:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.rodata>
|
||||
<LTDOVERLAY.OBJECT=.rodata:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.rodata>
|
||||
<LTDOVERLAY.LIBRARY=.rodata:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.init>
|
||||
<LTDOVERLAY.OBJECT=.init:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.init>
|
||||
<LTDOVERLAY.LIBRARY=.init:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
. = ALIGN(4);
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_START =.;
|
||||
#:::::::::: ctor
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.ctor>
|
||||
<LTDOVERLAY.OBJECT=.ctor:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.ctor>
|
||||
<LTDOVERLAY.LIBRARY=.ctor:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.sinit>
|
||||
<LTDOVERLAY.OBJECT=.sinit:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.sinit>
|
||||
<LTDOVERLAY.LIBRARY=.sinit:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
WRITEW 0;
|
||||
#:::::::::: ctor
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_END =.;
|
||||
#:::::::::: text/rodata
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_END =.;
|
||||
|
||||
#
|
||||
# DATA BLOCK: READ WRITE
|
||||
#
|
||||
. = ALIGN(4);
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_START =.;
|
||||
#:::::::::: data
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.sdata>
|
||||
<LTDOVERLAY.OBJECT=.sdata:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.sdata>
|
||||
<LTDOVERLAY.LIBRARY=.sdata:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.data>
|
||||
<LTDOVERLAY.OBJECT=.data:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.data>
|
||||
<LTDOVERLAY.LIBRARY=.data:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
#:::::::::: data
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_END =.;
|
||||
. = ALIGN(4);
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.END =.;
|
||||
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_START;
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_START;
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.START;
|
||||
|
||||
} > <LTDOVERLAY.NAME>
|
||||
|
||||
.<LTDOVERLAY.NAME>.bss:<LTDOVERLAY.NAME>
|
||||
{
|
||||
ALIGNALL(4);
|
||||
. = ALIGN(4);
|
||||
|
||||
#
|
||||
# Definition to refer overlay segment, when same name symbols exist in multiple overlays.
|
||||
#
|
||||
<FOREACH.LTDOVERLAY.SEARCHSYMBOLS>
|
||||
SEARCH_SYMBOL <LTDOVERLAY.SEARCHSYMBOL>;
|
||||
<END.LTDOVERLAY.SEARCHSYMBOLS>
|
||||
|
||||
#
|
||||
# BSS BLOCK
|
||||
#
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_START =.;
|
||||
#:::::::::: bss
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.bss>
|
||||
<LTDOVERLAY.OBJECT=.bss:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.bss>
|
||||
<LTDOVERLAY.LIBRARY=.bss:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
<FOREACH.LTDOVERLAY.OBJECTS=.sbss>
|
||||
<LTDOVERLAY.OBJECT=.sbss:t>
|
||||
<END.LTDOVERLAY.OBJECTS>
|
||||
<FOREACH.LTDOVERLAY.LIBRARIES=.sbss>
|
||||
<LTDOVERLAY.LIBRARY=.sbss:t>
|
||||
<END.LTDOVERLAY.LIBRARIES>
|
||||
#:::::::::: bss
|
||||
. = ALIGN(4);
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_END =.;
|
||||
|
||||
SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_START;
|
||||
|
||||
} >> <LTDOVERLAY.NAME>
|
||||
|
||||
<END.LTDOVERLAYS>
|
||||
|
||||
########################## LTDOVERLAYDEFS ###########################
|
||||
.<PROPERTY.LTDOVERLAYDEFS>L:
|
||||
{
|
||||
### TWL limited extended static module information
|
||||
WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address
|
||||
WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table
|
||||
WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module
|
||||
WRITEW 0; # padding
|
||||
|
||||
### TWL limited overlay filename
|
||||
<FOREACH.LTDOVERLAYS>
|
||||
WRITES ("<LTDOVERLAY.NAME><PROPERTY.LTDSUFFIX>");
|
||||
<END.LTDOVERLAYS>
|
||||
|
||||
} > <PROPERTY.LTDOVERLAYDEFS>L
|
||||
|
||||
######################### LTDOVERLAYTABLE ###########################
|
||||
.<PROPERTY.LTDOVERLAYTABLE>L:
|
||||
{
|
||||
<FOREACH.LTDOVERLAYS>
|
||||
WRITES <LTDOVERLAY.ID> # overlay ID
|
||||
WRITEW ADDR(.<LTDOVERLAY.NAME>); # load address
|
||||
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SIZE; # size of module
|
||||
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_SIZE; # size of bss
|
||||
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_START; # start address of static init
|
||||
WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_END; # end address of static init
|
||||
WRITEW <LTDOVERLAY.ID> # ROM file ID
|
||||
WRITEW 0; # Reserved
|
||||
<END.LTDOVERLAYS>
|
||||
|
||||
} > <PROPERTY.LTDOVERLAYTABLE>L
|
||||
|
||||
############################ OTHERS #################################
|
||||
SDK_SUBPRIV_ARENA_LO = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END;
|
||||
.check.LTDMAIN:
|
||||
{
|
||||
. = SDK_SUBPRIV_ARENA_LO;
|
||||
|
||||
} > check.LTDMAIN
|
||||
|
||||
}
|
||||
@ -1,214 +0,0 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - components - racoon.TWL
|
||||
# File: racoon.lsf
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded insructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Date:: $
|
||||
# $Rev$
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# Nitro LCF SPEC FILE
|
||||
#
|
||||
#--------
|
||||
Static $(TARGET_NAME)
|
||||
{
|
||||
Address 0x02380000
|
||||
Library $(CRT0_O)
|
||||
Object $(OBJDIR)/initScfg.o
|
||||
StackSize 1024 1024
|
||||
}
|
||||
|
||||
#--------
|
||||
Autoload WRAM
|
||||
{
|
||||
Address $(ADDRESS_LTDWRAM)
|
||||
|
||||
Library libsubpsyscall.a \
|
||||
libsyscall_sp.twl.a \
|
||||
$(CW_LIBS) \
|
||||
libos_sp$(LIBSUFFIX).a \
|
||||
libmi_sp$(LIBSUFFIX).a \
|
||||
libpad_sp$(LIBSUFFIX).a \
|
||||
libpxi_sp$(LIBSUFFIX).a \
|
||||
libstd_sp$(LIBSUFFIX).a \
|
||||
libexi_sp$(LIBSUFFIX).a \
|
||||
libsnd_sp$(LIBSUFFIX).a \
|
||||
libspi_sp$(LIBSUFFIX).a \
|
||||
libpm_sp$(LIBSUFFIX).a \
|
||||
libmath_sp$(LIBSUFFIX).a \
|
||||
libscfg_sp$(LIBSUFFIX).a \
|
||||
libtp_sp$(LIBSUFFIX).a \
|
||||
libmic_sp$(LIBSUFFIX).a \
|
||||
libfs_sp$(LIBSUFFIX).a \
|
||||
libcard_sp$(LIBSUFFIX).a \
|
||||
libi2c_sp$(LIBSUFFIX).a \
|
||||
libcamera_sp$(LIBSUFFIX).a \
|
||||
libcdc_sp$(LIBSUFFIX).a \
|
||||
libsndex_sp$(LIBSUFFIX).a \
|
||||
libtpex_sp$(LIBSUFFIX).a \
|
||||
libmicex_sp$(LIBSUFFIX).a \
|
||||
libmcu_sp$(LIBSUFFIX).a \
|
||||
|
||||
Library libsdio_sp$(LIBSUFFIX).a
|
||||
|
||||
Library libnvram_sp$(LIBSUFFIX).a
|
||||
Library librtc_sp$(LIBSUFFIX).a
|
||||
|
||||
|
||||
Object * (.etable)
|
||||
Object * (.wram)
|
||||
Object * (.ltdwram)
|
||||
Object $(OBJDIR)/main.o
|
||||
Object $(OBJDIR)/kami_pxi.o
|
||||
Object $(OBJDIR)/formatter.o
|
||||
Object $(OBJDIR)/nvram_misc.o
|
||||
|
||||
# caches in fatfs library, that should be on WRAM.
|
||||
# 2007/12/11 OBJECT() による .bss シンボルのリンクがうまくいかないので、
|
||||
# 変数定義箇所に pragma で .ltdwram セクションに含まれるように暫定対策しました。
|
||||
# Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss)
|
||||
|
||||
#####
|
||||
# Sub-routines in WL library , that should be on WRAM.
|
||||
# in TaskMan.o
|
||||
Object OBJECT( MainTaskRoutine , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( AddTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( DeleteTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( LowestIdleTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ExecuteMessage , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in BufMan.o
|
||||
Object OBJECT( NewHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( DeleteHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( AllocateHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ReleaseHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( MoveHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( AddHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( GetHeapBufNextAdrs , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in WlCmdIf.o
|
||||
Object OBJECT( RequestCmdTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( SendMessageToWmDirect , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in WlNic.o
|
||||
Object OBJECT( WStart , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WStop , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WSetStaState , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in WlIntr.o
|
||||
Object OBJECT( WlIntr , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrPreTbtt , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrTbtt , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrActEnd , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# Object OBJECT( WlIntrAckCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrTxErr , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrRxCntup , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrRxEnd , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrMpEnd , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrStartTx , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrStartRx , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( SetParentTbttTxq , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( MacBugTxMp , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( AdjustRingPointer , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( CheckKeyTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in WlIntrTask.o
|
||||
Object OBJECT( WlIntrTxBeaconTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrTxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrRxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WlIntrMpEndTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( SetParentTbttTxqTask , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( TakeoutRxFrame , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in TxCtrl.o
|
||||
Object OBJECT( InitTxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in RxCtrl.o
|
||||
Object OBJECT( InitRxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
# in WaitLoop.o
|
||||
Object OBJECT( WaitLoop_Rxpe , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WaitLoop_Waitus , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WaitLoop_ClrAid , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text)
|
||||
|
||||
# Object OBJECT( s_ar_cookie_mem , libathdrv_sp$(LIBSUFFIX).a ) (.bss)
|
||||
# Object OBJECT( nin_ar , libathdrv_sp$(LIBSUFFIX).a ) (.bss)
|
||||
|
||||
Object OBJECT( a_netbuf_alloc_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( a_netbuf_register_rx_callback , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( nin_driver_tx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( nin_tx_queue_full , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( nin_tx_complete , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( nin_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ar6000_bitrate_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ar6000_channelList_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ar6000_txPwr_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ar6000_gpio_intr_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ar6000_gpio_data_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ar6000_gpio_ack_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( nin_drv_BmiWriteSocReg , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ar6000_control_tx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( nin_drv_BmiReadMemory , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( nin_drv_BmiWriteMemory , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( wmi_dix_2_dot3 , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( wmi_control_rx_xtnd , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( wmi_control_rx , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( wmi_cmd_send , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( wmi_cmd_send_xtnd , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HIFReadWrite , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCAddReceivePkt , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCUnblockRecv , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCFlushRecvBuffers , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCSendPktCompletionHandler , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCIssueSend , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCTrySend , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTC_PACKET_DEQUEUE , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCSendPkt , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCFlushSendPkts , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCControlTxComplete , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTCControlRecv , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( HTC_ALLOC_CONTROL_TX , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( _ath_delete_timer , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( _ath_untimeout , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( _ath_timeout_ms , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( _ath_init_timer , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( ath_timer_task , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
Object OBJECT( timer_wakeup_function , libathdrv_sp$(LIBSUFFIX).a ) (.text)
|
||||
|
||||
Object OBJECT( wpa_sm_rx_eapol , libwpa_sp$(LIBSUFFIX).a ) (.text)
|
||||
|
||||
|
||||
}
|
||||
|
||||
#--------
|
||||
Ltdautoload RSVWRAM
|
||||
{
|
||||
Address 0x03040000
|
||||
Object * (.rsvwram)
|
||||
Library libathdrv_sp$(LIBSUFFIX).a (.bss)
|
||||
|
||||
}
|
||||
|
||||
#--------
|
||||
Ltdautoload LTDMAIN
|
||||
{
|
||||
Address 0x02f88000
|
||||
|
||||
Object * (.ltdmain)
|
||||
Library libwm_sp$(LIBSUFFIX).a \
|
||||
libnwm_sp$(LIBSUFFIX).a \
|
||||
libwvr_sp$(LIBSUFFIX).a \
|
||||
libwl_sp$(LIBSUFFIX).a
|
||||
|
||||
Library libwpa_sp$(LIBSUFFIX).a
|
||||
Library libathdrv_sp$(LIBSUFFIX).a
|
||||
|
||||
Library libfatfs_sp$(LIBSUFFIX).a \
|
||||
$(USE_CRYPTO_LIBS)
|
||||
Library $(ISDBG_LIBS_TWL)
|
||||
Library $(ISDBG_LIBS_NITRO)
|
||||
}
|
||||
@ -110,7 +110,7 @@ ExeFormat(FormatMode format_mode)
|
||||
u32 *init_datbuf;
|
||||
int nand_fat_partition_num;
|
||||
|
||||
init_datbuf = OS_Alloc( 512*16 );
|
||||
init_datbuf = OS_AllocFromSubPrivWram( 512*16 );
|
||||
if( init_datbuf == NULL ) {
|
||||
OS_TPrintf( "memory allocate error.\n" );
|
||||
ERROR_RETURN();
|
||||
@ -223,7 +223,7 @@ ExeFormat(FormatMode format_mode)
|
||||
}
|
||||
|
||||
// メモリ解放
|
||||
OS_Free( init_datbuf );
|
||||
OS_FreeToSubPrivWram( init_datbuf );
|
||||
|
||||
// ディレクトリ生成&チェック
|
||||
if (!CreateDirectory( "nand:", s_pDirList0 )) { return FALSE; }
|
||||
|
||||
@ -1,111 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlSDK - components - mongoose.TWL
|
||||
File: initScfg.c
|
||||
|
||||
Copyright 2008 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
Company Ltd., and are protected by Federal copyright law. They may
|
||||
not be disclosed to third parties or copied or duplicated in any form,
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Date:: 2008-03-03#$
|
||||
$Rev: 4466 $
|
||||
$Author: terui $
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl/memorymap_sp.h>
|
||||
#include <twl/hw/common/mmap_wramEnv.h>
|
||||
|
||||
extern void INIT_InitializeScfg(void);
|
||||
|
||||
#include <twl/code32.h>
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: INIT_InitializeScfg
|
||||
|
||||
Description: ローダーが行う SCFG ブロックへの設定処理を代行する為の関数。
|
||||
crt0 内の弱シンボルを上書きする。
|
||||
|
||||
Arguments: None.
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
asm void
|
||||
INIT_InitializeScfg(void)
|
||||
{
|
||||
// SCFG enable?
|
||||
ldr r2, =REG_EXT_ADDR
|
||||
ldr r0, [r2]
|
||||
tst r0, #REG_SCFG_EXT_CFG_MASK
|
||||
beq @end
|
||||
|
||||
/* NITRO 互換無線の送受信機能を動作 */
|
||||
ldr r1, =REG_WL_ADDR
|
||||
ldrh r0, [r1]
|
||||
orr r0, r0, #REG_SCFG_WL_OFFB_MASK
|
||||
strh r0, [r1]
|
||||
|
||||
/* 新規サウンドブロックへのクロック供給 */
|
||||
ldr r1, =REG_CLK_ADDR
|
||||
ldrh r0, [r1]
|
||||
orr r0, r0, #REG_SCFG_CLK_SNDMCLK_MASK
|
||||
strh r0, [r1]
|
||||
|
||||
/* ARM7 側の DMA には新 DMA 回路を採用し、サウンドにも新 DMA 回路を利用 */
|
||||
ldr r1, =REG_EXT_ADDR
|
||||
ldr r0, [r1]
|
||||
orr r0, r0, #REG_SCFG_EXT_DMAC_MASK
|
||||
orr r0, r0, #REG_SCFG_EXT_DSEL_MASK
|
||||
str r0, [r1]
|
||||
|
||||
ldr r2, =HW_PRV_WRAM_SYSRV
|
||||
//EXT(extentions)
|
||||
ldr r3, =REG_EXT_ADDR
|
||||
ldr r0, [r3]
|
||||
str r0, [r2, #HWi_WSYS04_WRAMOFFSET]
|
||||
//OPT(bonding option)
|
||||
ldr r3, =REG_OP_ADDR
|
||||
ldrb r0, [r3]
|
||||
//A9ROM(ARM9 ROM)
|
||||
ldr r3, =REG_A9ROM_ADDR
|
||||
ldrb r1, [r3]
|
||||
and r12,r1, #(REG_SCFG_A9ROM_RSEL_MASK | REG_SCFG_A9ROM_SEC_MASK)
|
||||
orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM9RSEL_SHIFT - REG_SCFG_A9ROM_RSEL_SHIFT)
|
||||
//A7ROM(ARM7 ROM)
|
||||
ldr r3, =REG_A7ROM_ADDR
|
||||
ldrb r1, [r3]
|
||||
and r12,r1, #(REG_SCFG_A7ROM_RSEL_MASK | REG_SCFG_A7ROM_FUSE_MASK)
|
||||
orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM7RSEL_SHIFT - REG_SCFG_A7ROM_RSEL_SHIFT)
|
||||
//DS-WL(DS wireless)
|
||||
ldr r3, =REG_WL_ADDR
|
||||
ldrb r1, [r3]
|
||||
and r12,r1, #REG_SCFG_WL_OFFB_MASK
|
||||
orr r0, r0, r12, LSL #(HWi_WSYS08_WL_OFFB_SHIFT - REG_SCFG_WL_OFFB_SHIFT)
|
||||
strb r0, [r2, #HWi_WSYS08_WRAMOFFSET]
|
||||
//OPT(JTAG info)
|
||||
ldr r3, =REG_JTAG_ADDR
|
||||
ldrh r0, [r3]
|
||||
and r12,r0, #REG_SCFG_JTAG_DSPJE_MASK
|
||||
orr r0, r0, r12, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT)
|
||||
//CLK(only wram clock)
|
||||
ldr r3, =REG_CLK_ADDR
|
||||
ldrh r1, [r3]
|
||||
and r12,r1, #(REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK)
|
||||
orr r0, r0, r12, LSL #(HWi_WSYS09_CLK_SD1HCLK_SHIFT - REG_SCFG_CLK_SD1HCLK_SHIFT)
|
||||
and r12,r1, #(REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK)
|
||||
orr r0, r0, r12, LSR #(REG_SCFG_CLK_WRAMHCLK_SHIFT - HWi_WSYS09_CLK_WRAMHCLK_SHIFT)
|
||||
strb r0, [r2, #HWi_WSYS09_WRAMOFFSET]
|
||||
|
||||
#if 0
|
||||
/* A7-SCFG ブロックへのアクセスを無効化 */
|
||||
ldr r1, =REG_EXT_ADDR
|
||||
ldr r0, [r1]
|
||||
bic r0, r0, #REG_SCFG_EXT_CFG_MASK
|
||||
str r0, [r1]
|
||||
#endif
|
||||
|
||||
@end:
|
||||
bx lr
|
||||
}
|
||||
#include <twl/codereset.h>
|
||||
@ -1,5 +1,5 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlSDK - NandInitializer
|
||||
Project: TwlSDK - components - armadillo.TWL
|
||||
File: main.c
|
||||
|
||||
Copyright 2008 Nintendo. All rights reserved.
|
||||
@ -15,166 +15,212 @@
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl_sp.h>
|
||||
#include <twl/spi.h>
|
||||
#include <twl/camera.h>
|
||||
#include <twl/rtc.h>
|
||||
#include <twl/fatfs.h>
|
||||
#include <nitro/types.h>
|
||||
#include <twl/init/crt0.h>
|
||||
#include <twl/memorymap_sp.h>
|
||||
#include <twl/os.h>
|
||||
#include <twl/os/common/codecmode.h>
|
||||
#include <twl/cdc.h>
|
||||
#include <twl/exi/ARM7/genPort2.h>
|
||||
#include <nitro/pad.h>
|
||||
#include <twl/aes.h>
|
||||
#include <twl/mcu.h>
|
||||
#include "kami_pxi.h"
|
||||
#include "formatter.h"
|
||||
#ifdef SDK_SEA
|
||||
#include <twl/sea.h>
|
||||
#endif // ifdef SDK_SEA
|
||||
#include <twl/fatfs.h>
|
||||
#include <twl/nwm.h>
|
||||
#include <twl/mcu.h>
|
||||
#include <twl/cdc.h>
|
||||
#include <nitro/snd.h>
|
||||
#include <twl/snd/ARM7/sndex_api.h>
|
||||
#include <twl/rtc.h>
|
||||
#include <nitro/wvr.h>
|
||||
#include <twl/spi.h>
|
||||
#include "nvram_sp.h"
|
||||
#include "kami_pxi.h"
|
||||
|
||||
/* Priorities of each threads */
|
||||
#define THREAD_PRIO_SPI 2
|
||||
#define THREAD_PRIO_MCU 4 // 暫定
|
||||
#define THREAD_PRIO_SND 6
|
||||
#define THREAD_PRIO_FATFS 8
|
||||
#define THREAD_PRIO_RTC 12
|
||||
#define THREAD_PRIO_SNDEX 14
|
||||
#define THREAD_PRIO_FS 15
|
||||
/*---------------------------------------------------------------------------*
|
||||
定数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
/* 各スレッド優先度 */
|
||||
#define THREAD_PRIO_SPI 2
|
||||
#define THREAD_PRIO_MCU 4 // 暫定
|
||||
#define THREAD_PRIO_SND 6
|
||||
#define THREAD_PRIO_NWM_EVENT 7
|
||||
#define THREAD_PRIO_NWM_SDIO 8
|
||||
#define THREAD_PRIO_FATFS 8
|
||||
#define THREAD_PRIO_NWM_COMMAND 9
|
||||
#define THREAD_PRIO_NWM_WPA 10
|
||||
#define THREAD_PRIO_RTC 12
|
||||
#define THREAD_PRIO_SNDEX 14
|
||||
#define THREAD_PRIO_FS 15
|
||||
/* OS_THREAD_LAUNCHER_PRIORITY 16 */
|
||||
|
||||
extern void PMi_InitShutdownControl(void);
|
||||
/* ROM 内登録エリアの拡張言語コード */
|
||||
#define ROMHEADER_FOR_CHINA_BIT 0x80
|
||||
#define ROMHEADER_FOR_KOREA_BIT 0x40
|
||||
|
||||
/* 使用 DMA 番号 */
|
||||
#define DMA_NO_FATFS FATFS_DMA_4 // = 0
|
||||
#define DMA_NO_NWM 3
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
内部関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void PrintDebugInfo(void);
|
||||
static OSHeapHandle InitializeAllocateSystem(void);
|
||||
static void VBlankIntr(void);
|
||||
static void InitializeFatfs(void);
|
||||
static void InitializeCdc(void);
|
||||
static void DummyThread(void* arg);
|
||||
static void InitializeFatfs(void);
|
||||
static void InitializeNwm(OSHeapHandle hh);
|
||||
static void InitializeCdc(void);
|
||||
static void DummyThread(void* arg);
|
||||
|
||||
static void ReadUserInfo(void);
|
||||
#ifdef NVRAM_CONFIG_DATA_EX_VERSION
|
||||
static BOOL IsValidConfigEx(void);
|
||||
static u16 GetRomValidLanguage(void);
|
||||
static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp);
|
||||
#else
|
||||
static s32 CheckCorrectNCD(NVRAMConfig* ncdsp);
|
||||
#endif
|
||||
static void VBlankIntr(void);
|
||||
static void AttachAES(void);
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
外部シンボル参照
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifdef SDK_TWLHYB
|
||||
extern void SDK_LTDAUTOLOAD_LTDWRAM_BSS_END(void);
|
||||
extern void SDK_LTDAUTOLOAD_LTDMAIN_BSS_END(void);
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: TwlSpMain
|
||||
|
||||
Description: Initialize and do main
|
||||
|
||||
Description: 起動ベクタ。
|
||||
Arguments: None.
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
void TwlSpMain(void)
|
||||
void
|
||||
TwlSpMain(void)
|
||||
{
|
||||
OSThread thread;
|
||||
u32 stack[18];
|
||||
OSHeapHandle heapHandle;
|
||||
|
||||
// OS初期化
|
||||
/* OS 初期化 */
|
||||
OS_Init();
|
||||
SPI_Init(2);
|
||||
OS_InitTick();
|
||||
OS_InitAlarm();
|
||||
OS_InitThread();
|
||||
// (void)PAD_InitXYButton();
|
||||
PrintDebugInfo();
|
||||
|
||||
// ヒープ領域設定
|
||||
InitializeAllocateSystem();
|
||||
/* NVRAM からユーザー情報読み出し */
|
||||
ReadUserInfo();
|
||||
|
||||
// ボタン入力サーチ初期化
|
||||
/* ヒープ領域設定 */
|
||||
heapHandle = InitializeAllocateSystem();
|
||||
|
||||
/* ボタン入力サーチ初期化 */
|
||||
(void)PAD_InitXYButton();
|
||||
|
||||
// 割り込み許可
|
||||
/* 割込み許可 */
|
||||
(void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
|
||||
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||||
(void)GX_VBlankIntr(TRUE);
|
||||
(void)OS_EnableIrq();
|
||||
(void)OS_EnableInterrupts();
|
||||
|
||||
// ダミースレッド作成(CDC_InitとFS_InitでOS_Sleepが使用されているため)
|
||||
OS_CreateThread(&thread, DummyThread, NULL,
|
||||
(void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX);
|
||||
OS_WakeupThreadDirect(&thread);
|
||||
|
||||
///////////////////////////////
|
||||
// 強制AESモード
|
||||
AttachAES();
|
||||
|
||||
// フォーマットを行うためにFATFS_Initの前にHW_SD_NAND_CONTEXT_BUFのクリアが必要
|
||||
MI_CpuClear8((void *)HW_SD_NAND_CONTEXT_BUF, HW_SD_NAND_CONTEXT_BUF_END - HW_SD_NAND_CONTEXT_BUF);
|
||||
|
||||
// ファイルシステム初期化
|
||||
FS_Init(FS_DMA_NOT_USE);
|
||||
FS_CreateReadServerThread(THREAD_PRIO_FS);
|
||||
|
||||
if (OS_IsRunOnTwl() == TRUE)
|
||||
{
|
||||
InitializeFatfs(); // FATFS 初期化
|
||||
//InitializeNwm(); // NWM 初期化
|
||||
#ifndef SDK_NOCRYPTO
|
||||
AES_Init(); // AES 初期化
|
||||
#ifdef SDK_SEA
|
||||
SEA_Init();
|
||||
#endif // ifdef SDK_SEA
|
||||
#endif
|
||||
#if SDK_TS_VERSION > 200
|
||||
MCU_InitIrq(THREAD_PRIO_MCU); // MCU 初期化
|
||||
#endif
|
||||
}
|
||||
|
||||
///////////////////////////////
|
||||
/* 各ライブラリ初期化 */
|
||||
AES_Init(); // AES
|
||||
SEA_Init(); // SEA
|
||||
FS_Init(FS_DMA_NOT_USE); // FS for CARD
|
||||
FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD
|
||||
InitializeFatfs(); // FAT-FS
|
||||
// InitializeNwm(heapHandle); // TWL 無線
|
||||
MCU_InitIrq(THREAD_PRIO_MCU); // マイコン
|
||||
if (OSi_IsCodecTwlMode() == TRUE)
|
||||
{
|
||||
// CODEC 初期化
|
||||
InitializeCdc();
|
||||
// カメラ初期化
|
||||
//CAMERA_Init();
|
||||
/* CODEC が TWL モードでないとシャッター音を強制的に鳴らす
|
||||
機能が使用できません。この為、CODEC が TWL モードの場合
|
||||
にのみカメラライブラリを使用可能な状態にします。 */
|
||||
InitializeCdc(); // CODEC
|
||||
// CAMERA_Init(); // カメラ
|
||||
}
|
||||
|
||||
// サウンド初期化
|
||||
SND_Init(THREAD_PRIO_SND);
|
||||
if (OS_IsRunOnTwl() == TRUE)
|
||||
{
|
||||
SNDEX_Init(THREAD_PRIO_SNDEX);
|
||||
}
|
||||
|
||||
// RTC 初期化
|
||||
RTC_Init(THREAD_PRIO_RTC);
|
||||
|
||||
// 旧無線初期化
|
||||
//WVR_Begin(heapHandle);
|
||||
|
||||
// SPI 初期化
|
||||
// SND_Init(THREAD_PRIO_SND); // サウンド
|
||||
// SNDEX_Init(THREAD_PRIO_SNDEX); // サウンド拡張
|
||||
RTC_Init(THREAD_PRIO_RTC); // RTC
|
||||
// WVR_Begin(heapHandle); // NITRO 無線
|
||||
SPI_Init(THREAD_PRIO_SPI);
|
||||
|
||||
|
||||
///////////////
|
||||
KamiPxiInit();
|
||||
|
||||
// ダミースレッド破棄
|
||||
OS_KillThread(&thread, NULL);
|
||||
///////////////
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
OS_Halt();
|
||||
//---- check reset
|
||||
if (OS_IsResetOccurred())
|
||||
{
|
||||
OS_ResetSystem();
|
||||
}
|
||||
|
||||
/* ソフトウェアリセット要求は監視しない */
|
||||
/* AGB カートリッジの挿抜チェックは行わない */
|
||||
/* DS カードの挿抜チェックは行わない */
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: PrintDebugInfo
|
||||
Description: ARM7 コンポーネントの情報をデバッグ出力する。
|
||||
Arguments: None.
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
PrintDebugInfo(void)
|
||||
{
|
||||
OS_TPrintf("ARM7: This component is running on TWL.\n");
|
||||
OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n");
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: InitializeAllocateSystem
|
||||
Description: メモリ割当てシステムを初期化する。
|
||||
Arguments: None.
|
||||
Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。
|
||||
*---------------------------------------------------------------------------*/
|
||||
static OSHeapHandle
|
||||
InitializeAllocateSystem(void)
|
||||
{
|
||||
OSHeapHandle hh;
|
||||
void* subLo = (void*)OS_GetWramSubArenaLo();
|
||||
void* subHi = (void*)OS_GetWramSubArenaHi();
|
||||
void* privLo = (void*)OS_GetWramSubPrivArenaLo();
|
||||
void* privHi = (void*)OS_GetWramSubPrivArenaHi();
|
||||
|
||||
if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM))
|
||||
{
|
||||
/* SUB アリーナを SUBPRIV アリーナに吸収 */
|
||||
OS_SetWramSubArenaHi(subLo);
|
||||
OS_SetWramSubPrivArenaLo(subLo);
|
||||
privLo = subLo;
|
||||
}
|
||||
|
||||
/* アリーナを 0 クリア */
|
||||
MI_CpuClear8(privLo, (u32)privHi - (u32)privLo);
|
||||
|
||||
/* ヒープ作成初期化 */
|
||||
privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1);
|
||||
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi);
|
||||
if (hh < 0)
|
||||
{
|
||||
OS_Panic("ARM7: Failed to create heap.\n");
|
||||
}
|
||||
|
||||
/* カレントヒープに設定 */
|
||||
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||
|
||||
/* ヒープサイズの確認 */
|
||||
{
|
||||
u32 heapSize;
|
||||
|
||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||
|
||||
if (heapSize <= 0)
|
||||
{
|
||||
OS_Panic("ARM7: Failed to create heap.\n");
|
||||
}
|
||||
OS_TPrintf("ARM7: heap size [%d]\n", heapSize);
|
||||
}
|
||||
|
||||
return hh;
|
||||
}
|
||||
#include <twl/ltdwram_begin.h>
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: InitializeFatfs
|
||||
Description: FATFSライブラリを初期化する。
|
||||
Description: FATFSライブラリを初期化する。FATFS初期化関数内でスレッド休止
|
||||
する為、休止中動作するダミーのスレッドを立てる。
|
||||
Arguments: None.
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
@ -184,27 +230,52 @@ InitializeFatfs(void)
|
||||
OSThread thread;
|
||||
u32 stack[18];
|
||||
|
||||
// ダミースレッド作成
|
||||
/* ダミースレッド作成 */
|
||||
OS_CreateThread(&thread, DummyThread, NULL,
|
||||
(void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX);
|
||||
OS_WakeupThreadDirect(&thread);
|
||||
|
||||
// FATFSライブラリの初期化
|
||||
#ifndef SDK_NOCRYPTO
|
||||
if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS))
|
||||
#else
|
||||
if (FATFS_Init(FATFS_DMA_NOT_USE, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS))
|
||||
#endif
|
||||
/* FATFS 初期化 */
|
||||
/* [TODO] DMA は NOT_USE のままで良い? */
|
||||
if(!FATFS_Init(DMA_NO_FATFS, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS))
|
||||
{
|
||||
// do nothing
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
// ダミースレッド破棄
|
||||
/* ダミースレッド破棄 */
|
||||
OS_KillThread(&thread, NULL);
|
||||
}
|
||||
#include <twl/ltdwram_end.h>
|
||||
|
||||
#include <twl/ltdwram_begin.h>
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: InitializeNwm
|
||||
Description: NWMライブラリを初期化する。
|
||||
Arguments: hh - 利用可能なヒープのハンドルを指定。
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
InitializeNwm(OSHeapHandle hh)
|
||||
{
|
||||
NwmspInit nwmInit;
|
||||
|
||||
/* [TODO] 確保しているヒープ領域が新無線一式が必要としているメモリ量以上かのチェックが必要 */
|
||||
|
||||
nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND;
|
||||
nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT;
|
||||
nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO;
|
||||
|
||||
nwmInit.dmaNo = DMA_NO_NWM;
|
||||
nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV;
|
||||
nwmInit.drvHeap.handle = hh;
|
||||
|
||||
#ifdef WPA_BUILT_IN // WPA が組み込まれる場合、以下のメンバが追加される
|
||||
nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA;
|
||||
nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV;
|
||||
nwmInit.wpaHeap.handle = hh;
|
||||
#endif
|
||||
|
||||
NWMSP_Init(&nwmInit);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: InitializeCdc
|
||||
Description: CDCライブラリを初期化する。CDC初期化関数内でスレッド休止する
|
||||
@ -215,23 +286,35 @@ InitializeFatfs(void)
|
||||
static void
|
||||
InitializeCdc(void)
|
||||
{
|
||||
#if 1
|
||||
// CODEC 初期化
|
||||
OSThread thread;
|
||||
u32 stack[18];
|
||||
|
||||
// ランチャー経由で起動した場合はCODECは既に初期化されているため
|
||||
// コンポーネントがCODECを初期化する必要はありません。
|
||||
// 将来的にはバッサリと切る必要がありますが、
|
||||
// 暫定的にI2Sが有効かどうかでCODECが初期化済みかどうかを判定します。
|
||||
if (reg_SND_SMX_CNT & REG_SND_SMX_CNT_E_MASK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* ダミースレッド作成 */
|
||||
OS_CreateThread(&thread, DummyThread, NULL,
|
||||
(void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX);
|
||||
OS_WakeupThreadDirect(&thread);
|
||||
|
||||
/* CODEC 初期化 */
|
||||
CDC_Init();
|
||||
CDC_InitMic();
|
||||
// CDCi_DumpRegisters();
|
||||
#else
|
||||
/* [Debug] CODEC を DS モードで初期化 */
|
||||
*((u8*)(HW_TWL_ROM_HEADER_BUF + 0x01bf)) &= ~(0x01);
|
||||
CDC_Init();
|
||||
CDC_GoDsMode();
|
||||
OS_TPrintf("Codec mode changed to DS mode for debug.\n");
|
||||
#endif
|
||||
|
||||
/* ダミースレッド破棄 */
|
||||
OS_KillThread(&thread, NULL);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: DummyThread
|
||||
Description: CDCライブラリを初期化する際に立てるダミーのスレッド。
|
||||
Description: FATFSライブラリ、CDCライブラリを初期化する際に立てるダミーの
|
||||
スレッド。
|
||||
Arguments: arg - 使用しない。
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
@ -243,176 +326,333 @@ DummyThread(void* arg)
|
||||
{
|
||||
}
|
||||
}
|
||||
#include <twl/ltdwram_end.h>
|
||||
|
||||
//#ifdef WM_PRECALC_ALLOWEDCHANNEL
|
||||
//extern u16 WMSP_GetAllowedChannel(u16 bitField);
|
||||
//#endif
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ReadUserInfo
|
||||
|
||||
Description: NVRAMからユーザー情報を読み出し、共有領域に展開する。
|
||||
ミラーリングされているバッファが両方壊れている場合は、
|
||||
共有領域のユーザー情報格納場所をクリアする。
|
||||
|
||||
Arguments: None.
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void ReadUserInfo(void)
|
||||
{
|
||||
s32 offset;
|
||||
#ifdef NVRAM_CONFIG_DATA_EX_VERSION
|
||||
NVRAMConfigEx temp[2];
|
||||
#else
|
||||
NVRAMConfig temp[2];
|
||||
#endif
|
||||
s32 check;
|
||||
u8 *p = OS_GetSystemWork()->nvramUserInfo;
|
||||
|
||||
// オフセット読み出し
|
||||
#ifdef NVRAM_CONFIG_CONST_ADDRESS
|
||||
offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY;
|
||||
#else
|
||||
NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE,
|
||||
(u8 *)(&offset));
|
||||
offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT;
|
||||
#endif
|
||||
|
||||
#ifdef NVRAM_CONFIG_DATA_EX_VERSION
|
||||
// ミラーされた2つのデータを読み出し
|
||||
NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0]));
|
||||
NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx),
|
||||
(u8 *)(&temp[1]));
|
||||
// 2つの内どちらを使うか判断
|
||||
check = CheckCorrectNCDEx(temp);
|
||||
#else
|
||||
// ミラーされた2つのデータを読み出し
|
||||
NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0]));
|
||||
NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1]));
|
||||
// 2つの内どちらを使うか判断
|
||||
check = CheckCorrectNCD(temp);
|
||||
#endif
|
||||
|
||||
if (check >= 3)
|
||||
{
|
||||
// アプリケーションの起動を抑制
|
||||
MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig));
|
||||
}
|
||||
else if (check)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
// ニックネームを補正
|
||||
if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH)
|
||||
{
|
||||
for (i = NVRAM_CONFIG_NICKNAME_LENGTH;
|
||||
i > temp[check - 1].ncd.owner.nickname.length; i--)
|
||||
{
|
||||
temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000;
|
||||
}
|
||||
}
|
||||
// コメントを補正
|
||||
if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH)
|
||||
{
|
||||
for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length;
|
||||
i--)
|
||||
{
|
||||
temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000;
|
||||
}
|
||||
}
|
||||
// 共有領域にストア
|
||||
MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig));
|
||||
}
|
||||
else
|
||||
{
|
||||
// 共有領域をクリア
|
||||
MI_CpuClear32(p, sizeof(NVRAMConfig));
|
||||
}
|
||||
|
||||
// 無線MACアドレスをユーザー情報の後ろに展開
|
||||
{
|
||||
u8 wMac[6];
|
||||
|
||||
// NVRAMからMACアドレスを読み出し
|
||||
NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac);
|
||||
// 展開先アドレスを計算
|
||||
p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003));
|
||||
// 共有領域に展開
|
||||
MI_CpuCopy8(wMac, p, 6);
|
||||
}
|
||||
/*
|
||||
#ifdef WM_PRECALC_ALLOWEDCHANNEL
|
||||
// 使用可能チャンネルから使用許可チャンネルを計算
|
||||
{
|
||||
u16 enableChannel;
|
||||
u16 allowedChannel;
|
||||
|
||||
// 使用可能チャンネルを読み出し
|
||||
NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel));
|
||||
// 使用許可チャンネルを計算
|
||||
allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1));
|
||||
// 展開先アドレスを計算(MACアドレスの後ろの2バイト)
|
||||
p = (u8 *)((u32)p + 6);
|
||||
// 共有領域に展開
|
||||
*((u16 *)p) = allowedChannel;
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
#ifdef NVRAM_CONFIG_DATA_EX_VERSION
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: IsValidConfigEx
|
||||
|
||||
Description: ユーザー情報が拡張コンフィグに対応しているかどうかを調査する。
|
||||
|
||||
Arguments: None.
|
||||
|
||||
Returns: BOOL - 拡張ユーザー情報が有効な場合にTRUEを返す。
|
||||
無効である場合はFALSEを返す。
|
||||
*---------------------------------------------------------------------------*/
|
||||
static BOOL IsValidConfigEx(void)
|
||||
{
|
||||
u8 ipl2_type;
|
||||
|
||||
NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type);
|
||||
if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: InitializeAllocateSystem
|
||||
Description: メモリ割当てシステムを初期化する。
|
||||
Name: GetRomValidLanguage
|
||||
|
||||
Description: ROM内登録エリアの情報から、拡張言語コードの対応言語ビットマップ
|
||||
に関する情報を抽出する。
|
||||
|
||||
Arguments: None.
|
||||
Returns: OSHeapHandle - WRAM アリーナ上に確保されたヒープのハンドルを返す。
|
||||
|
||||
Returns: u16 - DSカード、もしくは マルチブートバイナリが対応している
|
||||
言語コードのビットマップを返す。DSカードが拡張言語
|
||||
コードに対応していない場合は 0 を返す。
|
||||
*---------------------------------------------------------------------------*/
|
||||
static OSHeapHandle
|
||||
InitializeAllocateSystem(void){
|
||||
OSHeapHandle hh;
|
||||
static u16 GetRomValidLanguage(void)
|
||||
{
|
||||
u16 ret = 0x0000;
|
||||
u8 langBit = OS_GetSystemWork()->rom_header[0x1d];
|
||||
|
||||
#ifdef SDK_TWLHYB
|
||||
if (OS_IsRunOnTwl() == TRUE)
|
||||
// ROM内登録エリアの拡張言語コードを確認
|
||||
if (langBit == ROMHEADER_FOR_CHINA_BIT)
|
||||
{
|
||||
void* basicLo = (void*)OS_GetSubPrivArenaLo();
|
||||
void* basicHi = (void*)OS_GetSubPrivArenaHi();
|
||||
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDMAIN_BSS_END, 32);
|
||||
void* extraHi = (void*)MATH_ROUNDDOWN(HW_MAIN_MEM_SUB, 32);
|
||||
|
||||
#if SDK_DEBUG
|
||||
// debug information
|
||||
OS_TPrintf("ARM7: MAIN arena basicLo = %p\n", basicLo);
|
||||
OS_TPrintf("ARM7: MAIN arena basicHi = %p\n", basicHi);
|
||||
OS_TPrintf("ARM7: MAIN arena extraLo = %p\n", extraLo);
|
||||
OS_TPrintf("ARM7: MAIN arena extraHi = %p\n", extraHi);
|
||||
#endif
|
||||
|
||||
// アリーナを 0 クリア
|
||||
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
|
||||
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
|
||||
|
||||
// メモリ割り当て初期化
|
||||
if ((u32)basicLo < (u32)extraLo)
|
||||
{
|
||||
basicLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, basicLo, extraHi, 1);
|
||||
// アリーナ下位アドレスを設定
|
||||
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, basicLo);
|
||||
}
|
||||
else
|
||||
{
|
||||
extraLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, extraLo, basicHi, 1);
|
||||
}
|
||||
|
||||
// ヒープ作成
|
||||
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, basicLo, basicHi);
|
||||
|
||||
if (hh < 0)
|
||||
{
|
||||
OS_Panic("ARM7: Failed to create MAIN heap.\n");
|
||||
}
|
||||
|
||||
// ヒープに拡張ブロックを追加
|
||||
OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi);
|
||||
// for CHINA
|
||||
ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
else if (langBit == ROMHEADER_FOR_KOREA_BIT)
|
||||
{
|
||||
void* lo = (void*)OS_GetSubPrivArenaLo();
|
||||
void* hi = (void*)OS_GetSubPrivArenaHi();
|
||||
|
||||
// アリーナを 0 クリア
|
||||
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
||||
|
||||
// メモリ割り当て初期化
|
||||
lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1);
|
||||
// アリーナ下位アドレスを設定
|
||||
OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo);
|
||||
|
||||
// ヒープ作成
|
||||
hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, lo, hi);
|
||||
|
||||
if (hh < 0)
|
||||
{
|
||||
OS_Panic("ARM7: Failed to MAIN create heap.\n");
|
||||
}
|
||||
// for KOREA
|
||||
ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL);
|
||||
}
|
||||
// カレントヒープに設定
|
||||
(void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||
// ヒープサイズの確認
|
||||
{
|
||||
u32 heapSize;
|
||||
|
||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh);
|
||||
OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize);
|
||||
}
|
||||
#ifdef SDK_TWLHYB
|
||||
if (OS_IsRunOnTwl() == TRUE)
|
||||
{
|
||||
void* basicLo = (void*)OS_GetWramSubPrivArenaLo();
|
||||
void* basicHi = (void*)OS_GetWramSubPrivArenaHi();
|
||||
void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDWRAM_BSS_END, 32);
|
||||
void* extraHi = (void*)MATH_ROUNDDOWN(HW_WRAM_A_HYB_END, 32);
|
||||
|
||||
#if SDK_DEBUG
|
||||
// debug information
|
||||
OS_TPrintf("ARM7: WRAM arena basicLo = %p\n", basicLo);
|
||||
OS_TPrintf("ARM7: WRAM arena basicHi = %p\n", basicHi);
|
||||
OS_TPrintf("ARM7: WRAM arena extraLo = %p\n", extraLo);
|
||||
OS_TPrintf("ARM7: WRAM arena extraHi = %p\n", extraHi);
|
||||
#endif
|
||||
|
||||
// アリーナを 0 クリア
|
||||
MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo);
|
||||
MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo);
|
||||
|
||||
// メモリ割り当て初期化
|
||||
if ((u32)basicLo < (u32)extraLo)
|
||||
{
|
||||
basicLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, basicLo, extraHi, 1);
|
||||
// アリーナ下位アドレスを設定
|
||||
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, basicLo);
|
||||
}
|
||||
else
|
||||
{
|
||||
extraLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, extraLo, basicHi, 1);
|
||||
}
|
||||
|
||||
// ヒープ作成
|
||||
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, basicLo, basicHi);
|
||||
|
||||
if (hh < 0)
|
||||
{
|
||||
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
||||
}
|
||||
|
||||
// ヒープに拡張ブロックを追加
|
||||
OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
void* lo = (void*)OS_GetWramSubPrivArenaLo();
|
||||
void* hi = (void*)OS_GetWramSubPrivArenaHi();
|
||||
|
||||
// アリーナを 0 クリア
|
||||
MI_CpuClear8(lo, (u32)hi - (u32)lo);
|
||||
|
||||
// メモリ割り当て初期化
|
||||
lo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, lo, hi, 1);
|
||||
// アリーナ下位アドレスを設定
|
||||
OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, lo);
|
||||
|
||||
// ヒープ作成
|
||||
hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, lo, hi);
|
||||
|
||||
if (hh < 0)
|
||||
{
|
||||
OS_Panic("ARM7: Failed to WRAM create heap.\n");
|
||||
}
|
||||
}
|
||||
|
||||
// カレントヒープに設定
|
||||
(void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||
|
||||
// ヒープサイズの確認
|
||||
{
|
||||
u32 heapSize;
|
||||
|
||||
heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh);
|
||||
if (WM_WL_HEAP_SIZE > heapSize)
|
||||
{
|
||||
OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE);
|
||||
}
|
||||
OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize);
|
||||
}
|
||||
|
||||
return hh;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: CheckCorrectNCDEx
|
||||
|
||||
Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。
|
||||
|
||||
Arguments: nvdsp - 比較するコンフィグデータ2つの配列。
|
||||
|
||||
Returns: s32 - 0: 両方不適切。
|
||||
1: 配列[ 0 ]が適切。
|
||||
2: 配列[ 1 ]が適切。
|
||||
3: アプリの起動を抑制すべき。
|
||||
*---------------------------------------------------------------------------*/
|
||||
static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp)
|
||||
{
|
||||
u16 i;
|
||||
u16 calc_crc;
|
||||
s32 crc_flag = 0;
|
||||
u16 saveCount;
|
||||
|
||||
// IPLが拡張言語コードに対応しているか
|
||||
if (IsValidConfigEx())
|
||||
{
|
||||
// IPLが拡張言語コードに対応している場合
|
||||
u16 rom_valid_language = GetRomValidLanguage();
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData));
|
||||
if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX))
|
||||
{
|
||||
// CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断
|
||||
calc_crc =
|
||||
SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx));
|
||||
if ((ncdsp[i].crc16_ex == calc_crc)
|
||||
&& ((0x0001 << ncdsp[i].ncd_ex.language) &
|
||||
(ncdsp[i].ncd_ex.valid_language_bitmap)))
|
||||
{
|
||||
// 拡張データ用 CRC が正しく、設定言語コードが対応言語コードに含まれる場合に正当と判断
|
||||
if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap)
|
||||
{
|
||||
// 拡張言語コードで通常言語コードを上書き
|
||||
ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language;
|
||||
}
|
||||
if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i].
|
||||
ncd_ex.valid_language_bitmap)
|
||||
{
|
||||
// ROM 内登録エリアに"中国語"拡張言語コードが設定されているが、
|
||||
// IPL2の対応言語コードに"中国語"拡張言語コードが含まれない場合は起動を抑制
|
||||
return 3;
|
||||
}
|
||||
crc_flag |= (1 << i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// IPLが拡張言語コードに対応していない場合
|
||||
u16 rom_valid_language = GetRomValidLanguage();
|
||||
|
||||
if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE))
|
||||
{
|
||||
// ROM 内登録エリアに"中国語"拡張言語コードが設定されている場合は起動を抑制
|
||||
return 3;
|
||||
}
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData));
|
||||
if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX))
|
||||
{
|
||||
// CRC が正しく saveCount 値が 0x80 未満のデータを正当と判断
|
||||
crc_flag |= (1 << i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 正当なデータのうちどのデータが有効かを判定する。
|
||||
switch (crc_flag)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
// 片方のCRCだけ正常
|
||||
return crc_flag;
|
||||
|
||||
case 3:
|
||||
// 両方ともCRCが正しければどちらが最新のデータか判断する。
|
||||
saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK);
|
||||
if (saveCount == ncdsp[1].saveCount)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 両方ともCRCが不正
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: CheckCorrectNCD
|
||||
|
||||
Description: ミラーリングされているユーザー情報のどちらを使うべきか判定する。
|
||||
|
||||
Arguments: nvdsp - 比較するコンフィグデータ2つの配列。
|
||||
|
||||
Returns: s32 - 0: 両方不適切。
|
||||
1: 配列[ 0 ]が適切。
|
||||
2: 配列[ 1 ]が適切。
|
||||
*---------------------------------------------------------------------------*/
|
||||
static s32 CheckCorrectNCD(NVRAMConfig *ncdsp)
|
||||
{
|
||||
u16 i;
|
||||
u16 calc_crc;
|
||||
s32 crc_flag = 0;
|
||||
u16 saveCount;
|
||||
|
||||
// 各ミラーデータのCRC & saveCount正当性チェック
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData));
|
||||
|
||||
if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX))
|
||||
{
|
||||
// CRCが正しく、saveCount値が0x80未満のデータを正当と判断。
|
||||
crc_flag |= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
// 正当なデータのうちどのデータが有効かを判定する。
|
||||
switch (crc_flag)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
// 片方のCRCだけ正常
|
||||
return crc_flag;
|
||||
|
||||
case 3:
|
||||
// 両方ともCRCが正しければどちらが最新のデータか判断する。
|
||||
saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK);
|
||||
if (saveCount == ncdsp[1].saveCount)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 両方ともCRCが不正
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: VBlankIntr
|
||||
Description: V ブランク割り込みベクタ。
|
||||
@ -420,7 +660,7 @@ InitializeAllocateSystem(void){
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
extern BOOL PMi_Initialized;
|
||||
void PM_SelfBlinkProc(void);
|
||||
extern void PM_SelfBlinkProc(void);
|
||||
|
||||
static void
|
||||
VBlankIntr(void)
|
||||
|
||||
@ -39,7 +39,7 @@ TARGET_BIN = NandInitializer.srl
|
||||
LCFILE_SPEC = ARM9-TS.lsf
|
||||
ROM_SPEC = main.rsf
|
||||
|
||||
MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/main
|
||||
MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/armadillo
|
||||
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
|
||||
|
||||
SRCS = main.c \
|
||||
|
||||
@ -114,7 +114,7 @@ Property
|
||||
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD]
|
||||
# don't have to edit
|
||||
#
|
||||
WramMapping $(MAKEROM_WRAM_MAPPING)
|
||||
WramMapping MAP_TS_SCR
|
||||
|
||||
#
|
||||
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]
|
||||
@ -124,17 +124,17 @@ Property
|
||||
#
|
||||
# CommonClientKey: launcher deliver common client Key [TRUE/FALSE]
|
||||
#
|
||||
#CommonClientKey TRUE
|
||||
CommonClientKey TRUE
|
||||
|
||||
#
|
||||
# HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotB TRUE
|
||||
HwAESSlotB TRUE
|
||||
|
||||
#
|
||||
# HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotC TRUE
|
||||
HwAESSlotC TRUE
|
||||
|
||||
#
|
||||
# SDCardAccess: sd card access control [TRUE/FALSE]
|
||||
|
||||
@ -69,7 +69,7 @@ TwlMain()
|
||||
OS_InitReset();
|
||||
GX_Init();
|
||||
FX_Init();
|
||||
SND_Init();
|
||||
// SND_Init();
|
||||
TP_Init();
|
||||
RTC_Init();
|
||||
|
||||
@ -121,15 +121,15 @@ TwlMain()
|
||||
kamiPadRead();
|
||||
|
||||
// コマンドフラッシュ
|
||||
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
|
||||
// (void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
|
||||
|
||||
// Vブランク待ち
|
||||
OS_WaitVBlankIntr();
|
||||
|
||||
// ARM7コマンド応答受信
|
||||
while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL)
|
||||
{
|
||||
}
|
||||
// while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL)
|
||||
// {
|
||||
// }
|
||||
|
||||
// フォントスクリーンデータロード
|
||||
kamiFontLoadScreenData();
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - tests - camera-test
|
||||
# Project: TwlSDK - components - armadillo.TWL
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
# Copyright 2008 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
@ -16,70 +16,60 @@
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
override TARGET_PLATFORM = TWL
|
||||
override TWL_PROC = ARM7
|
||||
override TWL_ARCHGEN = LIMITED
|
||||
##override TWL_PLATFORM = TS
|
||||
TWL_NO_STD_PCHDR = True
|
||||
##TWL_CODEGEN ?= ALL
|
||||
|
||||
ifndef TWLSDK_NOCRYPTO
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
override TARGET_PLATFORM = TWL
|
||||
override TWL_PROC = ARM7
|
||||
TWL_ARCHGEN = LIMITED
|
||||
TWL_NO_STD_PCHDR = True
|
||||
#TWL_CODEGEN = THUMB
|
||||
|
||||
TARGET_TEF = main.tef
|
||||
LCFILE_SPEC = ../../NandInitializer/ARM7.TWL/racoon.lsf
|
||||
LCFILE_TEMPLATE = ../../NandInitializer/ARM7.TWL/racoon.lcf.template
|
||||
LDRES_TEMPLATE = ../../NandInitializer/ARM7.TWL/racoon.response.template
|
||||
|
||||
SRCS = main.c \
|
||||
kami_pxi.c \
|
||||
formatter.c \
|
||||
nvram_misc.c \
|
||||
initScfg.c \
|
||||
nvram_misc.c
|
||||
|
||||
LINCLUDES = ../../NandInitializer/common/include \
|
||||
../../NandInitializer/ARM7.TWL/include \
|
||||
../common/include $(ROOT)/build/libraries/spi/ARM7/include
|
||||
TARGET_NAME = armadillo
|
||||
|
||||
TARGET_NEF = $(TARGET_NAME).tef
|
||||
LCFILE_SPEC = ../../NandInitializer/ARM7.TWL/$(TARGET_NAME).lsf
|
||||
LCFILE_TEMPLATE = ../../NandInitializer/ARM7.TWL/$(TARGET_NAME).lcf.template
|
||||
LDRES_TEMPLATE = ../../NandInitializer/ARM7.TWL/$(TARGET_NAME).response.template
|
||||
|
||||
SRCDIR = ../../NandInitializer/ARM7.TWL/src
|
||||
#LCFILE = # using default
|
||||
CRT0_O = crt0.SCR.TWL.o
|
||||
|
||||
# スタック不足防止の為、インライン展開せずにコンパイルする
|
||||
CCFLAGS_OPT = -O4 -inline off
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
ifdef TWLSDK_NOCRYPTO
|
||||
CCFLAGS += -DSDK_NOCRYPTO
|
||||
endif
|
||||
|
||||
ifndef TWLSDK_NOCRYPTO
|
||||
MAKELCF_FLAGS += -DUSE_CRYPTO_LIBS='libsea_sp$(TWL_LIBSUFFIX).a libcrypto_sp$(TWL_LIBSUFFIX).a'
|
||||
MACRO_FLAGS += -DSDK_SEA
|
||||
endif
|
||||
|
||||
ifeq ($(TWL_PLATFORM),BB)
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000'
|
||||
else
|
||||
MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000'
|
||||
endif
|
||||
MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA
|
||||
|
||||
MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \
|
||||
-DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a'
|
||||
|
||||
TWL_LIBS_EX = libcamera_sp$(TWL_LIBSUFFIX).a \
|
||||
libfatfs_sp$(TWL_LIBSUFFIX).a \
|
||||
libi2c_sp$(TWL_LIBSUFFIX).a \
|
||||
libcamera_sp$(TWL_LIBSUFFIX).a \
|
||||
libcdc_sp$(TWL_LIBSUFFIX).a \
|
||||
libtpex_sp$(TWL_LIBSUFFIX).a
|
||||
LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \
|
||||
../../NandInitializer/common/include \
|
||||
../../NandInitializer/ARM7.TWL/include
|
||||
|
||||
SRCDIR = ../../NandInitializer/ARM7.TWL/src
|
||||
|
||||
LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \
|
||||
libsdio_sp$(TWL_LIBSUFFIX).a \
|
||||
libathdrv_sp$(TWL_LIBSUFFIX).a \
|
||||
libwpa_sp$(TWL_LIBSUFFIX).a \
|
||||
|
||||
LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES)
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
endif #ifndef TWLSDK_NOCRYPTO
|
||||
|
||||
#===== End of Makefile =====
|
||||
|
||||
@ -39,11 +39,11 @@ TWL_ARCHGEN = LIMITED
|
||||
TITLEID_LO = NINA
|
||||
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad
|
||||
|
||||
TARGET_BIN = NandInitializerAuto.srl
|
||||
TARGET_BIN = NandInitializerAuto.srl
|
||||
LCFILE_SPEC = ../../NandInitializer/ARM9.TWL/ARM9-TS.lsf
|
||||
ROM_SPEC = ../../NandInitializer/ARM9.TWL/main.rsf
|
||||
|
||||
MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/main
|
||||
MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/armadillo
|
||||
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
|
||||
|
||||
SRCS = main.c \
|
||||
@ -67,15 +67,13 @@ SRCS = main.c \
|
||||
|
||||
LINCLUDES = ../../NandInitializer/common/include \
|
||||
../../NandInitializer/ARM9.TWL/include \
|
||||
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include \
|
||||
../../misc/include
|
||||
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include
|
||||
|
||||
SRCDIR = ../../NandInitializer/ARM9.TWL/src \
|
||||
../../HWInfoWriter/ARM9/src
|
||||
|
||||
#LCFILE = # using default
|
||||
|
||||
|
||||
ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),)
|
||||
ifdef USE_PRODUCT_KEY
|
||||
MACRO_FLAGS += -DUSE_PRODUCT_KEY
|
||||
|
||||
Loading…
Reference in New Issue
Block a user