mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-06-18 14:25:43 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@1 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
commit
b3e43b27d9
31
Makefile
Normal file
31
Makefile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - build
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
build \
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
32
build/Makefile
Normal file
32
build/Makefile
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - build
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
libraries \
|
||||||
|
tests \
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
194
build/buildtools/commondefs
Normal file
194
build/buildtools/commondefs
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - commondefs - common definitions for build system
|
||||||
|
# File: commondefs
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
ifndef TWLSDK_COMMONDEFS_
|
||||||
|
TWLSDK_COMMONDEFS_ = TRUE
|
||||||
|
|
||||||
|
NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止
|
||||||
|
|
||||||
|
EMPTY ?=
|
||||||
|
SPACE ?= $(EMPTY) $(EMPTY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# SDK Major Version
|
||||||
|
#
|
||||||
|
|
||||||
|
TWLSDK_VERSION_MAJOR ?= 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# CodeGen Target
|
||||||
|
#
|
||||||
|
# TWL_PLATFORM = [TEG/TS]
|
||||||
|
# TWL_MEMSIZE = [4M/8M]
|
||||||
|
# TWL_CODEGEN = [ARM/THUMB]
|
||||||
|
# TWL_PROC = [ARM9/ARM7]
|
||||||
|
#
|
||||||
|
|
||||||
|
TWL_PLATFORM ?= TS
|
||||||
|
TWL_MEMSIZE ?= 8M
|
||||||
|
TWL_CODEGEN ?= ARM
|
||||||
|
TWL_PROC ?= ARM9
|
||||||
|
|
||||||
|
NITRO_PLATFORM = $(TWL_PLATFORM)
|
||||||
|
NITRO_MEMSIZE = $(TWL_MEMSIZE)
|
||||||
|
NITRO_CODEGEN = $(TWL_CODEGEN)
|
||||||
|
NITRO_PROC = $(TWL_PROC)
|
||||||
|
|
||||||
|
ifndef TWL_CODEGEN_PROC
|
||||||
|
TWL_CODEGEN_PROC := $(TWL_PROC)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TWL_CODEGEN),ALL)
|
||||||
|
TWL_CODEGEN_ALL ?= TRUE
|
||||||
|
override TWL_CODEGEN = ARM
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TWL_CODEGEN),ARM)
|
||||||
|
TWL_CODEGEN_ARCH =
|
||||||
|
else # ($(TWL_CODEGEN),THUMB)
|
||||||
|
TWL_CODEGEN_ARCH = .thumb
|
||||||
|
endif
|
||||||
|
|
||||||
|
#
|
||||||
|
# Debugger Type
|
||||||
|
#
|
||||||
|
# one of [ISD/KMC/ARM]
|
||||||
|
#
|
||||||
|
|
||||||
|
TWL_DEBUGGER ?= KMC
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# TWL-SDK path settings
|
||||||
|
#
|
||||||
|
|
||||||
|
TWL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(TWLSDK_ROOT)))
|
||||||
|
TWL_BUILDTOOLSDIR := $(TWL_ROOT)/build/buildtools
|
||||||
|
TWL_BUILDSETUPDIR := $(TWL_ROOT)/build/buildsetup
|
||||||
|
TWL_INCDIR := $(TWL_ROOT)/include
|
||||||
|
TWL_TOOLSDIR := $(TWL_ROOT)/tools
|
||||||
|
TWL_COMPONENTSDIR := $(TWL_ROOT)/components
|
||||||
|
TWL_ADDINS ?= $(TWL_ROOT)/add-ins
|
||||||
|
|
||||||
|
TWL_NITROSDK_ROOT ?=$(shell cygpath -w $(NITROSDK_ROOT))
|
||||||
|
|
||||||
|
TWL_BUILDARCH ?= $(TWL_CODEGEN_PROC)-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH)
|
||||||
|
TWL_BUILDARCH_ARM9 := ARM9-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH)
|
||||||
|
TWL_BUILDARCH_ARM7 := ARM7-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH)
|
||||||
|
|
||||||
|
TWL_BUILDTYPE ?= $(TWL_BUILDARCH)/$(TWL_BUILD_DIR)
|
||||||
|
TWL_BUILDTYPE_ARM9 := $(TWL_BUILDARCH_ARM9)/$(TWL_BUILD_DIR)
|
||||||
|
TWL_BUILDTYPE_ARM7 := $(TWL_BUILDARCH_ARM7)/$(TWL_BUILD_DIR)
|
||||||
|
|
||||||
|
TWL_LIBARCH := $(TWL_CODEGEN_PROC)-$(TWL_PLATFORM)
|
||||||
|
TWL_LIBTYPE := $(TWL_LIBARCH)/$(TWL_BUILD_DIR)
|
||||||
|
TWL_LIBDIR := $(TWL_ROOT)/lib/$(TWL_LIBTYPE)
|
||||||
|
TWL_LIBSYSCALLDIR := $(TWL_ROOT)/lib/$(TWL_LIBARCH)/etc
|
||||||
|
TWL_LIBSUFFIX := .twl$(TWL_CODEGEN_ARCH)
|
||||||
|
|
||||||
|
|
||||||
|
TWL_SPECDIR := $(TWL_INCDIR)/twl/specfiles
|
||||||
|
DEFAULT_TWL_LCFILE := $(TWL_SPECDIR)/$(TWL_LIBARCH).lcf
|
||||||
|
DEFAULT_TWL_LCFILE_TEMPLATE := $(TWL_SPECDIR)/$(TWL_LIBARCH)$(LCF_SUFFIX_).lcf.template
|
||||||
|
DEFAULT_TWL_LCFILE_SPEC := $(TWL_SPECDIR)/$(TWL_LIBARCH).lsf
|
||||||
|
DEFAULT_TWL_ROM_SPEC := $(TWL_SPECDIR)/ROM-$(TWL_PLATFORM).rsf
|
||||||
|
|
||||||
|
|
||||||
|
### Compiler & Linker settings
|
||||||
|
|
||||||
|
LCFILE_TEMPLATE ?= $(DEFAULT_TWL_LCFILE_TEMPLATE)
|
||||||
|
LCFILE_SPEC ?= $(DEFAULT_TWL_LCFILE_SPEC)
|
||||||
|
|
||||||
|
|
||||||
|
### SDK Library settings
|
||||||
|
|
||||||
|
CRT0_O ?= crt0.o
|
||||||
|
|
||||||
|
ifeq ($(TWL_CODEGEN_PROC),ARM9)
|
||||||
|
|
||||||
|
TWL_LIBS ?= \
|
||||||
|
libos$(TWL_LIBSUFFIX).a \
|
||||||
|
libmi$(TWL_LIBSUFFIX).a \
|
||||||
|
libvlink$(TWL_LIBSUFFIX).a \
|
||||||
|
|
||||||
|
ifdef TWL_PROFILE_TYPE
|
||||||
|
TWL_LIBS += libos.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a
|
||||||
|
endif
|
||||||
|
|
||||||
|
else # ($(TWL_CODEGEN_PROC),ARM7)
|
||||||
|
|
||||||
|
TWL_LIBS ?= \
|
||||||
|
libos_sp$(TWL_LIBSUFFIX).a \
|
||||||
|
libmi_sp$(TWL_LIBSUFFIX).a \
|
||||||
|
libvlink_sp$(TWL_LIBSUFFIX).a \
|
||||||
|
|
||||||
|
ifdef TWL_PROFILE_TYPE
|
||||||
|
TWL_LIBS += libos_sp.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
### NITRO-commondefs
|
||||||
|
#
|
||||||
|
include $(NITROSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
### Global Library resettings
|
||||||
|
|
||||||
|
GINCLUDES := $(TWL_INCDIR) $(GINCLUDES)
|
||||||
|
GLIBRARY_DIRS := $(TWL_LIBDIR) $(GLIBRARY_DIRS)
|
||||||
|
GLIBRARIES := $(TWL_LIBS) \
|
||||||
|
$(filter-out libos$(NITRO_LIBSUFFIX).a libos_sp$(NITRO_LIBSUFFIX).a \
|
||||||
|
libmi$(NITRO_LIBSUFFIX).a libmi_sp$(NITRO_LIBSUFFIX).a \
|
||||||
|
,$(GLIBRARIES))
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# TWLSDK_INSTALL_ROOT
|
||||||
|
#
|
||||||
|
|
||||||
|
ifdef TWLSDK_INSTALL_ROOT
|
||||||
|
TWLSDK_INSTALL_ROOT_ := $(TWLSDK_INSTALL_ROOT)
|
||||||
|
else
|
||||||
|
TWLSDK_INSTALL_ROOT_ := $(TWLSDK_ROOT)
|
||||||
|
endif
|
||||||
|
|
||||||
|
TWL_INSTALL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(TWLSDK_INSTALL_ROOT_)))
|
||||||
|
TWL_INSTALL_INCDIR := $(TWL_INSTALL_ROOT)/include
|
||||||
|
TWL_INSTALL_TOOLSDIR := $(TWL_INSTALL_ROOT)/tools
|
||||||
|
TWL_INSTALL_LIBDIR := $(TWL_INSTALL_ROOT)/lib/$(TWL_LIBTYPE)
|
||||||
|
TWL_INSTALL_COMPONENTSDIR := $(TWL_INSTALL_ROOT)/components
|
||||||
|
TWL_INSTALL_ADDINS := $(TWL_INSTALL_ROOT)/add-ins
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Compiler flags
|
||||||
|
#
|
||||||
|
MACRO_FLAGS += -DSDK_DEBUGGER_$(TWL_DEBUGGER)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
### Work-around
|
||||||
|
#
|
||||||
|
# TEGではバイトアクセス不可のため
|
||||||
|
CCFLAGS_PROC += $(CW_AVOID_STRB)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
endif # TWLSDK_COMMONDEFS_
|
||||||
|
#----- End of commondefs -----
|
31
build/buildtools/modulerules
Normal file
31
build/buildtools/modulerules
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - modulerules - common rules for build system
|
||||||
|
# File: modulerules
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
ifndef TWLSDK_MODULERULES_
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
### NITRO-modulerules
|
||||||
|
#
|
||||||
|
include $(NITROSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
# .axf
|
||||||
|
$(BINDIR)/$(TARGET_BIN_BASENAME).axf: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(LDRES_FILE) $(CW_LIBCXX)
|
||||||
|
$(LD) $(LDFLAGS) $(LIBRARY_DIRS) @$(LDRES_FILE) $(LCFILE) -o $@
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
TWLSDK_MODULERULES_ = TRUE
|
||||||
|
endif # TWLSDK_MODULERULES_
|
||||||
|
#----- End of modulerules -----
|
38
build/libraries/Makefile
Normal file
38
build/libraries/Makefile
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
init \
|
||||||
|
os \
|
||||||
|
mi \
|
||||||
|
vlink \
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
export NITRO_BLXCHECKED = yes
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
59
build/libraries/init/ARM7/Makefile
Normal file
59
build/libraries/init/ARM7/Makefile
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries_sp - init
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= True
|
||||||
|
|
||||||
|
# Codegen for sub processer
|
||||||
|
TWL_PROC = ARM7
|
||||||
|
|
||||||
|
SRCS = crt0.c
|
||||||
|
|
||||||
|
TARGET_OBJ = crt0.o
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# DEBUG版ビルドの場合、RELEASE版でビルドして
|
||||||
|
# DEBUG版のライブラリを装います。
|
||||||
|
|
||||||
|
ifdef NITRO_DEBUG
|
||||||
|
NITRO_BUILD_TYPE = RELEASE
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
MACRO_FLAGS += -DSDK_NOINIT
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
274
build/libraries/init/ARM7/crt0.c
Normal file
274
build/libraries/init/ARM7/crt0.c
Normal file
@ -0,0 +1,274 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlSDK - library - init
|
||||||
|
File: crt0.c
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
$Log: $
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
#include <twl.h>
|
||||||
|
|
||||||
|
extern void NitroSpMain(void);
|
||||||
|
extern void OS_IrqHandler(void);
|
||||||
|
extern void *const _start_ModuleParams[];
|
||||||
|
static void do_autoload(void);
|
||||||
|
static void detect_main_memory_size(void);
|
||||||
|
void _start(void);
|
||||||
|
void _start_AutoloadDoneCallback(void *argv[]);
|
||||||
|
|
||||||
|
extern void __call_static_initializers(void);
|
||||||
|
extern void _fp_init(void);
|
||||||
|
|
||||||
|
// from LCF
|
||||||
|
extern void SDK_IRQ_STACKSIZE(void);
|
||||||
|
extern void SDK_STATIC_BSS_START(void); // static bss start address
|
||||||
|
extern void SDK_STATIC_BSS_END(void); // static bss start address
|
||||||
|
extern void SDK_AUTOLOAD_START(void); // autoload data will start from here
|
||||||
|
extern void SDK_AUTOLOAD_LIST(void); // start pointer to autoload information
|
||||||
|
extern void SDK_AUTOLOAD_LIST_END(void); // end pointer to autoload information
|
||||||
|
|
||||||
|
// volatile parameters in IPL's work memory
|
||||||
|
#define IPL_PARAM_CARD_ROM_HEADER 0x023FE940
|
||||||
|
#define IPL_PARAM_DOWNLOAD_PARAMETER 0x023FE904
|
||||||
|
|
||||||
|
//---- IRQ+SVC stack size in boot (this area is not cleared)
|
||||||
|
#define INITi_Initial_Stack 0x100
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: _start
|
||||||
|
|
||||||
|
Description: Start up
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
SDK_WEAK_SYMBOL asm void _start( void )
|
||||||
|
{
|
||||||
|
//---- set IME = 0
|
||||||
|
// ( use that LSB of HW_REG_BASE equal to 0 )
|
||||||
|
mov r12, #HW_REG_BASE
|
||||||
|
str r12, [r12, #REG_IME_OFFSET]
|
||||||
|
|
||||||
|
//---- clear memory
|
||||||
|
// private-WRAM (except program area)
|
||||||
|
ldr r1, =SDK_STATIC_BSS_END // r1= max(__bss_end__, #HW_PRV_WRAM)
|
||||||
|
mov r0, #HW_PRV_WRAM
|
||||||
|
cmp r0, r1
|
||||||
|
movpl r1, r0
|
||||||
|
ldr r2, =HW_PRV_WRAM_END - INITi_Initial_Stack
|
||||||
|
// r2= WRAM_END - r1 - svc+irq stack in boot
|
||||||
|
mov r0, #0 // r0= clear value
|
||||||
|
@1:
|
||||||
|
cmp r1, r2
|
||||||
|
stmltia r1!, {r0}
|
||||||
|
blt @1
|
||||||
|
|
||||||
|
//---- initialize stack pointer
|
||||||
|
// SVC mode
|
||||||
|
mov r0, #HW_PSR_SVC_MODE
|
||||||
|
msr cpsr_c, r0
|
||||||
|
ldr sp, =HW_PRV_WRAM_SVC_STACK_END
|
||||||
|
|
||||||
|
// IRQ mode
|
||||||
|
mov r0, #HW_PSR_IRQ_MODE
|
||||||
|
msr cpsr_c, r0
|
||||||
|
ldr r0, =HW_PRV_WRAM_IRQ_STACK_END
|
||||||
|
mov sp, r0
|
||||||
|
|
||||||
|
// System mode
|
||||||
|
ldr r1, =SDK_IRQ_STACKSIZE
|
||||||
|
sub r1, r0, r1
|
||||||
|
mov r0, #HW_PSR_SYS_MODE
|
||||||
|
msr cpsr_csfx, r0
|
||||||
|
sub sp, r1, #4 // 4byte for stack check code
|
||||||
|
|
||||||
|
// move parameters from IPL's work memory to shared area
|
||||||
|
ldr r0, =IPL_PARAM_CARD_ROM_HEADER
|
||||||
|
ldr r1, =HW_CARD_ROM_HEADER
|
||||||
|
add r2, r1, #HW_CARD_ROM_HEADER_SIZE
|
||||||
|
@1_1:
|
||||||
|
ldr r3, [r0], #4
|
||||||
|
str r3, [r1], #4
|
||||||
|
cmp r1, r2
|
||||||
|
bmi @1_1
|
||||||
|
ldr r0, =IPL_PARAM_DOWNLOAD_PARAMETER
|
||||||
|
add r2, r1, #HW_DOWNLOAD_PARAMETER_SIZE
|
||||||
|
@1_2:
|
||||||
|
ldr r3, [r0], #4
|
||||||
|
str r3, [r1], #4
|
||||||
|
cmp r1, r2
|
||||||
|
bmi @1_2
|
||||||
|
|
||||||
|
//---- load autoload block and initialize bss
|
||||||
|
// bl do_autoload
|
||||||
|
|
||||||
|
//---- fill static static bss with 0
|
||||||
|
ldr r0, =_start_ModuleParams
|
||||||
|
ldr r1, [r0, #12] // BSS segment start
|
||||||
|
ldr r2, [r0, #16] // BSS segment end
|
||||||
|
mov r0, #0
|
||||||
|
@2: cmp r1, r2
|
||||||
|
strcc r0, [r1], #4
|
||||||
|
bcc @2
|
||||||
|
|
||||||
|
//---- detect main memory size
|
||||||
|
bl detect_main_memory_size
|
||||||
|
|
||||||
|
//---- set interrupt vector
|
||||||
|
ldr r1, =HW_INTR_VECTOR_BUF
|
||||||
|
ldr r0, =OS_IrqHandler
|
||||||
|
str r0, [r1, #0]
|
||||||
|
|
||||||
|
#ifndef SDK_NOINIT
|
||||||
|
//---- for C++
|
||||||
|
bl _fp_init
|
||||||
|
bl NitroSpStartUp
|
||||||
|
bl __call_static_initializers
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- start (to 16bit code)
|
||||||
|
ldr r1, =NitroSpMain
|
||||||
|
ldr lr, =HW_RESET_VECTOR
|
||||||
|
|
||||||
|
bx r1
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: do_autoload
|
||||||
|
|
||||||
|
Description: put autoload data block according to autoload information,
|
||||||
|
and clear static bss by filling with 0.
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void *const _start_ModuleParams[] = {
|
||||||
|
(void *)SDK_AUTOLOAD_LIST,
|
||||||
|
(void *)SDK_AUTOLOAD_LIST_END,
|
||||||
|
(void *)SDK_AUTOLOAD_START,
|
||||||
|
(void *)SDK_STATIC_BSS_START,
|
||||||
|
(void *)SDK_STATIC_BSS_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static asm void do_autoload( void )
|
||||||
|
{
|
||||||
|
#define ptable r0
|
||||||
|
#define infop r1
|
||||||
|
#define infop_end r2
|
||||||
|
#define src r3
|
||||||
|
#define dest r4
|
||||||
|
#define dest_size r5
|
||||||
|
#define dest_end r6
|
||||||
|
#define tmp r7
|
||||||
|
|
||||||
|
ldr ptable, =_start_ModuleParams
|
||||||
|
ldr infop, [ptable, #0] // r1 = start pointer to autoload_info
|
||||||
|
ldr infop_end, [ptable, #4] // r2 = end pointer to autoload_info
|
||||||
|
ldr src, [ptable, #8] // r3 = autoload block
|
||||||
|
|
||||||
|
//---- put each blocks according to autoload information
|
||||||
|
@2:
|
||||||
|
cmp infop, infop_end // reach to end?
|
||||||
|
beq @skipout
|
||||||
|
|
||||||
|
ldr dest, [infop], #4 // dest
|
||||||
|
ldr dest_size, [infop], #4 // size
|
||||||
|
add dest_end, dest, dest_size // dest_end
|
||||||
|
@1:
|
||||||
|
cmp dest, dest_end
|
||||||
|
ldrmi tmp, [src], #4 // [dest++] <- [src++]
|
||||||
|
strmi tmp, [dest], #4
|
||||||
|
bmi @1
|
||||||
|
|
||||||
|
//---- fill bss with 0
|
||||||
|
ldr dest_size, [infop], #4 // size
|
||||||
|
add dest_end, dest, dest_size // bss end
|
||||||
|
mov tmp, #0
|
||||||
|
@4:
|
||||||
|
cmp dest, dest_end
|
||||||
|
strcc tmp, [dest], #4
|
||||||
|
bcc @4
|
||||||
|
beq @2
|
||||||
|
|
||||||
|
@skipout:
|
||||||
|
// r0 = autoload_params
|
||||||
|
b _start_AutoloadDoneCallback // Jump into the callback
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: _start_AutoloadDoneCallback
|
||||||
|
|
||||||
|
Description: hook for end of autoload (This is dummy target for DEBUGGER)
|
||||||
|
|
||||||
|
Arguments: argv: pointer for autoload parameters
|
||||||
|
argv[0] = SDK_AUTOLOAD_LIST
|
||||||
|
argv[1] = SDK_AUTOLOAD_LIST_END
|
||||||
|
argv[2] = SDK_AUTOLOAD_START
|
||||||
|
argv[3] = SDK_STATIC_BSS_START
|
||||||
|
argv[4] = SDK_STATIC_BSS_END
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
SDK_WEAK_SYMBOL asm void _start_AutoloadDoneCallback( void* argv[] )
|
||||||
|
{
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: detect_main_memory_size
|
||||||
|
|
||||||
|
Description: detect main memory size.
|
||||||
|
result is written into (u32*)HW_MMEMCHECKER_SUB.
|
||||||
|
value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB]
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#define OSi_IMAGE_DIFFERENCE 0x400000
|
||||||
|
|
||||||
|
static asm void detect_main_memory_size( void )
|
||||||
|
{
|
||||||
|
mov r0, #OS_CONSOLE_SIZE_4MB
|
||||||
|
mov r1, #0
|
||||||
|
|
||||||
|
ldr r2, =HW_MMEMCHECKER_SUB
|
||||||
|
sub r3, r2, #OSi_IMAGE_DIFFERENCE
|
||||||
|
@1:
|
||||||
|
strh r1, [r2]
|
||||||
|
ldrh r12, [r3]
|
||||||
|
cmp r1, r12
|
||||||
|
|
||||||
|
movne r0, #OS_CONSOLE_SIZE_8MB
|
||||||
|
bne @2
|
||||||
|
|
||||||
|
add r1, r1, #1
|
||||||
|
cmp r1, #2 // check 2 loop
|
||||||
|
bne @1
|
||||||
|
@2:
|
||||||
|
strh r0, [r2]
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: NitroSpStartUp
|
||||||
|
|
||||||
|
Description: hook for user start up
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
SDK_WEAK_SYMBOL void NitroSpStartUp(void)
|
||||||
|
{
|
||||||
|
}
|
43
build/libraries/init/ARM9/Makefile
Normal file
43
build/libraries/init/ARM9/Makefile
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - init
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= True
|
||||||
|
|
||||||
|
SRCS = crt0.c
|
||||||
|
TARGET_OBJ = crt0.o
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
631
build/libraries/init/ARM9/crt0.c
Normal file
631
build/libraries/init/ARM9/crt0.c
Normal file
@ -0,0 +1,631 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlSDK - library - init
|
||||||
|
File: crt0.c
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
$Log: $
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
#include <twl.h>
|
||||||
|
|
||||||
|
extern void NitroMain(void);
|
||||||
|
extern void OS_IrqHandler(void);
|
||||||
|
static void do_autoload(void);
|
||||||
|
static void init_cp15(void);
|
||||||
|
void _start(void);
|
||||||
|
static void INITi_CpuClear32(register u32 data, register void *destp, register u32 size);
|
||||||
|
extern void *const _start_ModuleParams[];
|
||||||
|
void _start_AutoloadDoneCallback(void *argv[]);
|
||||||
|
|
||||||
|
extern void __call_static_initializers(void);
|
||||||
|
extern void _fp_init(void);
|
||||||
|
|
||||||
|
// from LCF
|
||||||
|
extern void SDK_IRQ_STACKSIZE(void);
|
||||||
|
extern void SDK_AUTOLOAD_START(void); // autoload data will start from here
|
||||||
|
extern void SDK_AUTOLOAD_LIST(void); // start pointer to autoload information
|
||||||
|
extern void SDK_AUTOLOAD_LIST_END(void); // end pointer to autoload information
|
||||||
|
extern void SDK_STATIC_BSS_START(void); // static bss start address
|
||||||
|
extern void SDK_STATIC_BSS_END(void); // static bss end address
|
||||||
|
|
||||||
|
#include <nitro/version.h>
|
||||||
|
#define SDK_VERSION_ID ((u32)SDK_VERSION_MAJOR<<24|\
|
||||||
|
(u32)SDK_VERSION_MINOR<<16|\
|
||||||
|
(u32)SDK_VERSION_RELSTEP)
|
||||||
|
|
||||||
|
#define SDK_NITROCODE_LE 0x2106c0de
|
||||||
|
#define SDK_NITROCODE_BE 0xdec00621
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: _start
|
||||||
|
|
||||||
|
Description: Start up
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#define INITi_HW_DTCM SDK_AUTOLOAD_DTCM_START
|
||||||
|
|
||||||
|
SDK_WEAK_SYMBOL asm void _start( void )
|
||||||
|
{
|
||||||
|
//---- set IME = 0
|
||||||
|
// ( use that LSB of HW_REG_BASE equal to 0 )
|
||||||
|
mov r12, #HW_REG_BASE
|
||||||
|
str r12, [r12, #REG_IME_OFFSET]
|
||||||
|
|
||||||
|
//---- initialize cp15
|
||||||
|
bl init_cp15
|
||||||
|
|
||||||
|
//---- initialize stack pointer
|
||||||
|
// SVC mode
|
||||||
|
mov r0, #HW_PSR_SVC_MODE
|
||||||
|
msr cpsr_c, r0
|
||||||
|
ldr r0, =INITi_HW_DTCM
|
||||||
|
add r0, r0, #0x3fc0
|
||||||
|
mov sp, r0
|
||||||
|
|
||||||
|
// IRQ mode
|
||||||
|
mov r0, #HW_PSR_IRQ_MODE
|
||||||
|
msr cpsr_c, r0
|
||||||
|
ldr r0, =INITi_HW_DTCM
|
||||||
|
add r0, r0, #0x3fc0
|
||||||
|
sub r0, r0, #HW_SVC_STACK_SIZE
|
||||||
|
sub sp, r0, #4 // 4byte for stack check code
|
||||||
|
tst sp, #4
|
||||||
|
subeq sp, sp, #4 // for 8byte-alignment
|
||||||
|
|
||||||
|
// System mode
|
||||||
|
ldr r1, =SDK_IRQ_STACKSIZE
|
||||||
|
sub r1, r0, r1
|
||||||
|
mov r0, #HW_PSR_SYS_MODE
|
||||||
|
msr cpsr_csfx, r0
|
||||||
|
sub sp, r1, #4 // 4byte for stack check code
|
||||||
|
|
||||||
|
//---- clear memory
|
||||||
|
// DTCM (16KB)
|
||||||
|
mov r0, #0
|
||||||
|
ldr r1, =INITi_HW_DTCM
|
||||||
|
mov r2, #HW_DTCM_SIZE
|
||||||
|
bl INITi_CpuClear32
|
||||||
|
|
||||||
|
// BG/OBJ palette (1KB)
|
||||||
|
mov r0, #0
|
||||||
|
ldr r1, =HW_PLTT
|
||||||
|
mov r2, #HW_PLTT_SIZE
|
||||||
|
bl INITi_CpuClear32
|
||||||
|
|
||||||
|
// OAM (1KB)
|
||||||
|
mov r0, #0x0200
|
||||||
|
ldr r1, =HW_OAM
|
||||||
|
mov r2, #HW_OAM_SIZE
|
||||||
|
bl INITi_CpuClear32
|
||||||
|
|
||||||
|
//---- load autoload block and initialize bss
|
||||||
|
ldr r1, =_start_ModuleParams
|
||||||
|
ldr r0, [r1, #20] // r0 = bottom of compressed data
|
||||||
|
bl MIi_UncompressBackward
|
||||||
|
// bl do_autoload
|
||||||
|
|
||||||
|
//---- fill static static bss with 0
|
||||||
|
ldr r0, =_start_ModuleParams
|
||||||
|
ldr r1, [r0, #12] // BSS segment start
|
||||||
|
ldr r2, [r0, #16] // BSS segment end
|
||||||
|
mov r3, r1 // for next step(flush bss)
|
||||||
|
mov r0, #0
|
||||||
|
@1: cmp r1, r2
|
||||||
|
strcc r0, [r1], #4
|
||||||
|
bcc @1
|
||||||
|
|
||||||
|
//---- flush static bss region
|
||||||
|
// (r0 == #0, r3 == _start_ModuleParams::BSS_segment_start)
|
||||||
|
bic r1, r3, #HW_CACHE_LINE_SIZE - 1
|
||||||
|
@cacheflush:
|
||||||
|
mcr p15, 0, r0, c7, c10, 4 // wait writebuffer empty
|
||||||
|
mcr p15, 0, r1, c7, c5, 1 // ICache
|
||||||
|
mcr p15, 0, r1, c7, c14, 1 // DCache
|
||||||
|
add r1, r1, #HW_CACHE_LINE_SIZE
|
||||||
|
cmp r1, r2
|
||||||
|
blt @cacheflush
|
||||||
|
|
||||||
|
// print buffer (used for ARM7's printing)
|
||||||
|
ldr r1, =HW_COMPONENT_PARAM
|
||||||
|
str r0, [r1, #0]
|
||||||
|
|
||||||
|
//---- set interrupt vector
|
||||||
|
ldr r1, =INITi_HW_DTCM
|
||||||
|
add r1, r1, #0x3fc0
|
||||||
|
add r1, r1, #HW_DTCM_SYSRV_OFS_INTR_VECTOR
|
||||||
|
ldr r0, =OS_IrqHandler
|
||||||
|
str r0, [r1, #0]
|
||||||
|
|
||||||
|
#ifndef SDK_NOINIT
|
||||||
|
//---- for C++
|
||||||
|
bl _fp_init
|
||||||
|
bl NitroStartUp
|
||||||
|
bl __call_static_initializers
|
||||||
|
#endif
|
||||||
|
//---- start (to 16bit code)
|
||||||
|
ldr r1, =NitroMain
|
||||||
|
ldr lr, =HW_RESET_VECTOR
|
||||||
|
|
||||||
|
tst sp, #4
|
||||||
|
subne sp, sp, #4 // for 8byte-alignment
|
||||||
|
bx r1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: INITi_CpuClear32
|
||||||
|
|
||||||
|
Description: fill memory with specified data.
|
||||||
|
32bit version
|
||||||
|
|
||||||
|
Arguments: data : fill data
|
||||||
|
destp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static asm void INITi_CpuClear32( register u32 data, register void *destp, register u32 size )
|
||||||
|
{
|
||||||
|
add r12, r1, r2 // r12: destEndp = destp + size
|
||||||
|
@20:
|
||||||
|
cmp r1, r12 // while (destp < destEndp)
|
||||||
|
stmltia r1!, {r0} // *((vu32 *)(destp++)) = data
|
||||||
|
blt @20
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: _start_ModuleParams
|
||||||
|
|
||||||
|
Description: autoload/compress/arguments data block
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void *const _start_ModuleParams[] = {
|
||||||
|
(void *)SDK_AUTOLOAD_LIST,
|
||||||
|
(void *)SDK_AUTOLOAD_LIST_END,
|
||||||
|
(void *)SDK_AUTOLOAD_START,
|
||||||
|
(void *)SDK_STATIC_BSS_START,
|
||||||
|
(void *)SDK_STATIC_BSS_END,
|
||||||
|
(void *)0, // CompressedStaticEnd
|
||||||
|
(void *)0, //SDK_VERSION_ID, // SDK version info
|
||||||
|
(void *)SDK_NITROCODE_BE, // Checker 1
|
||||||
|
(void *)SDK_NITROCODE_LE, // Checker 2
|
||||||
|
};
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: MIi_UncompressBackward
|
||||||
|
|
||||||
|
Description: Uncompress special archive for module compression
|
||||||
|
|
||||||
|
Arguments: bottom = Bottom adrs of packed archive + 1
|
||||||
|
bottom[-8..-6] = offset for top of compressed data
|
||||||
|
inp_top = bottom - bottom[-8..-6]
|
||||||
|
bottom[-5] = offset for bottom of compressed data
|
||||||
|
inp = bottom - bottom[-5]
|
||||||
|
bottom[-4..-1] = offset for bottom of original data
|
||||||
|
outp = bottom + bottom[-4..-1]
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
u32 bufferTop:24;
|
||||||
|
u32 compressBottom:8;
|
||||||
|
u32 originalBottom;
|
||||||
|
} CompFooter;
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void MIi_UncompressBackward( register void* bottom )
|
||||||
|
{
|
||||||
|
#define data r0
|
||||||
|
#define inp_top r1
|
||||||
|
#define outp r2
|
||||||
|
#define inp r3
|
||||||
|
#define outp_save r4
|
||||||
|
#define flag r5
|
||||||
|
#define count8 r6
|
||||||
|
#define index r7
|
||||||
|
#define len r12
|
||||||
|
cmp bottom, #0
|
||||||
|
beq @exit
|
||||||
|
stmfd sp!, {r4-r7}
|
||||||
|
ldmdb bottom, {r1-r2}
|
||||||
|
add outp, bottom, outp
|
||||||
|
sub inp, bottom, inp_top, LSR #24
|
||||||
|
bic inp_top, inp_top, #0xff000000
|
||||||
|
sub inp_top, bottom, inp_top
|
||||||
|
mov outp_save, outp
|
||||||
|
@loop:
|
||||||
|
cmp inp, inp_top // exit if inp==inp_top
|
||||||
|
ble @end_loop
|
||||||
|
ldrb flag, [inp, #-1]! // r4 = compress_flag = *--inp
|
||||||
|
mov count8, #8
|
||||||
|
@loop8:
|
||||||
|
subs count8, count8, #1
|
||||||
|
blt @loop
|
||||||
|
tst flag, #0x80
|
||||||
|
bne @blockcopy
|
||||||
|
@bytecopy:
|
||||||
|
ldrb data, [inp, #-1]!
|
||||||
|
#ifdef SDK_TEG
|
||||||
|
sub outp, outp, #1
|
||||||
|
swpb data, data, [outp]
|
||||||
|
#else
|
||||||
|
strb data, [outp, #-1]! // Copy 1 byte
|
||||||
|
#endif
|
||||||
|
b @joinhere
|
||||||
|
@blockcopy:
|
||||||
|
ldrb len, [inp, #-1]!
|
||||||
|
ldrb index, [inp, #-1]!
|
||||||
|
orr index, index, len, LSL #8
|
||||||
|
bic index, index, #0xf000
|
||||||
|
add index, index, #0x0002
|
||||||
|
add len, len, #0x0020
|
||||||
|
@patterncopy:
|
||||||
|
ldrb data, [outp, index]
|
||||||
|
#ifdef SDK_TEG
|
||||||
|
sub outp, outp, #1
|
||||||
|
swpb data, data, [outp]
|
||||||
|
#else
|
||||||
|
strb data, [outp, #-1]!
|
||||||
|
#endif
|
||||||
|
subs len, len, #0x0010
|
||||||
|
bge @patterncopy
|
||||||
|
|
||||||
|
@joinhere:
|
||||||
|
cmp inp, inp_top
|
||||||
|
mov flag, flag, LSL #1
|
||||||
|
bgt @loop8
|
||||||
|
@end_loop:
|
||||||
|
|
||||||
|
// DC_FlushRange & IC_InvalidateRange
|
||||||
|
mov r0, #0
|
||||||
|
bic inp, inp_top, #HW_CACHE_LINE_SIZE - 1
|
||||||
|
@cacheflush:
|
||||||
|
mcr p15, 0, r0, c7, c10, 4 // wait writebuffer empty
|
||||||
|
mcr p15, 0, inp, c7, c5, 1 // ICache
|
||||||
|
mcr p15, 0, inp, c7, c14, 1 // DCache
|
||||||
|
add inp, inp, #HW_CACHE_LINE_SIZE
|
||||||
|
cmp inp, outp_save
|
||||||
|
blt @cacheflush
|
||||||
|
|
||||||
|
ldmfd sp!, {r4-r7}
|
||||||
|
@exit bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: do_autoload
|
||||||
|
|
||||||
|
Description: put autoload data block according to autoload information,
|
||||||
|
and clear static bss by filling with 0.
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static asm void do_autoload( void )
|
||||||
|
{
|
||||||
|
#define ptable r0
|
||||||
|
#define infop r1
|
||||||
|
#define infop_end r2
|
||||||
|
#define src r3
|
||||||
|
#define dest r4
|
||||||
|
#define dest_begin r5
|
||||||
|
#define dest_end r6
|
||||||
|
#define tmp r7
|
||||||
|
|
||||||
|
ldr ptable, =_start_ModuleParams
|
||||||
|
ldr infop, [ptable, #0] // r1 = start pointer to autoload_info
|
||||||
|
ldr infop_end, [ptable, #4] // r2 = end pointer to autoload_info
|
||||||
|
ldr src, [ptable, #8] // r3 = autoload block
|
||||||
|
|
||||||
|
@2:
|
||||||
|
cmp infop, infop_end // reach to end?
|
||||||
|
beq @skipout
|
||||||
|
|
||||||
|
ldr dest_begin,[infop], #4 // dest_begin
|
||||||
|
ldr tmp, [infop], #4 // size
|
||||||
|
add dest_end, dest_begin, tmp // dest_end
|
||||||
|
mov dest, dest_begin // dest working pointer
|
||||||
|
@1:
|
||||||
|
cmp dest, dest_end
|
||||||
|
ldrmi tmp, [src], #4 // [dest++] <- [src++]
|
||||||
|
strmi tmp, [dest], #4
|
||||||
|
bmi @1
|
||||||
|
|
||||||
|
//---- fill bss with 0
|
||||||
|
ldr tmp, [infop], #4 // size
|
||||||
|
add dest_end, dest, tmp // bss end
|
||||||
|
mov tmp, #0
|
||||||
|
@3:
|
||||||
|
cmp dest, dest_end
|
||||||
|
strcc tmp, [dest], #4
|
||||||
|
bcc @3
|
||||||
|
|
||||||
|
//---- cache work (DC_FlushRange & IC_InvalidateRange)
|
||||||
|
bic dest, dest_begin, #HW_CACHE_LINE_SIZE - 1
|
||||||
|
@cacheflush:
|
||||||
|
mcr p15, 0, tmp, c7, c10, 4 /* wait writebuffer empty */
|
||||||
|
mcr p15, 0, dest, c7, c5, 1 // ICache
|
||||||
|
mcr p15, 0, dest, c7, c14, 1 // DCache
|
||||||
|
add dest, dest, #HW_CACHE_LINE_SIZE
|
||||||
|
cmp dest, dest_end
|
||||||
|
blt @cacheflush
|
||||||
|
|
||||||
|
b @2
|
||||||
|
|
||||||
|
@skipout:
|
||||||
|
// r0 = _start_ModuleParams
|
||||||
|
b _start_AutoloadDoneCallback // Jump into the callback
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: _start_AutoloadDoneCallback
|
||||||
|
|
||||||
|
Description: hook for end of autoload (This is dummy target for DEBUGGER)
|
||||||
|
|
||||||
|
Arguments: argv: pointer for autoload parameters
|
||||||
|
argv[0] = SDK_AUTOLOAD_LIST
|
||||||
|
argv[1] = SDK_AUTOLOAD_LIST_END
|
||||||
|
argv[2] = SDK_AUTOLOAD_START
|
||||||
|
argv[3] = SDK_STATIC_BSS_START
|
||||||
|
argv[4] = SDK_STATIC_BSS_END
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
SDK_WEAK_SYMBOL asm void _start_AutoloadDoneCallback( void* argv[] )
|
||||||
|
{
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// システム制御コプロセッサ 初期化
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
static asm void init_cp15(void)
|
||||||
|
{
|
||||||
|
// プロテクションユニット/キャッシュ/TCM ディセーブル
|
||||||
|
|
||||||
|
mrc p15, 0, r0, c1, c0, 0
|
||||||
|
ldr r1, =HW_C1_ICACHE_ENABLE | HW_C1_DCACHE_ENABLE \
|
||||||
|
| HW_C1_ITCM_ENABLE | HW_C1_DTCM_ENABLE \
|
||||||
|
| HW_C1_ITCM_LOAD_MODE | HW_C1_DTCM_LOAD_MODE \
|
||||||
|
| HW_C1_LD_INTERWORK_DISABLE \
|
||||||
|
| HW_C1_PROTECT_UNIT_ENABLE
|
||||||
|
bic r0, r0, r1
|
||||||
|
mcr p15, 0, r0, c1, c0, 0
|
||||||
|
|
||||||
|
// キャッシュ無効化
|
||||||
|
mov r0, #0
|
||||||
|
mcr p15, 0, r0, c7, c5, 0 // 命令キャッシュ
|
||||||
|
mcr p15, 0, r0, c7, c6, 0 // データキャッシュ
|
||||||
|
|
||||||
|
// ライトバッファ エンプティ待ち
|
||||||
|
mcr p15, 0, r0, c7, c10, 4
|
||||||
|
|
||||||
|
/*
|
||||||
|
; Region G: BACK_GROUND: Base = 0x0, Size = 4GB, I:NC NB / D:NC NB, I:NA / D:NA
|
||||||
|
; Region 0: IO_VRAM: Base = 0x04000000, Size = 64MB, I:NC NB / D:NC NB, I:RW / D:RW
|
||||||
|
; Region 1Rel: MAIN_MEM: Base = 0x02000000, Size = 8MB*, I:Cach Buf / D:Cach Buf, I:RW / D:RW
|
||||||
|
; Region 1Dbg: MAIN_MEM: Base = 0x02000000, Size = 8MB, I:Cach Buf / D:Cach Buf, I:RW / D:RW
|
||||||
|
; (* Size will be arranged in OS_InitArena(). )
|
||||||
|
; Region 2Rel: SOUND_DATA: Base = 0x02380000, Size = 512KB, I:NC NB / D:NC NB, I:NA / D:NA
|
||||||
|
; Region 2D4M: SOUND_DATA: Base = 0x02300000, Size = 1MB, I:NC NB / D:NC NB, I:NA / D:NA
|
||||||
|
; Region 2D8M: SOUND_DATA: Base = 0x02600000, Size = 2MB, I:NC NB / D:NC NB, I:NA / D:NA
|
||||||
|
; Region 3: CARTRIDGE: Base = 0x08000000, Size = 128MB, I:NC NB / D:NC NB, I:NA / D:RW
|
||||||
|
; Region 4: DTCM: Base = SOUND_DATA, Size = 16KB, I:NC NB / D:NC NB, I:NA / D:RW
|
||||||
|
; Region 5: ITCM: Base = 0x01000000, Size = 16MB, I:NC NB / D:NC NB, I:RW / D:RW
|
||||||
|
|
||||||
|
; Region 6: BIOS: Base = 0xffff0000, Size = 32KB, I:Cach NB / D:Cach NB, I:RO / D:RO
|
||||||
|
; Region 7: SHARE_WORK: Base = 0x027ff000, Size = 4KB, I:NC NB / D:NC NB, I:NA / D:RW
|
||||||
|
;(Region 7: DBG_RESERVE: Base = 0x02700000, Size = 1MB, I:NC NB / D:NC NB, I:RW / D:RW)
|
||||||
|
*/
|
||||||
|
#define SET_PROTECTION_A( id, adr, siz ) ldr r0, =(adr|HW_C6_PR_##siz|HW_C6_PR_ENABLE)
|
||||||
|
#define SET_PROTECTION_B( id, adr, siz ) mcr p15, 0, r0, c6, id, 0
|
||||||
|
#define REGION_BIT(a,b,c,d,e,f,g,h) (((a)<<0)|((b)<<1)|((c)<<2)|((d)<<3)|((e)<<4)|((f)<<5)|((g)<<6)|((h)<<7))
|
||||||
|
#define REGION_ACC(a,b,c,d,e,f,g,h) (((a)<<0)|((b)<<4)|((c)<<8)|((d)<<12)|((e)<<16)|((f)<<20)|((g)<<24)|((h)<<28))
|
||||||
|
#define NA 0
|
||||||
|
#define RW 1
|
||||||
|
#define RO 5
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// メモリリージョン初期化
|
||||||
|
//
|
||||||
|
//---- I/O レジスタ & VRAM 等
|
||||||
|
SET_PROTECTION_A( c0, HW_IOREG, 64MB )
|
||||||
|
SET_PROTECTION_B( c0, HW_IOREG, 64MB )
|
||||||
|
|
||||||
|
//---- メインメモリ
|
||||||
|
SET_PROTECTION_A( c1, HW_MAIN_MEM_MAIN, 8MB )
|
||||||
|
SET_PROTECTION_B( c1, HW_MAIN_MEM_MAIN, 8MB )
|
||||||
|
|
||||||
|
//---- サウンドデータ領域
|
||||||
|
#if HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x1000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 4KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 4KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x2000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 8KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 8KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x4000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 16KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 16KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x8000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 32KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 32KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x10000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 64KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 64KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x20000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 128KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 128KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x40000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 256KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 256KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x80000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 512KB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 512KB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x100000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 1MB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 1MB )
|
||||||
|
#elif HW_MAIN_MEM_SUB_SIZE+HW_MAIN_MEM_SHARED_SIZE == 0x200000
|
||||||
|
SET_PROTECTION_A( c2, HW_MAIN_MEM_SUB, 2MB )
|
||||||
|
SET_PROTECTION_B( c2, HW_MAIN_MEM_SUB, 2MB )
|
||||||
|
#else
|
||||||
|
#pragma message(ERROR: Size unmatch HW_MAIN_MEM_SUB_SIZE)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- カートリッジ又は他の用途
|
||||||
|
// CPU 内部ワーク RAM 等
|
||||||
|
SET_PROTECTION_A( c3, HW_CTRDG_ROM, 128MB )
|
||||||
|
SET_PROTECTION_B( c3, HW_CTRDG_ROM, 128MB )
|
||||||
|
|
||||||
|
//---- データ TCM
|
||||||
|
// + CPU 内部ワーク RAM の場合あり
|
||||||
|
//#if (HW_DTCM & 0x3FFF) != 0
|
||||||
|
//#pragma message(ERROR: HW_DTCM need to be aligned 16KB!)
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
// SET_PROTECTION_A( c4, HW_DTCM, 16KB )
|
||||||
|
ldr r0, =SDK_AUTOLOAD_DTCM_START
|
||||||
|
orr r0, r0, #HW_C6_PR_16KB
|
||||||
|
orr r0, r0, #HW_C6_PR_ENABLE
|
||||||
|
SET_PROTECTION_B( c4, HW_DTCM, 16KB )
|
||||||
|
|
||||||
|
//---- 命令 TCM
|
||||||
|
// データ TCM より優先が高い、メインメモリ領域までのイメージ
|
||||||
|
SET_PROTECTION_A( c5, HW_ITCM_IMAGE, 16MB )
|
||||||
|
SET_PROTECTION_B( c5, HW_ITCM_IMAGE, 16MB )
|
||||||
|
|
||||||
|
//---- BIOS
|
||||||
|
SET_PROTECTION_A( c6, HW_BIOS, 32KB )
|
||||||
|
SET_PROTECTION_B( c6, HW_BIOS, 32KB )
|
||||||
|
|
||||||
|
//---- SHARED CPU 間通信ワーク領域
|
||||||
|
SET_PROTECTION_A( c7, HW_MAIN_MEM_SHARED, 4KB )
|
||||||
|
SET_PROTECTION_B( c7, HW_MAIN_MEM_SHARED, 4KB )
|
||||||
|
|
||||||
|
#if HW_MAIN_MEM_SHARED_SIZE != 0x1000
|
||||||
|
#pragma message(ERROR: Size unmatch HW_MAIN_MEM_SHARED_SIZE)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// 命令TCM 設定
|
||||||
|
//
|
||||||
|
mov r0, #HW_C9_TCMR_32MB
|
||||||
|
mcr p15, 0, r0, c9, c1, 1
|
||||||
|
|
||||||
|
//
|
||||||
|
// データTCM 設定
|
||||||
|
//
|
||||||
|
ldr r0, =INITi_HW_DTCM
|
||||||
|
orr r0, r0, #HW_C9_TCMR_16KB
|
||||||
|
mcr p15, 0, r0, c9, c1, 0
|
||||||
|
|
||||||
|
//
|
||||||
|
// 命令キャッシュ イネーブル (リージョン設定)
|
||||||
|
// 1: MAIN_MEM
|
||||||
|
// 6: BIOS
|
||||||
|
//
|
||||||
|
mov r0, #REGION_BIT(0,1,0,0,0,0,1,0)
|
||||||
|
mcr p15, 0, r0, c2, c0, 1
|
||||||
|
|
||||||
|
//
|
||||||
|
// データキャッシュ イネーブル (リージョン設定)
|
||||||
|
// 1: MAIN_MEM
|
||||||
|
// 6: BIOS
|
||||||
|
//
|
||||||
|
mov r0, #REGION_BIT(0,1,0,0,0,0,1,0)
|
||||||
|
mcr p15, 0, r0, c2, c0, 0
|
||||||
|
|
||||||
|
//
|
||||||
|
// ライトバッファ イネーブル(リージョン設定)
|
||||||
|
// 1: MAIN_MEM
|
||||||
|
//
|
||||||
|
mov r0, #REGION_BIT(0,1,0,0,0,0,0,0)
|
||||||
|
mcr p15, 0, r0, c3, c0, 0
|
||||||
|
|
||||||
|
//
|
||||||
|
// 命令アクセス許可 (リージョン設定)
|
||||||
|
// IO_VRAM : RW
|
||||||
|
// MAIN_MEM_MAIN : RW
|
||||||
|
// MAIN_MEM_SUB : NA
|
||||||
|
// CTRDG : NA
|
||||||
|
// DTCM : NA
|
||||||
|
// ITCM : RW
|
||||||
|
// BIOS : RO
|
||||||
|
// SHARED : NA
|
||||||
|
//
|
||||||
|
ldr r0, =REGION_ACC(RW,RW,NA,NA,NA,RW,RO,NA)
|
||||||
|
mcr p15, 0, r0, c5, c0, 3
|
||||||
|
|
||||||
|
//
|
||||||
|
// データアクセス許可(リージョン設定)
|
||||||
|
// IO_VRAM : RW
|
||||||
|
// MAIN_MEM_MAIN : RW
|
||||||
|
// MAIN_MEM_SUB : NA
|
||||||
|
// CTRDG : RW
|
||||||
|
// DTCM : RW
|
||||||
|
// ITCM : RW
|
||||||
|
// BIOS : RO
|
||||||
|
// SHARED : RW
|
||||||
|
//
|
||||||
|
ldr r0, =REGION_ACC(RW,RW,NA,RW,RW,RW,RO,RW)
|
||||||
|
mcr p15, 0, r0, c5, c0, 2
|
||||||
|
|
||||||
|
//
|
||||||
|
// システム制御コプロセッサ マスター設定
|
||||||
|
//
|
||||||
|
mrc p15, 0, r0, c1, c0, 0
|
||||||
|
ldr r1,=HW_C1_ICACHE_ENABLE | HW_C1_DCACHE_ENABLE | HW_C1_CACHE_ROUND_ROBIN \
|
||||||
|
| HW_C1_ITCM_ENABLE | HW_C1_DTCM_ENABLE \
|
||||||
|
| HW_C1_SB1_BITSET | HW_C1_EXCEPT_VEC_UPPER \
|
||||||
|
| HW_C1_PROTECT_UNIT_ENABLE
|
||||||
|
orr r0, r0, r1
|
||||||
|
mcr p15, 0, r0, c1, c0, 0
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: NitroStartUp
|
||||||
|
|
||||||
|
Description: hook for user start up
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
SDK_WEAK_SYMBOL void NitroStartUp(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OSi_ReferSymbol
|
||||||
|
|
||||||
|
Description: used by SDK_REFER_SYMBOL macro to avoid dead-strip.
|
||||||
|
|
||||||
|
Arguments: symbol unused
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void OSi_ReferSymbol(void *symbol)
|
||||||
|
{
|
||||||
|
#pragma unused(symbol)
|
||||||
|
}
|
34
build/libraries/init/Makefile
Normal file
34
build/libraries/init/Makefile
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - init
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = ARM9
|
||||||
|
|
||||||
|
#ifdef TWL_WITH_ARM7
|
||||||
|
SUBDIRS += ARM7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
75
build/libraries/mi/ARM7/Makefile
Normal file
75
build/libraries/mi/ARM7/Makefile
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - mi/ARM7
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= True
|
||||||
|
|
||||||
|
# Codegen for sub processer
|
||||||
|
TWL_PROC = ARM7
|
||||||
|
|
||||||
|
SRCDIR = ../common .
|
||||||
|
SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/src \
|
||||||
|
$(TWL_NITROSDK_ROOT)/build/libraries/mi/ARM7/src \
|
||||||
|
|
||||||
|
INCDIR = ../common
|
||||||
|
INCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/include \
|
||||||
|
|
||||||
|
SRCS = mi_dma.c \
|
||||||
|
mi_dma_hblank.c \
|
||||||
|
mi_dma_vblank.c \
|
||||||
|
mi_dma_mainmem.c \
|
||||||
|
mi_dma_gxcommand.c \
|
||||||
|
mi_memory.c \
|
||||||
|
mi_swap.c \
|
||||||
|
mi_uncompress.c \
|
||||||
|
mi_byteAccess.c \
|
||||||
|
mi_stream.c \
|
||||||
|
mi_card.c \
|
||||||
|
mi_dma_card.c \
|
||||||
|
mi_exMemory.c
|
||||||
|
|
||||||
|
TARGET_LIB = libmi_sp$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# DEBUG版ビルドの場合、RELEASE版でビルドして
|
||||||
|
# DEBUG版のライブラリを装います。
|
||||||
|
|
||||||
|
ifdef NITRO_DEBUG
|
||||||
|
NITRO_BUILD_TYPE = RELEASE
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
66
build/libraries/mi/ARM9/Makefile
Normal file
66
build/libraries/mi/ARM9/Makefile
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - mi/ARM9
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= True
|
||||||
|
|
||||||
|
SRCDIR = ../common .
|
||||||
|
SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/src \
|
||||||
|
$(TWL_NITROSDK_ROOT)/build/libraries/mi/ARM9/src \
|
||||||
|
|
||||||
|
INCDIR = ../common
|
||||||
|
INCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/mi/common/include \
|
||||||
|
|
||||||
|
SRCS = mi_wram.c \
|
||||||
|
mi_dma.c \
|
||||||
|
mi_dma_hblank.c \
|
||||||
|
mi_dma_vblank.c \
|
||||||
|
mi_dma_mainmem.c \
|
||||||
|
mi_dma_gxcommand.c \
|
||||||
|
mi_memory.c \
|
||||||
|
mi_swap.c \
|
||||||
|
mi_uncompress.c \
|
||||||
|
mi_byteAccess.c \
|
||||||
|
mi_stream.c \
|
||||||
|
mi_card.c \
|
||||||
|
mi_dma_card.c \
|
||||||
|
mi_uncomp_stream.c \
|
||||||
|
mi_compress.c \
|
||||||
|
mi_exMemory.c \
|
||||||
|
mi_init.c
|
||||||
|
|
||||||
|
TARGET_LIB = libmi$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
34
build/libraries/mi/Makefile
Normal file
34
build/libraries/mi/Makefile
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - mi
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = ARM9
|
||||||
|
|
||||||
|
#ifdef TWL_WITH_ARM7
|
||||||
|
SUBDIRS += ARM7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
85
build/libraries/os/ARM7/Makefile
Normal file
85
build/libraries/os/ARM7/Makefile
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries_sp - os
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
#SUBMAKES = Makefile.CALLTRACE \
|
||||||
|
# Makefile.FUNCTIONCOST
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= TRUE
|
||||||
|
|
||||||
|
# Codegen for sub processer
|
||||||
|
TWL_PROC = ARM7
|
||||||
|
|
||||||
|
SRCDIR = ../common .
|
||||||
|
SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \
|
||||||
|
$(TWL_NITROSDK_ROOT)/build/libraries/os/ARM7/src \
|
||||||
|
|
||||||
|
SRCS = \
|
||||||
|
os_init_twl.c \
|
||||||
|
os_spinLock_twl.c \
|
||||||
|
os_printf_twl.c \
|
||||||
|
os_system_twl.c \
|
||||||
|
os_entropy_twl.c \
|
||||||
|
os_terminate_twl_sp.c \
|
||||||
|
os_irqHandler.c \
|
||||||
|
os_irqTable.c \
|
||||||
|
os_interrupt.c \
|
||||||
|
os_thread.c \
|
||||||
|
os_context.c \
|
||||||
|
os_emulator.c \
|
||||||
|
os_message.c \
|
||||||
|
os_mutex.c \
|
||||||
|
os_arena.c \
|
||||||
|
os_alloc.c \
|
||||||
|
os_exception.c \
|
||||||
|
os_timer.c \
|
||||||
|
os_tick.c \
|
||||||
|
os_alarm.c \
|
||||||
|
os_valarm.c \
|
||||||
|
os_profile.c \
|
||||||
|
os_reset.c \
|
||||||
|
os_ownerInfo.c \
|
||||||
|
|
||||||
|
TARGET_LIB = libos_sp$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# DEBUG版ビルドの場合、RELEASE版でビルドして
|
||||||
|
# DEBUG版のライブラリを装います。
|
||||||
|
|
||||||
|
ifdef NITRO_DEBUG
|
||||||
|
NITRO_BUILD_TYPE = RELEASE
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
87
build/libraries/os/ARM7/os_terminate_twl_sp.c
Normal file
87
build/libraries/os/ARM7/os_terminate_twl_sp.c
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS
|
||||||
|
File: os_terminate_sp.c
|
||||||
|
|
||||||
|
Copyright 2006 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.
|
||||||
|
|
||||||
|
$Log: os_terminate_sp.c,v $
|
||||||
|
Revision 1.2 2006/01/18 02:11:30 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.1 2006/01/10 05:58:35 okubata_ryoma
|
||||||
|
os_terminate_sp.c‚̒ljÁ
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro/os/common/system.h>
|
||||||
|
#include <nitro/ctrdg/ARM7/ctrdg_sp.h>
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// TERMINATE and HALT
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_Terminate
|
||||||
|
|
||||||
|
Description: Halt CPU and loop
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: -- (Never return)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
SDK_WEAK_SYMBOL void OS_Terminate(void)
|
||||||
|
{
|
||||||
|
//VIB_STOP
|
||||||
|
CTRDG_VibPulseEdgeUpdate(NULL);
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
(void)OS_DisableInterrupts();
|
||||||
|
OS_Halt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_Exit
|
||||||
|
|
||||||
|
Description: Display exit string and Terminate.
|
||||||
|
This is useful for 'loadrun' tool command.
|
||||||
|
|
||||||
|
Arguments: status : exit status
|
||||||
|
|
||||||
|
Returns: -- (Never return)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
SDK_WEAK_SYMBOL void OS_Exit(int status)
|
||||||
|
{
|
||||||
|
#ifdef SDK_FINALROM
|
||||||
|
#pragma unused( status )
|
||||||
|
#endif
|
||||||
|
(void)OS_DisableInterrupts();
|
||||||
|
OS_Printf("\n" OS_EXIT_STRING, status);
|
||||||
|
OS_Terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_Halt
|
||||||
|
|
||||||
|
Description: Halt CPU
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifdef SDK_DEBUGGER_ARM
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
SDK_WEAK_SYMBOL asm void OS_Halt( void )
|
||||||
|
{
|
||||||
|
mov r0, #0
|
||||||
|
mcr p15, 0, r0, c7, c0, 4
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#include <nitro/codereset.h>
|
||||||
|
#endif
|
99
build/libraries/os/ARM9/Makefile
Normal file
99
build/libraries/os/ARM9/Makefile
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - libraries - os
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# Copyright 2003-2005 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.
|
||||||
|
#
|
||||||
|
# $Log: Makefile,v $
|
||||||
|
# Revision 1.3 2005/05/25 11:42:54 terui
|
||||||
|
# Makefile.CORE ‚ð include ‚·‚邿‚¤‚É<E2809A>C<EFBFBD>³
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/09/13 05:37:28 yasu
|
||||||
|
# merged with NitroSDK_2_00pr6_branch
|
||||||
|
#
|
||||||
|
# Revision 1.1.2.1 2004/09/13 04:39:29 yasu
|
||||||
|
# build libos for TS_VERSION=0,100 and 200
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
SUBMAKES =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= True
|
||||||
|
|
||||||
|
SRCDIR = ../common .
|
||||||
|
SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \
|
||||||
|
$(TWL_NITROSDK_ROOT)/build/libraries/os/ARM9/src \
|
||||||
|
|
||||||
|
SRCS = \
|
||||||
|
os_init_twl.c \
|
||||||
|
os_spinLock_twl.c \
|
||||||
|
os_printf_twl.c \
|
||||||
|
os_system_twl.c \
|
||||||
|
os_entropy_twl.c \
|
||||||
|
os_irqHandler.c \
|
||||||
|
os_irqTable.c \
|
||||||
|
os_interrupt.c \
|
||||||
|
os_thread.c \
|
||||||
|
os_context.c \
|
||||||
|
os_emulator.c \
|
||||||
|
os_message.c \
|
||||||
|
os_mutex.c \
|
||||||
|
os_cache.c \
|
||||||
|
os_arena.c \
|
||||||
|
os_alloc.c \
|
||||||
|
os_tcm.c \
|
||||||
|
os_protectionUnit.c \
|
||||||
|
os_protectionRegion.c \
|
||||||
|
os_exception.c \
|
||||||
|
os_timer.c \
|
||||||
|
os_tick.c \
|
||||||
|
os_alarm.c \
|
||||||
|
os_valarm.c \
|
||||||
|
os_profile.c \
|
||||||
|
os_reset.c \
|
||||||
|
os_ownerInfo.c \
|
||||||
|
os_vramExclusive.c \
|
||||||
|
os_china.c \
|
||||||
|
os_argument.c \
|
||||||
|
os_terminate_proc.c \
|
||||||
|
|
||||||
|
|
||||||
|
TARGET_LIB = libos$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
ifdef NITRO_CALLTRACE
|
||||||
|
CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_CALL_TRACE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef NITRO_FUNCTIONCOST
|
||||||
|
CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_FUNCTION_COST
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef NITRO_TCM_APPLY
|
||||||
|
CCFLAGS += -DSDK_TCM_APPLY
|
||||||
|
endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
34
build/libraries/os/Makefile
Normal file
34
build/libraries/os/Makefile
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - os
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = ARM9
|
||||||
|
|
||||||
|
#ifdef TWL_WITH_ARM7
|
||||||
|
SUBDIRS += ARM7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
59
build/libraries/os/common/os_entropy_twl.c
Normal file
59
build/libraries/os/common/os_entropy_twl.c
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS
|
||||||
|
File: os_entropy.c
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: os_entropy.c,v $
|
||||||
|
Revision 1.3 2006/01/18 02:11:30 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.2 2005/07/27 12:15:36 seiki_masashi
|
||||||
|
MAC アドレスも追加
|
||||||
|
|
||||||
|
Revision 1.1 2005/07/27 07:36:41 seiki_masashi
|
||||||
|
新規追加
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro/os.h>
|
||||||
|
#include <nitro/gx.h>
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
extern vu64 OSi_TickCounter;
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_GetLowEntropyData
|
||||||
|
|
||||||
|
Description: システム状態によって変化する低エントロピーのデータ列を取得する
|
||||||
|
|
||||||
|
Arguments: buffer - データ列を受け取る配列へのポインタ
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void OS_GetLowEntropyData(u32 buffer[OS_LOW_ENTROPY_DATA_SIZE / sizeof(u32)])
|
||||||
|
{
|
||||||
|
// System Work Memory 上の RTC のワーク領域
|
||||||
|
const OSSystemWork *work = OS_GetSystemWork();
|
||||||
|
const u8 *macAddress =
|
||||||
|
(u8 *)((u32)(work->nvramUserInfo) + ((sizeof(NVRAMConfig) + 3) & ~0x00000003));
|
||||||
|
|
||||||
|
buffer[0] = (u32)((GX_GetVCount() << 16) | OS_GetTickLo());
|
||||||
|
buffer[1] = (u32)(*(u16 *)(macAddress + 4) << 16) ^ (u32)(OSi_TickCounter);
|
||||||
|
buffer[2] = (u32)(OSi_TickCounter >> 32) ^ *(u32 *)macAddress ^ work->vblankCount;
|
||||||
|
#ifdef reg_G3X_GXSTAT
|
||||||
|
buffer[2] ^= reg_G3X_GXSTAT;
|
||||||
|
#endif
|
||||||
|
buffer[3] = *(u32 *)(&work->real_time_clock[0]);
|
||||||
|
buffer[4] = *(u32 *)(&work->real_time_clock[4]);
|
||||||
|
buffer[5] = (((u32)work->mic_sampling_data) << 16) ^ work->mic_last_address;
|
||||||
|
buffer[6] = (u32)((*(u16 *)(&work->touch_panel[0]) << 16) | *(u16 *)(&work->touch_panel[2]));
|
||||||
|
buffer[7] = (u32)((work->wm_rssi_pool << 16) | (reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF));
|
||||||
|
}
|
300
build/libraries/os/common/os_init_twl.c
Normal file
300
build/libraries/os/common/os_init_twl.c
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS
|
||||||
|
File: os_init.c
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: os_init.c,v $
|
||||||
|
Revision 1.50 2006/01/18 02:11:30 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.49 2005/11/22 09:11:28 yosizaki
|
||||||
|
support SDK_ENABLE_ARM7_PRINT.
|
||||||
|
|
||||||
|
Revision 1.48 2005/07/19 06:06:11 yada
|
||||||
|
add irq stack check
|
||||||
|
|
||||||
|
Revision 1.47 2005/04/26 06:54:22 terui
|
||||||
|
Fix comment
|
||||||
|
|
||||||
|
Revision 1.46 2005/04/18 12:26:59 terui
|
||||||
|
OSi_CheckOwnerInfo関数を削除
|
||||||
|
|
||||||
|
Revision 1.45 2005/04/12 10:49:15 terui
|
||||||
|
中国語対応の為に改造
|
||||||
|
|
||||||
|
Revision 1.44 2005/02/28 05:26:28 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.43 2005/02/10 07:46:57 yada
|
||||||
|
let call MI_Init()
|
||||||
|
|
||||||
|
Revision 1.42 2005/02/09 09:17:48 terui
|
||||||
|
ARM9における初期化時にVRAMの排他制御を初期化する機能を追加。
|
||||||
|
|
||||||
|
Revision 1.41 2004/10/12 08:01:04 yada
|
||||||
|
delete OS_InitPrintServer()
|
||||||
|
|
||||||
|
Revision 1.40 2004/10/08 07:49:13 yada
|
||||||
|
consider for the situation of not calling OS_InitPrintServer()
|
||||||
|
|
||||||
|
Revision 1.39 2004/09/29 06:06:42 yada
|
||||||
|
OS_InitReset() is not called if SDK_SMALL_BUILD defined
|
||||||
|
|
||||||
|
Revision 1.38 2004/09/29 06:02:34 yada
|
||||||
|
CARD_Init() is not called if SDK_SMALL_BUILD defined
|
||||||
|
|
||||||
|
Revision 1.37 2004/09/28 00:03:36 yada
|
||||||
|
add CARD_Init() in OS_Init() on ARM9
|
||||||
|
|
||||||
|
Revision 1.36 2004/09/15 06:15:20 yada
|
||||||
|
in SDK_TEG release, PM_Init() not called.
|
||||||
|
|
||||||
|
Revision 1.35 2004/09/15 01:01:08 yada
|
||||||
|
in case SDK_TEG, CTRDG_Init() not called
|
||||||
|
|
||||||
|
Revision 1.34 2004/09/13 10:48:24 yada
|
||||||
|
add CTRDG_Init()
|
||||||
|
|
||||||
|
Revision 1.33 2004/09/02 06:18:22 yada
|
||||||
|
only change comment
|
||||||
|
|
||||||
|
Revision 1.32 2004/09/01 04:20:03 yada
|
||||||
|
add OS_InitReset()
|
||||||
|
|
||||||
|
Revision 1.31 2004/08/26 12:17:23 yada
|
||||||
|
always call PM_Init()
|
||||||
|
|
||||||
|
Revision 1.30 2004/08/16 04:22:04 yada
|
||||||
|
in ensata, not call PM_Init()
|
||||||
|
|
||||||
|
Revision 1.29 2004/08/09 02:12:10 yada
|
||||||
|
add PM_Init in case of ARM9
|
||||||
|
|
||||||
|
Revision 1.28 2004/07/27 06:39:55 yada
|
||||||
|
add checker for system shared validity
|
||||||
|
|
||||||
|
Revision 1.27 2004/07/10 04:07:46 yasu
|
||||||
|
Add short comment
|
||||||
|
|
||||||
|
Revision 1.26 2004/07/08 02:30:35 yada
|
||||||
|
add calling OS_InitArenaEx()
|
||||||
|
|
||||||
|
Revision 1.25 2004/05/24 04:50:08 yada
|
||||||
|
fix profile pragma
|
||||||
|
|
||||||
|
Revision 1.24 2004/05/20 02:56:46 yada
|
||||||
|
add profile off
|
||||||
|
|
||||||
|
Revision 1.23 2004/05/20 02:51:26 yada
|
||||||
|
add OS_InitThread()
|
||||||
|
|
||||||
|
Revision 1.22 2004/03/18 12:59:15 yada
|
||||||
|
ARM7ではException初期化を呼ばないようにした(暫定)
|
||||||
|
|
||||||
|
Revision 1.21 2004/03/09 07:26:18 yada
|
||||||
|
PXI_Init() 呼び出し位置を OS_InitLock() の上に移動
|
||||||
|
|
||||||
|
Revision 1.20 2004/03/08 01:55:49 yasu
|
||||||
|
add PXI_Init()
|
||||||
|
|
||||||
|
Revision 1.19 2004/03/01 11:57:31 yada
|
||||||
|
英語の関数comment作成
|
||||||
|
|
||||||
|
Revision 1.18 2004/02/25 11:31:18 yada
|
||||||
|
systemClock→Tick に伴う変更
|
||||||
|
|
||||||
|
Revision 1.17 2004/02/24 11:50:34 yada
|
||||||
|
OS_Init() の A7側から PAD_InitXYButton() 削除
|
||||||
|
|
||||||
|
Revision 1.16 2004/02/24 04:50:59 yada
|
||||||
|
A9側に OS_InitValarm をいれた。
|
||||||
|
|
||||||
|
Revision 1.15 2004/02/20 12:24:21 yada
|
||||||
|
A7のOS_Init() コメントアウトはずし
|
||||||
|
|
||||||
|
Revision 1.14 2004/02/20 08:29:18 yasu
|
||||||
|
Temporary fix
|
||||||
|
|
||||||
|
Revision 1.13 2004/02/19 08:42:11 yada
|
||||||
|
A7側アリーナの初期化追加
|
||||||
|
|
||||||
|
Revision 1.12 2004/02/18 08:56:56 yada
|
||||||
|
A7 からは OS_InitArea() を呼ばないようにした
|
||||||
|
|
||||||
|
Revision 1.11 2004/02/18 01:20:04 yada
|
||||||
|
ARM7にsystemClock,Alarm,XYButtonのinitを入れた
|
||||||
|
|
||||||
|
Revision 1.10 2004/02/13 02:29:59 yada
|
||||||
|
ARM9とAMR7 の場合わけ考慮
|
||||||
|
|
||||||
|
Revision 1.9 2004/02/05 10:51:53 yada
|
||||||
|
OS_InitException() を呼ぶようにした
|
||||||
|
|
||||||
|
Revision 1.8 2004/02/05 07:09:02 yasu
|
||||||
|
change SDK prefix iris -> nitro
|
||||||
|
|
||||||
|
Revision 1.7 2004/01/30 11:45:06 yada
|
||||||
|
一旦OS_InitException() を外す
|
||||||
|
|
||||||
|
Revision 1.6 2004/01/30 08:06:14 yada
|
||||||
|
OS_Init() で例外表示システム初期化を呼ぶようにした。
|
||||||
|
|
||||||
|
Revision 1.5 2004/01/18 02:25:37 yada
|
||||||
|
インデント等の整形
|
||||||
|
|
||||||
|
Revision 1.4 2004/01/07 01:43:51 yada
|
||||||
|
OS_InitArena() を呼ぶように変更
|
||||||
|
|
||||||
|
Revision 1.3 2003/12/26 05:52:45 yada
|
||||||
|
型ルール統一による変更
|
||||||
|
|
||||||
|
Revision 1.2 2003/12/24 07:54:20 yada
|
||||||
|
wram 初期化を行うようにした
|
||||||
|
|
||||||
|
Revision 1.1 2003/12/22 01:35:52 yada
|
||||||
|
OS_Init() 設置につき init.h 作成
|
||||||
|
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro/os.h>
|
||||||
|
#include <nitro/mi/wram.h>
|
||||||
|
#include <nitro/pxi.h>
|
||||||
|
#include <nitro/spi.h>
|
||||||
|
|
||||||
|
#ifndef SDK_TEG
|
||||||
|
#include <nitro/ctrdg.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_Init
|
||||||
|
|
||||||
|
Description: initialize sdk os
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#pragma profile off
|
||||||
|
void OS_Init(void)
|
||||||
|
{
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
//---- system shared area check
|
||||||
|
SDK_ASSERT((u32)&(OS_GetSystemWork()->command_area) == HW_CMD_AREA);
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
// for ARM9
|
||||||
|
|
||||||
|
#ifdef SDK_ENABLE_ARM7_PRINT
|
||||||
|
// Init PrintServer for ARM7 (if specified)
|
||||||
|
OS_InitPrintServer();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- Init Arena (arenas except SUBPRIV-WRAM)
|
||||||
|
OS_InitArena();
|
||||||
|
|
||||||
|
//---- Init interProcessor I/F
|
||||||
|
// Sync with ARM7 to enable OS_GetConsoleType()
|
||||||
|
// PXI_Init() must be called before OS_InitArenaEx()
|
||||||
|
PXI_Init();
|
||||||
|
|
||||||
|
//---- Init Spinlock
|
||||||
|
OS_InitLock();
|
||||||
|
|
||||||
|
//---- Init Arena (extended main)
|
||||||
|
OS_InitArenaEx();
|
||||||
|
|
||||||
|
//---- Init IRQ Table
|
||||||
|
OS_InitIrqTable();
|
||||||
|
|
||||||
|
//---- Init IRQ Stack checker
|
||||||
|
OS_SetIrqStackChecker();
|
||||||
|
|
||||||
|
//---- Init Exception System
|
||||||
|
OS_InitException();
|
||||||
|
|
||||||
|
//---- Init MI (Wram bank and DMA0 arranged)
|
||||||
|
MI_Init();
|
||||||
|
|
||||||
|
//---- Init VCountAlarm
|
||||||
|
OS_InitVAlarm();
|
||||||
|
|
||||||
|
//---- Init VRAM exclusive System
|
||||||
|
OSi_InitVramExclusive();
|
||||||
|
|
||||||
|
//---- Init Thread System
|
||||||
|
#ifndef SDK_NO_THREAD
|
||||||
|
OS_InitThread();
|
||||||
|
#endif
|
||||||
|
//---- Init Reset System
|
||||||
|
#ifndef SDK_SMALL_BUILD
|
||||||
|
OS_InitReset();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- Init Cartridge
|
||||||
|
#ifndef SDK_TEG
|
||||||
|
// CTRDG_Init();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- Init Card
|
||||||
|
#ifndef SDK_SMALL_BUILD
|
||||||
|
// CARD_Init();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- Init Power Manager
|
||||||
|
#ifndef SDK_TEG
|
||||||
|
// PM_Init();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else // SDK_ARM9
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
// for ARM7
|
||||||
|
|
||||||
|
//---- Init Arena (SUBPRIV-WRAM arena)
|
||||||
|
OS_InitArena();
|
||||||
|
|
||||||
|
//---- Init interProcessor I/F
|
||||||
|
PXI_Init();
|
||||||
|
|
||||||
|
//---- Init Spinlock
|
||||||
|
OS_InitLock();
|
||||||
|
|
||||||
|
//---- Init IRQ Table
|
||||||
|
OS_InitIrqTable();
|
||||||
|
|
||||||
|
#define SDK_EXCEPTION_BUG
|
||||||
|
#ifndef SDK_EXCEPTION_BUG
|
||||||
|
//---- Init Exception System
|
||||||
|
OS_InitException();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- Init Tick
|
||||||
|
OS_InitTick();
|
||||||
|
|
||||||
|
//---- Init Alarm System
|
||||||
|
OS_InitAlarm();
|
||||||
|
|
||||||
|
//---- Init Thread System
|
||||||
|
OS_InitThread();
|
||||||
|
|
||||||
|
//---- Init Reset System
|
||||||
|
#ifndef SDK_SMALL_BUILD
|
||||||
|
OS_InitReset();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//---- Init Cartridge
|
||||||
|
#ifndef SDK_TEG
|
||||||
|
// CTRDG_Init();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SDK_ARM9
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma profile reset
|
1211
build/libraries/os/common/os_printf_twl.c
Normal file
1211
build/libraries/os/common/os_printf_twl.c
Normal file
File diff suppressed because it is too large
Load Diff
932
build/libraries/os/common/os_spinLock_twl.c
Normal file
932
build/libraries/os/common/os_spinLock_twl.c
Normal file
@ -0,0 +1,932 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS -
|
||||||
|
File: os_spinLock.c
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: os_spinLock.c,v $
|
||||||
|
Revision 1.40 2006/01/18 02:11:30 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.39 2005/11/21 05:42:31 yasu
|
||||||
|
OSi_WaitByLoop を inline 化
|
||||||
|
|
||||||
|
Revision 1.38 2005/11/17 10:11:36 yasu
|
||||||
|
OS_SpinWait を SVC_WaitByLoop で行なうように修正
|
||||||
|
|
||||||
|
Revision 1.37 2005/03/04 10:06:01 yasu
|
||||||
|
過剰な volatile を削除
|
||||||
|
|
||||||
|
Revision 1.36 2005/03/01 01:57:00 yosizaki
|
||||||
|
copyright の年を修正.
|
||||||
|
|
||||||
|
Revision 1.35 2005/02/28 05:26:29 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.34 2004/07/23 04:27:47 yada
|
||||||
|
OS_UnLock* restored for compatibility
|
||||||
|
|
||||||
|
Revision 1.33 2004/07/23 00:57:17 yada
|
||||||
|
rename OS_UnLock* -> OS_Unlock*
|
||||||
|
|
||||||
|
Revision 1.32 2004/07/22 08:21:17 yada
|
||||||
|
change some lockID's type u32->u16
|
||||||
|
|
||||||
|
Revision 1.31 2004/07/08 07:56:14 yosizaki
|
||||||
|
change around OS_LockCard in (TEG && ARM9)
|
||||||
|
|
||||||
|
Revision 1.30 2004/07/06 04:45:28 yosizaki
|
||||||
|
add assertion (TEG && ARM9)
|
||||||
|
|
||||||
|
Revision 1.29 2004/06/21 11:03:25 yada
|
||||||
|
fix comment. incorrect about return value.
|
||||||
|
|
||||||
|
Revision 1.28 2004/05/20 06:37:03 yasu
|
||||||
|
fix in Wait
|
||||||
|
|
||||||
|
Revision 1.27 2004/04/30 07:37:44 yada
|
||||||
|
HW_LOCKIDFLAG_MAIN/SUB -> HW_LOCK_ID_FLAG_MAIN/SUB
|
||||||
|
|
||||||
|
Revision 1.26 2004/04/30 00:18:00 yada
|
||||||
|
put HW_LOCKID_FLAG_MAIN/SUB
|
||||||
|
|
||||||
|
Revision 1.25 2004/04/20 06:56:11 yada
|
||||||
|
OS_TryLockCartridge() が、無条件に _ISDbgLib_AllocateEmualtor() を
|
||||||
|
呼んでいたのを修正。
|
||||||
|
|
||||||
|
Revision 1.24 2004/03/30 06:09:29 yada
|
||||||
|
ldconst や lda を ldr = を使用する記述にした。
|
||||||
|
|
||||||
|
Revision 1.23 2004/03/26 10:37:23 yada
|
||||||
|
OS_GetLockID(), OS_ReleaseLockID() 追加
|
||||||
|
|
||||||
|
Revision 1.22 2004/03/25 09:44:24 yada
|
||||||
|
カードのunlock, tryLock 関数の定数修正。ウェイトでARM7はSVC呼ぶように。
|
||||||
|
|
||||||
|
Revision 1.21 2004/03/25 09:22:39 yada
|
||||||
|
内部ロック関数等で引数のFIQフラグの順序を変え効率をよくした。
|
||||||
|
Cardのロック・アンロック修正
|
||||||
|
|
||||||
|
Revision 1.20 2004/03/25 07:25:05 yada
|
||||||
|
OS_LockCard() 等カードのロックについて追加
|
||||||
|
|
||||||
|
Revision 1.19 2004/03/25 02:38:30 yada
|
||||||
|
MI_SetMainMemoryPriority(), MI_SetCardProcessor(),MI_SetCartridgeProcessor()
|
||||||
|
を、MI_~からMIi_~ に変更し内部関数にするようにした。
|
||||||
|
|
||||||
|
Revision 1.18 2004/03/04 09:47:50 yada
|
||||||
|
カートリッジのロックに限りIRQ/FIQ禁止にした。
|
||||||
|
|
||||||
|
Revision 1.17 2004/02/13 08:58:52 yasu
|
||||||
|
nitro_sp.h -> nitro.h
|
||||||
|
|
||||||
|
Revision 1.16 2004/02/13 01:33:58 yada
|
||||||
|
ARM9とAMR7 でインクルードファイル場合わけ
|
||||||
|
|
||||||
|
Revision 1.15 2004/02/10 02:04:23 yada
|
||||||
|
subp 用にinclude修正
|
||||||
|
|
||||||
|
Revision 1.14 2004/02/10 01:25:06 yada
|
||||||
|
UTL_* を MI_ に取り込んだことによる修正
|
||||||
|
|
||||||
|
Revision 1.13 2004/02/05 07:09:02 yasu
|
||||||
|
change SDK prefix iris -> nitro
|
||||||
|
|
||||||
|
Revision 1.12 2004/02/05 02:00:37 yada
|
||||||
|
UTL_SwapWord を os_utility.c に移行
|
||||||
|
|
||||||
|
Revision 1.11 2004/01/18 02:25:37 yada
|
||||||
|
インデント等の整形
|
||||||
|
|
||||||
|
Revision 1.10 2004/01/14 01:44:01 yada
|
||||||
|
lockやunlockの途中実行関数を設定出来るようにしたことへの対応
|
||||||
|
|
||||||
|
Revision 1.9 2003/12/25 07:31:26 yada
|
||||||
|
型ルール統一による変更
|
||||||
|
|
||||||
|
Revision 1.8 2003/12/22 13:40:59 yasu
|
||||||
|
memorymap.h の明示的読み込み
|
||||||
|
|
||||||
|
Revision 1.7 2003/12/22 01:37:27 yada
|
||||||
|
WRAM, VRAM-c,d の設定をコメントアウト
|
||||||
|
|
||||||
|
Revision 1.6 2003/12/18 07:17:09 yada
|
||||||
|
red-sdk 仕様から変更
|
||||||
|
|
||||||
|
Revision 1.5 2003/12/17 08:21:56 yasu
|
||||||
|
ARM7 との共用コード化
|
||||||
|
|
||||||
|
Revision 1.4 2003/12/12 05:04:22 yasu
|
||||||
|
_ISDbgLib_* 関数の追加
|
||||||
|
|
||||||
|
Revision 1.3 2003/12/10 10:56:18 yasu
|
||||||
|
ISDPrint で必要な SpinLock 関数のみの移植
|
||||||
|
OS_LockWord() -> OS_LockByWord()
|
||||||
|
volatile LockWord -> OS_LockWord などの変更
|
||||||
|
|
||||||
|
Revision 1.2 2003/12/08 12:20:43 yada
|
||||||
|
12/3 REDSDK への変更対応
|
||||||
|
|
||||||
|
Revision 1.1 2003/11/29 01:25:46 yada
|
||||||
|
ファイル名称変更
|
||||||
|
|
||||||
|
Revision 1.2 2003/11/28 01:56:22 yada
|
||||||
|
REDSDKの03-11-27反映
|
||||||
|
但し殆どをコメントアウト
|
||||||
|
|
||||||
|
Revision 1.1 2003/11/06 09:30:39 yada
|
||||||
|
暫定版
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro.h>
|
||||||
|
|
||||||
|
void _ISDbgLib_Initialize(void);
|
||||||
|
void _ISDbgLib_AllocateEmualtor(void);
|
||||||
|
void _ISDbgLib_FreeEmulator(void);
|
||||||
|
|
||||||
|
s32 OS_LockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void));
|
||||||
|
s32 OS_UnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void));
|
||||||
|
s32 OS_TryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*crtlFuncp) (void));
|
||||||
|
|
||||||
|
static s32 OSi_DoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
|
||||||
|
BOOL disableFiq);
|
||||||
|
static s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
|
||||||
|
BOOL disableFIQ);
|
||||||
|
static s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
|
||||||
|
BOOL disableFIQ);
|
||||||
|
|
||||||
|
static void OSi_AllocateCartridgeBus(void);
|
||||||
|
static void OSi_FreeCartridgeBus(void);
|
||||||
|
|
||||||
|
static void OSi_AllocateCardBus(void);
|
||||||
|
static void OSi_FreeCardBus(void);
|
||||||
|
|
||||||
|
static void OSi_WaitByLoop(void);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
#define OSi_ASSERT_ID( id ) SDK_ASSERTMSG( id >= OS_MAINP_LOCK_ID_START && id <= OS_MAINP_SYSTEM_LOCK_ID, \
|
||||||
|
"lock ID %d is out of bounds", id )
|
||||||
|
#else
|
||||||
|
#define OSi_ASSERT_ID( id ) SDK_ASSERTMSG( id >= OS_SUBP_LOCK_ID_START && id <= OS_SUBP_SYSTEM_LOCK_ID, \
|
||||||
|
"lock ID %d is out of bounds", id )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define OSi_LOCKID_INITIAL_FLAG_0 0xffffffff
|
||||||
|
#define OSi_LOCKID_INITIAL_FLAG_1 0xffff0000
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_MAIN
|
||||||
|
#define OSi_ANYP_LOCK_ID_START OS_MAINP_LOCK_ID_START
|
||||||
|
#else
|
||||||
|
#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_SUB
|
||||||
|
#define OSi_ANYP_LOCK_ID_START OS_SUBP_LOCK_ID_START
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// DUMMY LOOP
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OSi_WaitByLoop
|
||||||
|
|
||||||
|
Description: wait by for() loop
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static inline void OSi_WaitByLoop(void)
|
||||||
|
{
|
||||||
|
#ifdef SDK_DEBUGGER_ARM
|
||||||
|
OS_SpinWait(0x1000);
|
||||||
|
#else
|
||||||
|
SVC_WaitByLoop(0x1000 / 4);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// INITIALIZE
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_InitLock
|
||||||
|
|
||||||
|
Description: initialize system lock variable
|
||||||
|
and privilege to access shared resources
|
||||||
|
|
||||||
|
* cartridge exclusive control area is not cleared
|
||||||
|
because debugger uses.
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void OS_InitLock(void)
|
||||||
|
{
|
||||||
|
static BOOL isInitialized = FALSE;
|
||||||
|
OSLockWord *lockp;
|
||||||
|
|
||||||
|
if (isInitialized)
|
||||||
|
return; // do it only once
|
||||||
|
isInitialized = TRUE;
|
||||||
|
|
||||||
|
lockp = (OSLockWord *)HW_INIT_LOCK_BUF;
|
||||||
|
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Code for MAIN PROCESSOR
|
||||||
|
//
|
||||||
|
|
||||||
|
lockp->lockFlag = 0;
|
||||||
|
(void)OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL);
|
||||||
|
|
||||||
|
// サブプロセッサによる共有リソース未使用チェック
|
||||||
|
while (lockp->extension != 0)
|
||||||
|
{
|
||||||
|
OSi_WaitByLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ロックIDカウンタ用フラグ 初期化
|
||||||
|
((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0;
|
||||||
|
((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1;
|
||||||
|
|
||||||
|
// ロックバッファ クリア(カートリッジ領域以外)
|
||||||
|
MI_CpuClear32((void *)HW_SHARED_LOCK_BUF, HW_CTRDG_LOCK_BUF - HW_SHARED_LOCK_BUF);
|
||||||
|
|
||||||
|
// NITRO カードアクセス権 → サブプロセッサ
|
||||||
|
MIi_SetCardProcessor(MI_PROCESSOR_ARM7);
|
||||||
|
|
||||||
|
// カートリッジアクセス権 → サブプロセッサ
|
||||||
|
MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7);
|
||||||
|
|
||||||
|
#ifndef SDK_FINALROM
|
||||||
|
_ISDbgLib_Initialize();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
(void)OS_UnlockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL);
|
||||||
|
(void)OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID, lockp, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else // SDK_ARM7
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Code for SUB PROCESSOR
|
||||||
|
//
|
||||||
|
|
||||||
|
lockp->extension = 0;
|
||||||
|
while (lockp->ownerID != OS_MAINP_SYSTEM_LOCK_ID)
|
||||||
|
{
|
||||||
|
OSi_WaitByLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef SDK_FINALROM
|
||||||
|
_ISDbgLib_Initialize();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ロックIDカウンタ用フラグ 初期化
|
||||||
|
((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0;
|
||||||
|
((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1;
|
||||||
|
|
||||||
|
// メインプロセッサとの初期化終了の同期
|
||||||
|
lockp->extension = OS_SUBP_SYSTEM_LOCK_ID;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// LOCK
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OSi_DoLockByWord
|
||||||
|
|
||||||
|
Description: do spinlock. keep to try till success
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to lock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
disableFiq whether do disable fiq
|
||||||
|
|
||||||
|
Returns: OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static s32 OSi_DoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
|
||||||
|
BOOL disableFiq)
|
||||||
|
{
|
||||||
|
s32 lastLockFlag;
|
||||||
|
|
||||||
|
while ((lastLockFlag =
|
||||||
|
OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, disableFiq)) > OS_LOCK_SUCCESS)
|
||||||
|
{
|
||||||
|
OSi_WaitByLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
return lastLockFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_LockByWord
|
||||||
|
|
||||||
|
Description: do spinlock. keep to try till success.
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to lock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
|
||||||
|
Returns: OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_LockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void))
|
||||||
|
{
|
||||||
|
return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_LockByWord_IrqAndFiq
|
||||||
|
|
||||||
|
Description: do spinlock. keep to try till success.
|
||||||
|
disable irq and fiq
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to lock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
|
||||||
|
Returns: OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_LockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void))
|
||||||
|
{
|
||||||
|
return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// UNLOCK
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OSi_DoUnlockByWord
|
||||||
|
|
||||||
|
Description: do unlock lock.
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to unlock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
disableFiq whether do disable fiq
|
||||||
|
|
||||||
|
Returns: OS_UNLOCK_SUCCESS success
|
||||||
|
OS_UNLOCK_ERROR error of unlocking lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
|
||||||
|
BOOL disableFIQ)
|
||||||
|
{
|
||||||
|
OSIntrMode lastInterrupts;
|
||||||
|
|
||||||
|
OSi_ASSERT_ID(lockID);
|
||||||
|
|
||||||
|
if (lockID != lockp->ownerID)
|
||||||
|
{
|
||||||
|
return OS_UNLOCK_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- Disable irq/fiq or irq
|
||||||
|
lastInterrupts = (disableFIQ) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts();
|
||||||
|
|
||||||
|
lockp->ownerID = 0;
|
||||||
|
if (ctrlFuncp)
|
||||||
|
{
|
||||||
|
ctrlFuncp();
|
||||||
|
}
|
||||||
|
lockp->lockFlag = 0;
|
||||||
|
|
||||||
|
//---- Restore irq/fiq or irq
|
||||||
|
if (disableFIQ)
|
||||||
|
{
|
||||||
|
(void)OS_RestoreInterrupts_IrqAndFiq(lastInterrupts);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)OS_RestoreInterrupts(lastInterrupts);
|
||||||
|
}
|
||||||
|
|
||||||
|
return OS_UNLOCK_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_UnlockByWord
|
||||||
|
|
||||||
|
Description: do unlock lock.
|
||||||
|
disable irq and fiq
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to unlock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
|
||||||
|
Returns: OS_UNLOCK_SUCCESS success
|
||||||
|
OS_UNLOCK_ERROR error of unlocking lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_UnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void))
|
||||||
|
{
|
||||||
|
return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- for compatibility to old name ('UnLock' <-> 'Unlock')
|
||||||
|
s32 OS_UnLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void))
|
||||||
|
{
|
||||||
|
return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_UnlockByWord_IrqAndFiq
|
||||||
|
|
||||||
|
Description: do unlock lock.
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to unlock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
|
||||||
|
Returns: OS_UNLOCK_SUCCESS success
|
||||||
|
OS_UNLOCK_ERROR error of unlocking lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_UnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void))
|
||||||
|
{
|
||||||
|
return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// TRY LOCK
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OSi_DoTryLockByWord
|
||||||
|
|
||||||
|
Description: try to lock spinlock only once.
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to trying to lock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
disableFiq whether do disable fiq
|
||||||
|
|
||||||
|
Returns: >0 value previous locked id
|
||||||
|
OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void),
|
||||||
|
BOOL disableFIQ)
|
||||||
|
{
|
||||||
|
s32 lastLockFlag;
|
||||||
|
OSIntrMode lastInterrupts;
|
||||||
|
|
||||||
|
OSi_ASSERT_ID(lockID);
|
||||||
|
|
||||||
|
//---- Disable irq/fiq or irq
|
||||||
|
lastInterrupts = (disableFIQ) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts();
|
||||||
|
|
||||||
|
lastLockFlag = (s32)MI_SwapWord(lockID, &lockp->lockFlag);
|
||||||
|
|
||||||
|
if (lastLockFlag == OS_LOCK_SUCCESS)
|
||||||
|
{
|
||||||
|
if (ctrlFuncp)
|
||||||
|
{
|
||||||
|
ctrlFuncp();
|
||||||
|
}
|
||||||
|
lockp->ownerID = lockID;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- Restore irq/fiq or irq
|
||||||
|
if (disableFIQ)
|
||||||
|
{
|
||||||
|
(void)OS_RestoreInterrupts_IrqAndFiq(lastInterrupts);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)OS_RestoreInterrupts(lastInterrupts);
|
||||||
|
}
|
||||||
|
|
||||||
|
return lastLockFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_TryLockByWord
|
||||||
|
|
||||||
|
Description: try to lock spinlock only once.
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to trying to lock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
|
||||||
|
Returns: >0 value previous locked id
|
||||||
|
OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_TryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void))
|
||||||
|
{
|
||||||
|
return OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_TryLockByWord_IrqAndFiq
|
||||||
|
|
||||||
|
Description: try to lock spinlock only once.
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
lockp pointer to trying to lock variable
|
||||||
|
ctrlFuncp function
|
||||||
|
|
||||||
|
Returns: >0 value previous locked id
|
||||||
|
OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_TryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void))
|
||||||
|
{
|
||||||
|
return OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// CARTRIDGE
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_LockCartridge
|
||||||
|
|
||||||
|
Description: lock cartridge
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
|
||||||
|
Returns: OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_LockCartridge(u16 lockID)
|
||||||
|
{
|
||||||
|
s32 lastLockFlag;
|
||||||
|
|
||||||
|
OSi_ASSERT_ID(lockID);
|
||||||
|
|
||||||
|
lastLockFlag =
|
||||||
|
OSi_DoLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE);
|
||||||
|
|
||||||
|
#ifndef SDK_FINALROM
|
||||||
|
_ISDbgLib_AllocateEmualtor();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return lastLockFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_UnlockCartridge
|
||||||
|
|
||||||
|
Description: unlock cartridge
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
|
||||||
|
Returns: OS_UNLOCK_SUCCESS success
|
||||||
|
OS_UNLOCK_ERROR error of unlocking lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_UnlockCartridge(u16 lockID)
|
||||||
|
{
|
||||||
|
s32 lastLockFlag;
|
||||||
|
|
||||||
|
OSi_ASSERT_ID(lockID);
|
||||||
|
|
||||||
|
#ifndef SDK_FINALROM
|
||||||
|
_ISDbgLib_FreeEmulator();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
lastLockFlag =
|
||||||
|
OSi_DoUnlockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_FreeCartridgeBus, TRUE);
|
||||||
|
|
||||||
|
return lastLockFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- for compatibility to old name ('UnLock' <-> 'Unlock')
|
||||||
|
asm s32 OS_UnLockCartridge( u16 lockID )
|
||||||
|
{
|
||||||
|
ldr r1, =OS_UnlockCartridge
|
||||||
|
bx r1
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_TryLockCartridge
|
||||||
|
|
||||||
|
Description: try to lock cartridge
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
|
||||||
|
Returns: >0 value previous locked id
|
||||||
|
OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_TryLockCartridge(u16 lockID)
|
||||||
|
{
|
||||||
|
s32 lastLockFlag;
|
||||||
|
|
||||||
|
lastLockFlag =
|
||||||
|
OSi_DoTryLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus,
|
||||||
|
TRUE);
|
||||||
|
|
||||||
|
#ifndef SDK_FINALROM
|
||||||
|
if (lastLockFlag == OS_LOCK_SUCCESS)
|
||||||
|
{
|
||||||
|
_ISDbgLib_AllocateEmualtor();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return lastLockFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------
|
||||||
|
static void OSi_AllocateCartridgeBus(void)
|
||||||
|
{
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM9); // Cartridge for MAIN
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------
|
||||||
|
static void OSi_FreeCartridgeBus(void)
|
||||||
|
{
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); // Cartridge for SUB
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// CARD
|
||||||
|
//======================================================================
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 20040708:yosizaki
|
||||||
|
* TEG では ARM9 がロックした後 ARM7 へ転送要求する必要がある.
|
||||||
|
* このときロックが共有だと ARM9 のロック中で ARM 7 がロックできない.
|
||||||
|
* ので, 単に個々のロック ID によってプロセッサ内での排他制御を行う.
|
||||||
|
*/
|
||||||
|
#if defined(SDK_TEG)
|
||||||
|
|
||||||
|
static u32 osi_card_lock = OS_LOCK_ID_ERROR;
|
||||||
|
|
||||||
|
static s32 OSi_LockCardID(u16 lockID, BOOL blocking)
|
||||||
|
{
|
||||||
|
s32 ret = OS_LOCK_ID_ERROR;
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
OSIntrMode bak_psr = OS_DisableInterrupts();
|
||||||
|
ret = osi_card_lock;
|
||||||
|
if (ret == OS_LOCK_ID_ERROR)
|
||||||
|
{
|
||||||
|
osi_card_lock = lockID;
|
||||||
|
ret = OS_LOCK_SUCCESS;
|
||||||
|
}
|
||||||
|
(void)OS_RestoreInterrupts(bak_psr);
|
||||||
|
if ((ret != OS_LOCK_SUCCESS) && blocking)
|
||||||
|
{
|
||||||
|
OSi_WaitByLoop();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 OSi_UnlockCardID(u16 lockID)
|
||||||
|
{
|
||||||
|
if (osi_card_lock != lockID)
|
||||||
|
return OS_UNLOCK_ERROR;
|
||||||
|
osi_card_lock = OS_LOCK_ID_ERROR;
|
||||||
|
return OS_UNLOCK_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_LockCard
|
||||||
|
|
||||||
|
Description: lock card
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
|
||||||
|
Returns: OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_LockCard(u16 lockID)
|
||||||
|
{
|
||||||
|
OSi_ASSERT_ID(lockID);
|
||||||
|
|
||||||
|
#if defined(SDK_TEG)
|
||||||
|
return OSi_LockCardID(lockID, TRUE);
|
||||||
|
#else
|
||||||
|
return OS_LockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_AllocateCardBus);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_UnlockCard
|
||||||
|
|
||||||
|
Description: unlock card
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
|
||||||
|
Returns: OS_UNLOCK_SUCCESS success
|
||||||
|
OS_UNLOCK_ERROR error of unlocking lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_UnlockCard(u16 lockID)
|
||||||
|
{
|
||||||
|
OSi_ASSERT_ID(lockID);
|
||||||
|
|
||||||
|
#if defined(SDK_TEG)
|
||||||
|
return OSi_UnlockCardID(lockID);
|
||||||
|
#else
|
||||||
|
return OS_UnlockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_FreeCardBus);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- for compatibility to old name ('UnLock' <-> 'Unlock')
|
||||||
|
asm s32 OS_UnLockCard( u16 lockID )
|
||||||
|
{
|
||||||
|
ldr r1, =OS_UnlockCard
|
||||||
|
bx r1
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_TryLockCard
|
||||||
|
|
||||||
|
Description: try to lock card
|
||||||
|
|
||||||
|
Arguments: lockID lock ID
|
||||||
|
|
||||||
|
Returns: >0 value previous locked id
|
||||||
|
OS_LOCK_SUCCESS success to lock
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
s32 OS_TryLockCard(u16 lockID)
|
||||||
|
{
|
||||||
|
#if defined(SDK_TEG)
|
||||||
|
return OSi_LockCardID(lockID, FALSE);
|
||||||
|
#else
|
||||||
|
return OS_TryLockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_AllocateCardBus);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------
|
||||||
|
static void OSi_AllocateCardBus(void)
|
||||||
|
{
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
MIi_SetCardProcessor(MI_PROCESSOR_ARM9); // Card for MAIN
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------
|
||||||
|
static void OSi_FreeCardBus(void)
|
||||||
|
{
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
MIi_SetCardProcessor(MI_PROCESSOR_ARM7); // Card for SUB
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// READ OWNER
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_ReadOwnerOfLockWord
|
||||||
|
|
||||||
|
Description: read owner id of lock
|
||||||
|
|
||||||
|
・モジュールID が非0 の場合はその時点でどちらのプロセッサ側が
|
||||||
|
所有権を持っているのかを確認できます。
|
||||||
|
・共有リソースの場合は「メインプロセッサ側が所有権を持っている状態」
|
||||||
|
のみを割り込みを禁止することによって維持することができます。
|
||||||
|
その他の状態はサブプロセッサが変化させてしまう可能性があります。
|
||||||
|
・所有モジュールID が 0 であってもロック変数が解除されているとは限りません。
|
||||||
|
|
||||||
|
Arguments: lockp pointer to lock
|
||||||
|
|
||||||
|
Returns: owner id
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
u16 OS_ReadOwnerOfLockWord(OSLockWord *lockp)
|
||||||
|
{
|
||||||
|
return lockp->ownerID;
|
||||||
|
}
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// LOCK ID
|
||||||
|
//======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_GetLockID
|
||||||
|
|
||||||
|
Description: get lock ID
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: OS_LOCK_ID_ERROR, if fail to get ID
|
||||||
|
|
||||||
|
if ARM9
|
||||||
|
0x40~0x6f lockID
|
||||||
|
else if ARM7
|
||||||
|
0x80~0xaf lockID
|
||||||
|
endif
|
||||||
|
|
||||||
|
*Notice: ID is allocated only 48 pattern at a highest.
|
||||||
|
|
||||||
|
IDは48種類までしか割り当てることができません。
|
||||||
|
モジュール内にて複数のロック変数を制御する場合は
|
||||||
|
できるだけ1つのIDを使用するようにして下さい。
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
asm s32 OS_GetLockID( void )
|
||||||
|
{
|
||||||
|
//---- フラグの前32ビットに立っているフラグ(空きID)があるか
|
||||||
|
ldr r3, =OSi_ANYP_LOCK_ID_FLAG
|
||||||
|
ldr r1, [r3, #0]
|
||||||
|
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
clz r2, r1
|
||||||
|
#else
|
||||||
|
mov r2, #0
|
||||||
|
mov r0, #0x80000000
|
||||||
|
_lp1:
|
||||||
|
tst r1, r0
|
||||||
|
bne _ex1
|
||||||
|
add r2, r2, #1
|
||||||
|
cmp r2, #32
|
||||||
|
beq _ex1
|
||||||
|
|
||||||
|
mov r0, r0, lsr #1
|
||||||
|
b _lp1
|
||||||
|
_ex1:
|
||||||
|
#endif
|
||||||
|
cmp r2, #32
|
||||||
|
|
||||||
|
//---- 空きIDがあるとき
|
||||||
|
movne r0, #OSi_ANYP_LOCK_ID_START
|
||||||
|
bne _1
|
||||||
|
|
||||||
|
//---- 後ろ323ビットに立っているフラグ(空きID)があるか
|
||||||
|
add r3, r3, #4
|
||||||
|
ldr r1, [r3, #0]
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
clz r2, r1
|
||||||
|
#else
|
||||||
|
mov r2, #0
|
||||||
|
mov r0, #0x80000000
|
||||||
|
_lp2:
|
||||||
|
tst r1, r0
|
||||||
|
bne _ex2
|
||||||
|
add r2, r2, #1
|
||||||
|
cmp r2, #32
|
||||||
|
beq _ex2
|
||||||
|
|
||||||
|
mov r0, r0, lsr #1
|
||||||
|
b _lp2
|
||||||
|
_ex2:
|
||||||
|
#endif
|
||||||
|
cmp r2, #32
|
||||||
|
|
||||||
|
//---- 空きIDがない
|
||||||
|
ldr r0, =OS_LOCK_ID_ERROR
|
||||||
|
bxeq lr
|
||||||
|
|
||||||
|
//---- 空きIDがあるとき
|
||||||
|
mov r0, #OSi_ANYP_LOCK_ID_START+32
|
||||||
|
|
||||||
|
_1:
|
||||||
|
add r0, r0, r2
|
||||||
|
mov r1, #0x80000000
|
||||||
|
mov r1, r1, lsr r2
|
||||||
|
|
||||||
|
ldr r2, [r3, #0]
|
||||||
|
bic r2, r2, r1
|
||||||
|
str r2, [r3, #0]
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_ReleaseLockID
|
||||||
|
|
||||||
|
Description: release lock ID
|
||||||
|
|
||||||
|
Arguments: id to tend to release
|
||||||
|
|
||||||
|
Returns: None.
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void OS_ReleaseLockID( register u16 lockID )
|
||||||
|
{
|
||||||
|
#pragma unused( lockID )
|
||||||
|
|
||||||
|
ldr r3, =OSi_ANYP_LOCK_ID_FLAG
|
||||||
|
|
||||||
|
cmp r0, #OSi_ANYP_LOCK_ID_START+32
|
||||||
|
addpl r3, r3, #4
|
||||||
|
|
||||||
|
subpl r0, r0, #OSi_ANYP_LOCK_ID_START+32
|
||||||
|
submi r0, r0, #OSi_ANYP_LOCK_ID_START
|
||||||
|
|
||||||
|
mov r1, #0x80000000
|
||||||
|
mov r1, r1, lsr r0
|
||||||
|
|
||||||
|
ldr r2, [r3, #0]
|
||||||
|
orr r2, r2, r1
|
||||||
|
str r2, [r3, #0]
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#include <nitro/codereset.h>
|
379
build/libraries/os/common/os_system_twl.c
Normal file
379
build/libraries/os/common/os_system_twl.c
Normal file
@ -0,0 +1,379 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS
|
||||||
|
File: os_system.c
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: os_system.c,v $
|
||||||
|
Revision 1.33 2006/01/18 02:11:30 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.32 2006/01/10 06:07:34 okubata_ryoma
|
||||||
|
OS_Terminate関連の関数を別ファイルへ移動
|
||||||
|
|
||||||
|
Revision 1.31 2005/12/08 07:06:09 okubata_ryoma
|
||||||
|
small fix
|
||||||
|
|
||||||
|
Revision 1.30 2005/11/28 04:26:56 seiki_masashi
|
||||||
|
small fix
|
||||||
|
|
||||||
|
Revision 1.29 2005/11/25 08:30:20 terui
|
||||||
|
OS_WaitVBlankIntr内でSVC_WaitByLoopを呼ぶように改定
|
||||||
|
|
||||||
|
Revision 1.28 2005/11/22 09:11:28 yosizaki
|
||||||
|
support SDK_ENABLE_ARM7_PRINT.
|
||||||
|
|
||||||
|
Revision 1.27 2005/10/07 08:21:16 yada
|
||||||
|
add OS_WaitVBlankIntr()
|
||||||
|
|
||||||
|
Revision 1.26 2005/09/09 04:36:22 yada
|
||||||
|
print "\n" before exit string
|
||||||
|
|
||||||
|
Revision 1.25 2005/09/01 00:31:19 yada
|
||||||
|
avoid warning at FINALROM build in OS_Exit()
|
||||||
|
|
||||||
|
Revision 1.24 2005/08/31 12:02:32 yada
|
||||||
|
add OS_Exit()
|
||||||
|
|
||||||
|
Revision 1.23 2005/03/04 11:09:27 yasu
|
||||||
|
__declspec(weak) を SDK_WEAK_SYMBOL に置き換え
|
||||||
|
|
||||||
|
Revision 1.22 2005/02/28 05:26:29 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.21 2005/02/18 08:51:35 yasu
|
||||||
|
著作年度変更
|
||||||
|
|
||||||
|
Revision 1.20 2005/02/18 06:22:20 yasu
|
||||||
|
Signed/Unsigned 変換警告抑制
|
||||||
|
|
||||||
|
Revision 1.19 2004/11/24 10:55:51 yada
|
||||||
|
Let OS_Terminate() and OS_Halt() be weak symbols.
|
||||||
|
|
||||||
|
Revision 1.18 2004/11/24 04:33:51 yada
|
||||||
|
just fix typo
|
||||||
|
|
||||||
|
Revision 1.17 2004/09/02 06:22:17 yada
|
||||||
|
only change comment
|
||||||
|
|
||||||
|
Revision 1.16 2004/05/24 04:48:29 yada
|
||||||
|
OS_WaitIntr() -> OS_WaitInterrupt()
|
||||||
|
|
||||||
|
Revision 1.15 2004/05/20 06:36:24 yasu
|
||||||
|
ARM7: Use SVC_WaitByLoop in OS_SpinWait
|
||||||
|
|
||||||
|
Revision 1.14 2004/05/10 11:22:19 yada
|
||||||
|
add OS_WaitIntr()
|
||||||
|
|
||||||
|
Revision 1.13 2004/04/06 11:22:42 yada
|
||||||
|
add "bx lr" in OS_Halt() for ARM9
|
||||||
|
|
||||||
|
Revision 1.12 2004/04/06 01:37:45 yada
|
||||||
|
OS_Terminate() 追加
|
||||||
|
|
||||||
|
Revision 1.11 2004/03/29 02:56:32 yada
|
||||||
|
OS_Halt() は SVC_Halt() を呼ぶように変更
|
||||||
|
|
||||||
|
Revision 1.10 2004/03/26 02:53:46 yasu
|
||||||
|
apply systemcall 2 for OS_Halt at ARM7
|
||||||
|
|
||||||
|
Revision 1.9 2004/03/04 09:47:04 yada
|
||||||
|
OSDisableInterrupt() を IRQ 禁止にした。
|
||||||
|
IRQ/FIQ 禁止には別関数を用意した。
|
||||||
|
|
||||||
|
Revision 1.8 2004/02/27 01:55:00 yasu
|
||||||
|
add OS_SpinWait, move OS_Halt into os_system.c
|
||||||
|
|
||||||
|
Revision 1.7 2004/02/13 08:45:30 yasu
|
||||||
|
uncomment all if ARM7
|
||||||
|
|
||||||
|
Revision 1.6 2004/02/10 12:12:43 yada
|
||||||
|
OS_GetDTCMAddress, OS_GetITCMAddress を os_tcm.cに移行
|
||||||
|
|
||||||
|
Revision 1.5 2004/02/10 11:21:47 yada
|
||||||
|
(none)
|
||||||
|
|
||||||
|
Revision 1.4 2004/02/10 11:19:56 yada
|
||||||
|
Interrupt 関係のinline をやめる
|
||||||
|
|
||||||
|
Revision 1.3 2004/02/10 02:29:27 yada
|
||||||
|
ARM9にしか有効でないコードのifdef
|
||||||
|
|
||||||
|
Revision 1.2 2004/02/10 01:25:30 yasu
|
||||||
|
include code32.h
|
||||||
|
|
||||||
|
Revision 1.1 2004/02/09 11:36:55 yada
|
||||||
|
OS_GetDTCMAddress, OS_GetITCMAddress 作成
|
||||||
|
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro/os.h>
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// CONTROL INTERRUPT
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_EnableInterrupts
|
||||||
|
|
||||||
|
Description: Set CPSR to enable irq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSIntrMode OS_EnableInterrupts( void )
|
||||||
|
{
|
||||||
|
mrs r0, cpsr
|
||||||
|
bic r1, r0, #HW_PSR_IRQ_DISABLE
|
||||||
|
msr cpsr_c, r1
|
||||||
|
and r0, r0, #HW_PSR_IRQ_DISABLE
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_DisableInterrupts
|
||||||
|
|
||||||
|
Description: Set CPSR to disable irq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSIntrMode OS_DisableInterrupts( void )
|
||||||
|
{
|
||||||
|
mrs r0, cpsr
|
||||||
|
orr r1, r0, #HW_PSR_IRQ_DISABLE
|
||||||
|
msr cpsr_c, r1
|
||||||
|
and r0, r0, #HW_PSR_IRQ_DISABLE
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_RestoreInterrupts
|
||||||
|
|
||||||
|
Description: Restore CPSR irq interrupt
|
||||||
|
|
||||||
|
Arguments: state of irq interrupt bit
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSIntrMode OS_RestoreInterrupts( register OSIntrMode state )
|
||||||
|
{
|
||||||
|
mrs r1, cpsr
|
||||||
|
bic r2, r1, #HW_PSR_IRQ_DISABLE
|
||||||
|
orr r2, r2, r0
|
||||||
|
msr cpsr_c, r2
|
||||||
|
and r0, r1, #HW_PSR_IRQ_DISABLE
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_EnableInterrupts_IrqAndFiq
|
||||||
|
|
||||||
|
Description: Set CPSR to enable irq and fiq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSIntrMode OS_EnableInterrupts_IrqAndFiq( void )
|
||||||
|
{
|
||||||
|
mrs r0, cpsr
|
||||||
|
bic r1, r0, #HW_PSR_IRQ_FIQ_DISABLE
|
||||||
|
msr cpsr_c, r1
|
||||||
|
and r0, r0, #HW_PSR_IRQ_FIQ_DISABLE
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_DisableInterrupts_IrqAndFiq
|
||||||
|
|
||||||
|
Description: Set CPSR to disable irq and fiq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSIntrMode OS_DisableInterrupts_IrqAndFiq( void )
|
||||||
|
{
|
||||||
|
mrs r0, cpsr
|
||||||
|
orr r1, r0, #HW_PSR_IRQ_FIQ_DISABLE
|
||||||
|
msr cpsr_c, r1
|
||||||
|
and r0, r0, #HW_PSR_IRQ_FIQ_DISABLE
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_RestoreInterrupts_IrqAndFiq
|
||||||
|
|
||||||
|
Description: Restore CPSR irq and fiq interrupt
|
||||||
|
|
||||||
|
Arguments: state of irq and fiq interrupt bit
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq( register OSIntrMode state )
|
||||||
|
{
|
||||||
|
mrs r1, cpsr
|
||||||
|
bic r2, r1, #HW_PSR_IRQ_FIQ_DISABLE
|
||||||
|
orr r2, r2, r0
|
||||||
|
msr cpsr_c, r2
|
||||||
|
and r0, r1, #HW_PSR_IRQ_FIQ_DISABLE
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_GetCpsrIrq
|
||||||
|
|
||||||
|
Description: Get current state of CPSR irq interrupt
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSIntrMode_Irq OS_GetCpsrIrq( void )
|
||||||
|
{
|
||||||
|
mrs r0, cpsr
|
||||||
|
and r0, r0, #HW_PSR_IRQ_DISABLE
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// PROCESSER MODE
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_GetProcMode
|
||||||
|
|
||||||
|
Description: Get processor mode from CPSR
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: CPU processor mode (field 0x10-0x1f)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm OSProcMode OS_GetProcMode( void )
|
||||||
|
{
|
||||||
|
mrs r0, cpsr
|
||||||
|
and r0, r0, #HW_PSR_CPU_MODE_MASK
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <nitro/codereset.h>
|
||||||
|
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// WAIT
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_SpinWait
|
||||||
|
|
||||||
|
Description: Spin and Wait for specified CPU cycles at least
|
||||||
|
|
||||||
|
Arguments: cycles waiting CPU cycle
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#if defined(SDK_ARM9) || defined(SDK_DEBUGGER_ARM)
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
asm void OS_SpinWait( u32 cycle )
|
||||||
|
{
|
||||||
|
_1: subs r0, r0, #4 // 3 cycle
|
||||||
|
bcs _1 // 1 cycle
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#include <nitro/codereset.h>
|
||||||
|
#else
|
||||||
|
void OS_SpinWait(u32 cycle)
|
||||||
|
{
|
||||||
|
SVC_WaitByLoop((s32)cycle / 4);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_WaitInterrupt
|
||||||
|
|
||||||
|
Description: wait specifiled interrupt.
|
||||||
|
the difference between OS_WaitIrq and OS_WaitInterrupt is:
|
||||||
|
in waiting interrupt
|
||||||
|
OS_WaitIrq does switch thread,
|
||||||
|
OS_WaitInterrupt doesn't switch thread.
|
||||||
|
OS_WaitIrq wait by using OS_SleepThread() with threadQueue,
|
||||||
|
OS_WaitInterrupt wait by using OS_Halt().
|
||||||
|
if SDK_NO_THREAD defined, 2 functions become same.
|
||||||
|
|
||||||
|
Arguments: clear TRUE if want to clear interrupt flag before wait.
|
||||||
|
FALSE if not.
|
||||||
|
irqFlags bit of interrupts to wait for
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void OS_WaitInterrupt(BOOL clear, OSIrqMask irqFlags)
|
||||||
|
{
|
||||||
|
OSIntrMode cpsrIrq = OS_DisableInterrupts();
|
||||||
|
BOOL ime = OS_EnableIrq();
|
||||||
|
|
||||||
|
if (clear)
|
||||||
|
{
|
||||||
|
(void)OS_ClearIrqCheckFlag(irqFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!(OS_GetIrqCheckFlag() & irqFlags))
|
||||||
|
{
|
||||||
|
OS_Halt();
|
||||||
|
(void)OS_EnableInterrupts();
|
||||||
|
(void)OS_DisableInterrupts();
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)OS_ClearIrqCheckFlag(irqFlags);
|
||||||
|
(void)OS_RestoreIrq(ime);
|
||||||
|
(void)OS_RestoreInterrupts(cpsrIrq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_WaitVBlankIntr
|
||||||
|
|
||||||
|
Description: wait till vblank interrupt occurred.
|
||||||
|
the difference between SVC_WaitVBlankIntr and OS_WaitVBlankIntr is:
|
||||||
|
OS_WaitVBlankIntr does switch thread,
|
||||||
|
SVC_WaitVBlankIntr doesn't switch thread.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void OS_WaitVBlankIntr(void)
|
||||||
|
{
|
||||||
|
#ifdef SDK_DEBUGGER_ARM
|
||||||
|
OS_SpinWait(4);
|
||||||
|
#else
|
||||||
|
SVC_WaitByLoop(1);
|
||||||
|
#endif
|
||||||
|
#if defined(SDK_ENABLE_ARM7_PRINT) && defined(SDK_ARM9)
|
||||||
|
// PrintServer for ARM7 (if specified)
|
||||||
|
OS_PrintServer();
|
||||||
|
#endif
|
||||||
|
OS_WaitIrq(TRUE, OS_IE_V_BLANK);
|
||||||
|
}
|
63
build/libraries/vlink/ARM7/Makefile
Normal file
63
build/libraries/vlink/ARM7/Makefile
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries_sp - os
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
#SUBMAKES = Makefile.CALLTRACE \
|
||||||
|
# Makefile.FUNCTIONCOST
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= TRUE
|
||||||
|
|
||||||
|
# Codegen for sub processer
|
||||||
|
TWL_PROC = ARM7
|
||||||
|
|
||||||
|
SRCDIR = ../common .
|
||||||
|
SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \
|
||||||
|
$(TWL_NITROSDK_ROOT)/build/libraries/os/ARM7/src \
|
||||||
|
|
||||||
|
SRCS = \
|
||||||
|
osemu.c \
|
||||||
|
osemu2.c \
|
||||||
|
|
||||||
|
TARGET_LIB = libvlink_sp$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# DEBUG版ビルドの場合、RELEASE版でビルドして
|
||||||
|
# DEBUG版のライブラリを装います。
|
||||||
|
|
||||||
|
ifdef NITRO_DEBUG
|
||||||
|
NITRO_BUILD_TYPE = RELEASE
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
61
build/libraries/vlink/ARM9/Makefile
Normal file
61
build/libraries/vlink/ARM9/Makefile
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - os
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
SUBMAKES =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
TWL_CODEGEN_ALL ?= True
|
||||||
|
|
||||||
|
SRCDIR = ../common .
|
||||||
|
SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/os/common/src \
|
||||||
|
$(TWL_NITROSDK_ROOT)/build/libraries/os/ARM9/src \
|
||||||
|
|
||||||
|
SRCS = \
|
||||||
|
osemu.c \
|
||||||
|
osemu2.c \
|
||||||
|
|
||||||
|
|
||||||
|
TARGET_LIB = libvlink$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
ifdef NITRO_CALLTRACE
|
||||||
|
CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_CALL_TRACE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef NITRO_FUNCTIONCOST
|
||||||
|
CCFLAGS += -DOS_PROFILE_AVAILABLE -DOS_PROFILE_FUNCTION_COST
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef NITRO_TCM_APPLY
|
||||||
|
CCFLAGS += -DSDK_TCM_APPLY
|
||||||
|
endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
34
build/libraries/vlink/Makefile
Normal file
34
build/libraries/vlink/Makefile
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - libraries - vlink
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = ARM9
|
||||||
|
|
||||||
|
#ifdef TWL_WITH_ARM7
|
||||||
|
SUBDIRS += ARM7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
1022
build/libraries/vlink/common/osemu.c
Normal file
1022
build/libraries/vlink/common/osemu.c
Normal file
File diff suppressed because it is too large
Load Diff
511
build/libraries/vlink/common/osemu2.c
Normal file
511
build/libraries/vlink/common/osemu2.c
Normal file
@ -0,0 +1,511 @@
|
|||||||
|
//#include <kernel.h>
|
||||||
|
#include <twl.h>
|
||||||
|
#include <twl/vlink.h>
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
// vsnprintf from NitroSDK
|
||||||
|
|
||||||
|
typedef struct dst_string_tag
|
||||||
|
{
|
||||||
|
size_t len;
|
||||||
|
char *cur;
|
||||||
|
char *base;
|
||||||
|
} dst_string;
|
||||||
|
|
||||||
|
static void string_put_char(dst_string * p, char c)
|
||||||
|
{
|
||||||
|
if (p->len > 0)
|
||||||
|
*p->cur = c, --p->len;
|
||||||
|
++p->cur;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void string_fill_char(dst_string * p, char c, int n)
|
||||||
|
{
|
||||||
|
if (n > 0)
|
||||||
|
{
|
||||||
|
size_t i, k = p->len;
|
||||||
|
if (k > (size_t) n)
|
||||||
|
k = (size_t) n;
|
||||||
|
for (i = 0; i < k; ++i)
|
||||||
|
p->cur[i] = c;
|
||||||
|
p->len -= k;
|
||||||
|
p->cur += n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void string_put_string(dst_string * p, const char *s, int n)
|
||||||
|
{
|
||||||
|
if (n > 0)
|
||||||
|
{
|
||||||
|
size_t i, k = p->len;
|
||||||
|
if (k > (size_t) n)
|
||||||
|
k = (size_t) n;
|
||||||
|
for (i = 0; i < k; ++i)
|
||||||
|
p->cur[i] = s[i];
|
||||||
|
p->len -= k;
|
||||||
|
p->cur += n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int my_vsnprintf(char *dst, size_t len, const char *fmt, va_list vlist)
|
||||||
|
{
|
||||||
|
char buf[24];
|
||||||
|
int n_buf;
|
||||||
|
char prefix[2];
|
||||||
|
int n_prefix;
|
||||||
|
|
||||||
|
const char *s = fmt;
|
||||||
|
|
||||||
|
dst_string str;
|
||||||
|
str.len = len, str.cur = str.base = dst;
|
||||||
|
|
||||||
|
while (*s)
|
||||||
|
{
|
||||||
|
if ((unsigned int)(((unsigned char)*s ^ 0x20) - 0xA1) < 0x3C)
|
||||||
|
{
|
||||||
|
/* Shift JIS character */
|
||||||
|
string_put_char(&str, *s++);
|
||||||
|
if (*s)
|
||||||
|
string_put_char(&str, *s++);
|
||||||
|
}
|
||||||
|
else if (*s != '%')
|
||||||
|
{
|
||||||
|
/* normal ASCII character */
|
||||||
|
string_put_char(&str, *s++);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* output with format */
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
flag_blank = 000001, /* ' ' */
|
||||||
|
flag_plus = 000002, /* '+' */
|
||||||
|
flag_sharp = 000004, /* '#' */
|
||||||
|
flag_minus = 000010, /* '-' */
|
||||||
|
flag_zero = 000020, /* '0' */
|
||||||
|
flag_l1 = 000040, /* "l" */
|
||||||
|
flag_h1 = 000100, /* "h" */
|
||||||
|
flag_l2 = 000200, /* "ll" */
|
||||||
|
flag_h2 = 000400, /* "hh" */
|
||||||
|
flag_unsigned = 010000, /* 'o', 'u', ... */
|
||||||
|
flag_end
|
||||||
|
};
|
||||||
|
int flag = 0, width = 0, precision = -1, radix = 10;
|
||||||
|
char hex_char = 'a' - 10;
|
||||||
|
const char *p_start = s;
|
||||||
|
/* flags */
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
switch (*++s)
|
||||||
|
{
|
||||||
|
case '+':
|
||||||
|
if (s[-1] != ' ')
|
||||||
|
break;
|
||||||
|
flag |= flag_plus;
|
||||||
|
continue;
|
||||||
|
case ' ':
|
||||||
|
flag |= flag_blank;
|
||||||
|
continue;
|
||||||
|
case '-':
|
||||||
|
flag |= flag_minus;
|
||||||
|
continue;
|
||||||
|
case '0':
|
||||||
|
flag |= flag_zero;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* width */
|
||||||
|
if (*s == '*')
|
||||||
|
{
|
||||||
|
++s, width = va_arg(vlist, int);
|
||||||
|
if (width < 0)
|
||||||
|
width = -width, flag |= flag_minus;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ((*s >= '0') && (*s <= '9'))
|
||||||
|
width = (width * 10) + *s++ - '0';
|
||||||
|
}
|
||||||
|
/* precision */
|
||||||
|
if (*s == '.')
|
||||||
|
{
|
||||||
|
++s, precision = 0;
|
||||||
|
if (*s == '*')
|
||||||
|
{
|
||||||
|
++s, precision = va_arg(vlist, int);
|
||||||
|
if (precision < 0)
|
||||||
|
precision = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ((*s >= '0') && (*s <= '9'))
|
||||||
|
precision = (precision * 10) + *s++ - '0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* option */
|
||||||
|
switch (*s)
|
||||||
|
{
|
||||||
|
case 'h':
|
||||||
|
if (*++s != 'h')
|
||||||
|
flag |= flag_h1;
|
||||||
|
else
|
||||||
|
++s, flag |= flag_h2;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
if (*++s != 'l')
|
||||||
|
flag |= flag_l1;
|
||||||
|
else
|
||||||
|
++s, flag |= flag_l2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* type */
|
||||||
|
switch (*s)
|
||||||
|
{
|
||||||
|
case 'd': /* signed decimal */
|
||||||
|
case 'i': /* signed decimal */
|
||||||
|
goto put_integer;
|
||||||
|
case 'o': /* unsigned octal */
|
||||||
|
radix = 8;
|
||||||
|
flag |= flag_unsigned;
|
||||||
|
goto put_integer;
|
||||||
|
case 'u': /* unsigned decimal */
|
||||||
|
flag |= flag_unsigned;
|
||||||
|
goto put_integer;
|
||||||
|
case 'X': /* unsigned hexadecimal */
|
||||||
|
hex_char = 'A' - 10;
|
||||||
|
goto put_hexadecimal;
|
||||||
|
case 'x': /* unsigned hexadecimal */
|
||||||
|
goto put_hexadecimal;
|
||||||
|
case 'p': /* pointer */
|
||||||
|
/* equal to code warrior */
|
||||||
|
flag |= flag_sharp;
|
||||||
|
precision = 8;
|
||||||
|
goto put_hexadecimal;
|
||||||
|
|
||||||
|
case 'c': /* character */
|
||||||
|
if (precision >= 0)
|
||||||
|
goto put_invalid;
|
||||||
|
{
|
||||||
|
int c = va_arg(vlist, int);
|
||||||
|
width -= 1;
|
||||||
|
if (flag & flag_minus)
|
||||||
|
{
|
||||||
|
string_put_char(&str, (char)c);
|
||||||
|
string_fill_char(&str, ' ', width);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char pad = (char)((flag & flag_zero) ? '0' : ' ');
|
||||||
|
string_fill_char(&str, pad, width);
|
||||||
|
string_put_char(&str, (char)c);
|
||||||
|
}
|
||||||
|
++s;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's': /* string */
|
||||||
|
{
|
||||||
|
int n_buf = 0;
|
||||||
|
const char *p_buf = va_arg(vlist, const char *);
|
||||||
|
if (precision < 0)
|
||||||
|
{
|
||||||
|
while (p_buf[n_buf])
|
||||||
|
++n_buf;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ((n_buf < precision) && p_buf[n_buf])
|
||||||
|
++n_buf;
|
||||||
|
}
|
||||||
|
width -= n_buf;
|
||||||
|
if (flag & flag_minus)
|
||||||
|
{
|
||||||
|
string_put_string(&str, p_buf, n_buf);
|
||||||
|
string_fill_char(&str, ' ', width);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char pad = (char)((flag & flag_zero) ? '0' : ' ');
|
||||||
|
string_fill_char(&str, pad, width);
|
||||||
|
string_put_string(&str, p_buf, n_buf);
|
||||||
|
}
|
||||||
|
++s;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'n': /* store the number of output */
|
||||||
|
{
|
||||||
|
int pos = str.cur - str.base;
|
||||||
|
if (flag & flag_h2)
|
||||||
|
;
|
||||||
|
else if (flag & flag_h1)
|
||||||
|
*va_arg(vlist, signed short *) = (signed short)pos;
|
||||||
|
else if (flag & flag_l2)
|
||||||
|
*va_arg(vlist, u64 *) = (u64)pos;
|
||||||
|
else
|
||||||
|
*va_arg(vlist, signed int *) = (signed int)pos;
|
||||||
|
}
|
||||||
|
++s;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '%': /* output '%' */
|
||||||
|
if (p_start + 1 != s)
|
||||||
|
goto put_invalid;
|
||||||
|
string_put_char(&str, *s++);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* invalid type */
|
||||||
|
goto put_invalid;
|
||||||
|
|
||||||
|
put_invalid:
|
||||||
|
string_put_string(&str, p_start, s - p_start);
|
||||||
|
break;
|
||||||
|
|
||||||
|
put_hexadecimal:
|
||||||
|
radix = 16;
|
||||||
|
flag |= flag_unsigned;
|
||||||
|
put_integer:
|
||||||
|
{
|
||||||
|
u64 val = 0;
|
||||||
|
n_prefix = 0;
|
||||||
|
|
||||||
|
if (flag & flag_minus)
|
||||||
|
flag &= ~flag_zero;
|
||||||
|
if (precision < 0)
|
||||||
|
precision = 1;
|
||||||
|
else
|
||||||
|
flag &= ~flag_zero;
|
||||||
|
|
||||||
|
if (flag & flag_unsigned)
|
||||||
|
{
|
||||||
|
if (flag & flag_h2)
|
||||||
|
val = (unsigned char)va_arg(vlist, int);
|
||||||
|
else if (flag & flag_h1)
|
||||||
|
val = (unsigned short)va_arg(vlist, int);
|
||||||
|
else if (flag & flag_l2)
|
||||||
|
val = va_arg(vlist, u64);
|
||||||
|
else
|
||||||
|
val = va_arg(vlist, unsigned long);
|
||||||
|
flag &= ~(flag_plus | flag_blank);
|
||||||
|
if (flag & flag_sharp)
|
||||||
|
{
|
||||||
|
if (radix == 16)
|
||||||
|
{
|
||||||
|
if (val != 0)
|
||||||
|
{
|
||||||
|
prefix[0] = (char)(hex_char + (10 + 'x' - 'a'));
|
||||||
|
prefix[1] = '0';
|
||||||
|
n_prefix = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (radix == 8)
|
||||||
|
{
|
||||||
|
prefix[0] = '0';
|
||||||
|
n_prefix = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (flag & flag_h2)
|
||||||
|
val = (char)va_arg(vlist, int);
|
||||||
|
else if (flag & flag_h1)
|
||||||
|
val = (short)va_arg(vlist, int);
|
||||||
|
else if (flag & flag_l2)
|
||||||
|
val = va_arg(vlist, u64);
|
||||||
|
else
|
||||||
|
val = va_arg(vlist, long);
|
||||||
|
if ((val >> 32) & 0x80000000)
|
||||||
|
{
|
||||||
|
val = ~val + 1;
|
||||||
|
prefix[0] = '-';
|
||||||
|
n_prefix = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (val || precision)
|
||||||
|
{
|
||||||
|
if (flag & flag_plus)
|
||||||
|
{
|
||||||
|
prefix[0] = '+';
|
||||||
|
n_prefix = 1;
|
||||||
|
}
|
||||||
|
else if (flag & flag_blank)
|
||||||
|
{
|
||||||
|
prefix[0] = ' ';
|
||||||
|
n_prefix = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
n_buf = 0;
|
||||||
|
switch (radix)
|
||||||
|
{
|
||||||
|
case 8:
|
||||||
|
while (val != 0)
|
||||||
|
{
|
||||||
|
int d = (int)(val & 0x07);
|
||||||
|
val >>= 3;
|
||||||
|
buf[n_buf++] = (char)(d + '0');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
if ((val >> 32) == 0)
|
||||||
|
{
|
||||||
|
u32 v = (u32)val;
|
||||||
|
while (v != 0)
|
||||||
|
{
|
||||||
|
// u32 と定数の除算であれば、コンパイラが自動的に
|
||||||
|
// マジックナンバーを使用した積算に変換する
|
||||||
|
u32 r = v / 10;
|
||||||
|
int d = (int)(v - (r * 10));
|
||||||
|
v = r;
|
||||||
|
buf[n_buf++] = (char)(d + '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (val != 0)
|
||||||
|
{
|
||||||
|
u64 r = val / 10;
|
||||||
|
int d = (int)(val - (r * 10));
|
||||||
|
val = r;
|
||||||
|
buf[n_buf++] = (char)(d + '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
while (val != 0)
|
||||||
|
{
|
||||||
|
int d = (int)(val & 0x0f);
|
||||||
|
val >>= 4;
|
||||||
|
buf[n_buf++] = (char)((d < 10) ? (d + '0') : (d + hex_char));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((n_prefix > 0) && (prefix[0] == '0'))
|
||||||
|
{
|
||||||
|
n_prefix = 0;
|
||||||
|
buf[n_buf++] = '0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
goto put_to_stream;
|
||||||
|
|
||||||
|
put_to_stream:
|
||||||
|
{
|
||||||
|
int n_pad = precision - n_buf;
|
||||||
|
if (flag & flag_zero)
|
||||||
|
{
|
||||||
|
if (n_pad < width - n_buf - n_prefix)
|
||||||
|
n_pad = width - n_buf - n_prefix;
|
||||||
|
}
|
||||||
|
if (n_pad > 0)
|
||||||
|
width -= n_pad;
|
||||||
|
width -= n_prefix + n_buf;
|
||||||
|
if (!(flag & flag_minus))
|
||||||
|
string_fill_char(&str, ' ', width);
|
||||||
|
while (n_prefix > 0)
|
||||||
|
string_put_char(&str, prefix[--n_prefix]);
|
||||||
|
string_fill_char(&str, '0', n_pad);
|
||||||
|
while (n_buf > 0)
|
||||||
|
string_put_char(&str, buf[--n_buf]);
|
||||||
|
if (flag & flag_minus)
|
||||||
|
string_fill_char(&str, ' ', width);
|
||||||
|
++s;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str.len > 0)
|
||||||
|
*str.cur = '\0';
|
||||||
|
else if (len > 0)
|
||||||
|
str.base[len - 1] = '\0';
|
||||||
|
return str.cur - str.base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0 // miya
|
||||||
|
static int my_snprintf(char *dst, size_t size, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
va_list va;
|
||||||
|
va_start(va, fmt);
|
||||||
|
ret = my_vsnprintf( dst, size, fmt, va );
|
||||||
|
va_end(va);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int my_sprintf(char *dst, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
va_list va;
|
||||||
|
va_start(va, fmt);
|
||||||
|
ret = my_vsprintf(dst, fmt, va);
|
||||||
|
va_end(va);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int my_vsprintf(char *dst, const char *fmt, va_list vlist)
|
||||||
|
{
|
||||||
|
return my_vsnprintf(dst, 0x7FFFFFFF, fmt, vlist);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define PRINTF_LINE_BUF_SIZE 256
|
||||||
|
|
||||||
|
size_t my_strlen(char *s1)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
while( *s1 != '\0' ) {
|
||||||
|
i++;
|
||||||
|
s1++;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void vlink_dos_printf(const char *text, ...)
|
||||||
|
{
|
||||||
|
va_list vlist;
|
||||||
|
char temp[PRINTF_LINE_BUF_SIZE];
|
||||||
|
s32 len;
|
||||||
|
|
||||||
|
va_start(vlist, text);
|
||||||
|
(void)my_vsnprintf(temp, PRINTF_LINE_BUF_SIZE-1, text, vlist);
|
||||||
|
|
||||||
|
va_end(vlist);
|
||||||
|
|
||||||
|
len = my_strlen(temp);
|
||||||
|
if( len ) {
|
||||||
|
(void)vlink_dos_putstring_console(temp,len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void vlink_dos_fprintf(int fd, const char *text, ...)
|
||||||
|
{
|
||||||
|
va_list vlist;
|
||||||
|
char temp[PRINTF_LINE_BUF_SIZE];
|
||||||
|
s32 len;
|
||||||
|
|
||||||
|
va_start(vlist, text);
|
||||||
|
(void)my_vsnprintf(temp, PRINTF_LINE_BUF_SIZE-1, text, vlist);
|
||||||
|
va_end(vlist);
|
||||||
|
|
||||||
|
len = my_strlen(temp);
|
||||||
|
if( len ) {
|
||||||
|
(void)vlink_dos_write(fd,temp,len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
31
build/tests/Makefile
Normal file
31
build/tests/Makefile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlDK - tests
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = os
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
31
build/tests/os/Makefile
Normal file
31
build/tests/os/Makefile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - tests
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = alarm-1 _ARM7-alarm-2
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
45
build/tests/os/_ARM7-alarm-2/Makefile
Normal file
45
build/tests/os/_ARM7-alarm-2/Makefile
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - OS - demos - _ARM7-alarm-2
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#TWL_CODEGEN = THUMB
|
||||||
|
TWL_CODEGEN = ARM
|
||||||
|
TWL_PROC = ARM7
|
||||||
|
|
||||||
|
TARGET_BIN = main.axf
|
||||||
|
|
||||||
|
SRCS = main.c
|
||||||
|
|
||||||
|
#SRCDIR = # using default
|
||||||
|
#LCFILE = # using default
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
241
build/tests/os/_ARM7-alarm-2/src/main.c
Normal file
241
build/tests/os/_ARM7-alarm-2/src/main.c
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS - demos - _ARM7_alarm-2
|
||||||
|
File: main.c
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: main.c,v $
|
||||||
|
Revision 1.8 2006/01/18 02:11:29 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.7 2005/11/21 10:56:43 kitase_hirotake
|
||||||
|
SVC_WaitVBlankIntr を OS_WaitVBlankIntr に変更
|
||||||
|
|
||||||
|
Revision 1.6 2005/02/28 05:26:20 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.5 2004/04/15 06:51:12 yada
|
||||||
|
only arrange comment
|
||||||
|
|
||||||
|
Revision 1.4 2004/03/08 08:31:58 yada
|
||||||
|
fix top comment
|
||||||
|
|
||||||
|
Revision 1.3 2004/02/24 00:16:26 yada
|
||||||
|
(none)
|
||||||
|
|
||||||
|
Revision 1.2 2004/02/23 01:00:32 yada
|
||||||
|
(none)
|
||||||
|
|
||||||
|
Revision 1.1 2004/02/20 05:16:15 yada
|
||||||
|
firstRelease
|
||||||
|
|
||||||
|
Revision 1.5 2004/02/10 05:47:46 yasu
|
||||||
|
delete macro CODE32
|
||||||
|
|
||||||
|
Revision 1.4 2004/02/09 11:54:29 yasu
|
||||||
|
include code32.h
|
||||||
|
|
||||||
|
Revision 1.3 2004/02/05 07:09:03 yasu
|
||||||
|
change SDK prefix iris -> nitro
|
||||||
|
|
||||||
|
Revision 1.2 2004/02/04 07:37:45 yada
|
||||||
|
OS_GetSystemClock(), OS_SetSystemClock()を
|
||||||
|
OS_GetTime(),OS_SetTime() へ名称変更した関連で修正
|
||||||
|
|
||||||
|
Revision 1.1 2004/02/03 12:03:20 yada
|
||||||
|
firstRelease
|
||||||
|
|
||||||
|
Revision 1.1 2004/02/03 11:25:17 yada
|
||||||
|
firstRelease
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <nitro.h>
|
||||||
|
|
||||||
|
void alarmCallback(void *arg);
|
||||||
|
void alarmDisp(u32 arg);
|
||||||
|
|
||||||
|
void alarmCallback2(void *arg);
|
||||||
|
void alarmDisp2(u32 arg);
|
||||||
|
|
||||||
|
void VBlankIntr(void);
|
||||||
|
|
||||||
|
|
||||||
|
static OSAlarm alarm;
|
||||||
|
static OSAlarm alarm2;
|
||||||
|
|
||||||
|
static BOOL called = FALSE;
|
||||||
|
static BOOL alarm2_sw = FALSE;
|
||||||
|
|
||||||
|
static int pushCounter = 0;
|
||||||
|
|
||||||
|
static u16 keyData;
|
||||||
|
|
||||||
|
|
||||||
|
#define ALARM_COUNT 0x20000
|
||||||
|
#define ALARM_COUNT_P1 0x10000
|
||||||
|
#define ALARM_COUNT_P2 0x400
|
||||||
|
|
||||||
|
#define TEST_DATA 0x12345678
|
||||||
|
#define TEST_DATA2 0x9abcdef0
|
||||||
|
|
||||||
|
int count;
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: NitroMain
|
||||||
|
|
||||||
|
Description: main
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void NitroMain()
|
||||||
|
{
|
||||||
|
#ifdef SDK_DEBUGGER_ARM
|
||||||
|
OS_Printf("ARM7 before OS_Init.\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
OS_Init();
|
||||||
|
|
||||||
|
// この2つは ARM7では os_init() でやる
|
||||||
|
// ---- システムクロック初期化
|
||||||
|
//OS_InitSystemClock();
|
||||||
|
// ---- アラームシステム初期化
|
||||||
|
//OS_InitAlarm();
|
||||||
|
|
||||||
|
|
||||||
|
//---- Vブランク設定
|
||||||
|
(void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
|
||||||
|
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||||||
|
(void)OS_EnableIrq();
|
||||||
|
(void)GX_VBlankIntr(TRUE);
|
||||||
|
|
||||||
|
OS_Printf("ARM7 starts.\n");
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
OS_WaitVBlankIntr();
|
||||||
|
|
||||||
|
keyData = PAD_Read();
|
||||||
|
|
||||||
|
//---- PUSH A to start alarm
|
||||||
|
if (keyData & PAD_BUTTON_A && !called)
|
||||||
|
{
|
||||||
|
pushCounter++;
|
||||||
|
called = TRUE;
|
||||||
|
|
||||||
|
//---- setting alarm
|
||||||
|
OS_CreateAlarm(&alarm);
|
||||||
|
OS_SetAlarm(&alarm, ALARM_COUNT, &alarmCallback, (void *)TEST_DATA);
|
||||||
|
|
||||||
|
OS_Printf("set alarm\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//---- PUSH UP to start periodic alarm
|
||||||
|
if (1 /*keyData & PAD_KEY_UP */ && !alarm2_sw)
|
||||||
|
{
|
||||||
|
alarm2_sw = TRUE;
|
||||||
|
|
||||||
|
//---- setting periodic alarm
|
||||||
|
OS_CreateAlarm(&alarm2);
|
||||||
|
// OS_SetPeriodicAlarm(&alarm2, OS_GetTime() + ALARM_COUNT_P1, ALARM_COUNT_P2,
|
||||||
|
// &alarmCallback2, (void *)TEST_DATA2);
|
||||||
|
|
||||||
|
OS_Printf("set periodic alarm\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- PUSH DOWN to stop periodic alarm
|
||||||
|
if (keyData & PAD_KEY_DOWN && alarm2_sw)
|
||||||
|
{
|
||||||
|
alarm2_sw = FALSE;
|
||||||
|
|
||||||
|
OS_CancelAlarm(&alarm2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
// Alarm callback
|
||||||
|
// IRQ スタックが貧弱なので、スタックを変えて作業を行っています。
|
||||||
|
// エミュレータではここで OS_Printf() しても大丈夫ですが、
|
||||||
|
// IS-DEBUGGER ではスタック溢れします。
|
||||||
|
//
|
||||||
|
//
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
asm void alarmCallback( void* arg )
|
||||||
|
{
|
||||||
|
ldconst r12, #0x3800400
|
||||||
|
stmfd r12!, {sp, lr}
|
||||||
|
mov sp, r12
|
||||||
|
|
||||||
|
bl alarmDisp
|
||||||
|
|
||||||
|
ldmfd sp!, {r12, lr}
|
||||||
|
mov sp, r12
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#include <nitro/codereset.h>
|
||||||
|
|
||||||
|
|
||||||
|
void alarmDisp(u32 arg)
|
||||||
|
{
|
||||||
|
OS_Printf(">>> called alarmCallback. arg=%x PUSH=%x\n", arg, pushCounter);
|
||||||
|
//OS_Printf( ">>> sp=%x\n", OSi_GetCurrentStackPointer() );
|
||||||
|
called = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
// Alarm callback for periodic alarm
|
||||||
|
// IRQ スタックが貧弱なので、スタックを変えて作業を行っています。
|
||||||
|
// エミュレータではここで OS_Printf() しても大丈夫ですが、
|
||||||
|
// IS-DEBUGGER ではスタック溢れします。
|
||||||
|
//
|
||||||
|
//
|
||||||
|
#include <nitro/code32.h>
|
||||||
|
asm void alarmCallback2( void* arg )
|
||||||
|
{
|
||||||
|
ldconst r12, #0x3800400
|
||||||
|
stmfd r12!, {sp, lr}
|
||||||
|
mov sp, r12
|
||||||
|
|
||||||
|
bl alarmDisp2
|
||||||
|
|
||||||
|
ldmfd sp!, {r12, lr}
|
||||||
|
mov sp, r12
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#include <nitro/codereset.h>
|
||||||
|
|
||||||
|
|
||||||
|
void alarmDisp2(u32 arg)
|
||||||
|
{
|
||||||
|
static int cnt = 0;
|
||||||
|
if (cnt++ > 10)
|
||||||
|
{
|
||||||
|
OS_Panic("END\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// OS_Printf(">>> called alarmCallback2. arg=%x SYSCLOCK=%x\n", arg, OS_GetTime());
|
||||||
|
// OS_Printf( ">>> sp=%x\n", OSi_GetCurrentStackPointer() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
// VBlank interrupt handler
|
||||||
|
void VBlankIntr(void)
|
||||||
|
{
|
||||||
|
//---- 割り込みチェックフラグ
|
||||||
|
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*====== End of main.c ======*/
|
42
build/tests/os/alarm-1/Makefile
Normal file
42
build/tests/os/alarm-1/Makefile
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlSDK - OS - demos - alarm-1
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# $Log: $
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
TARGET_BIN = alerm.axf
|
||||||
|
|
||||||
|
SRCS = main.c
|
||||||
|
|
||||||
|
#SRCDIR = # using default
|
||||||
|
#LCFILE = # using default
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
|
||||||
|
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
165
build/tests/os/alarm-1/src/main.c
Normal file
165
build/tests/os/alarm-1/src/main.c
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS - demos - alarm-1
|
||||||
|
File: main.c
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: main.c,v $
|
||||||
|
Revision 1.14 2006/01/18 02:11:29 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.13 2005/11/21 10:53:49 kitase_hirotake
|
||||||
|
SVC_WaitVBlankIntr ‚ð OS_WaitVBlankIntr ‚É•Ï<EFBFBD>X
|
||||||
|
|
||||||
|
Revision 1.12 2005/02/28 05:26:19 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.11 2004/09/30 05:08:02 yada
|
||||||
|
add OS_InitAlarm(). to remove it was mistake
|
||||||
|
|
||||||
|
Revision 1.10 2004/09/28 12:21:26 yada
|
||||||
|
not call OS_InitAlarm() or OS_InitVAlarm() because OS_Init() called
|
||||||
|
|
||||||
|
Revision 1.9 2004/06/08 00:16:05 yada
|
||||||
|
add '#pragma unused()' for FINALROM
|
||||||
|
|
||||||
|
Revision 1.8 2004/04/15 06:51:12 yada
|
||||||
|
only arrange comment
|
||||||
|
|
||||||
|
Revision 1.7 2004/03/08 08:31:58 yada
|
||||||
|
fix top comment
|
||||||
|
|
||||||
|
Revision 1.6 2004/03/04 11:16:30 yada
|
||||||
|
only fix comment
|
||||||
|
|
||||||
|
Revision 1.5 2004/02/25 11:35:21 yada
|
||||||
|
systemClock<EFBFBD>¨Tick ‚É”º‚¤•Ï<EFBFBD>X
|
||||||
|
|
||||||
|
Revision 1.4 2004/02/10 05:47:46 yasu
|
||||||
|
delete macro CODE32
|
||||||
|
|
||||||
|
Revision 1.3 2004/02/09 11:18:07 yasu
|
||||||
|
include code32.h
|
||||||
|
|
||||||
|
Revision 1.2 2004/02/05 07:09:03 yasu
|
||||||
|
change SDK prefix iris -> nitro
|
||||||
|
|
||||||
|
Revision 1.1 2004/02/03 11:25:17 yada
|
||||||
|
firstRelease
|
||||||
|
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <twl.h>
|
||||||
|
#include <twl/vlink.h>
|
||||||
|
|
||||||
|
void VBlankIntr(void);
|
||||||
|
void alarmCallback(void *arg);
|
||||||
|
|
||||||
|
static OSAlarm alarm;
|
||||||
|
|
||||||
|
static BOOL called = FALSE;
|
||||||
|
|
||||||
|
static int pushCounter = 0;
|
||||||
|
|
||||||
|
static u16 keyData;
|
||||||
|
|
||||||
|
|
||||||
|
#define ALARM_COUNT (OS_MilliSecondsToTicks(200))
|
||||||
|
#define TEST_DATA 0x12345678
|
||||||
|
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: NitroMain
|
||||||
|
|
||||||
|
Description: main
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void NitroMain()
|
||||||
|
{
|
||||||
|
OS_InitPrintServer();
|
||||||
|
|
||||||
|
OS_Init();
|
||||||
|
GX_Init();
|
||||||
|
|
||||||
|
// ---- initialize tick system
|
||||||
|
OS_InitTick();
|
||||||
|
// ---- initialize alarm system
|
||||||
|
OS_InitAlarm();
|
||||||
|
|
||||||
|
//---- setup VBlank
|
||||||
|
(void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr);
|
||||||
|
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||||||
|
(void)OS_EnableIrq();
|
||||||
|
(void)GX_VBlankIntr(TRUE);
|
||||||
|
|
||||||
|
OS_TPrintf("Push [A] to start alarm.\n");
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
OS_PrintServer();
|
||||||
|
|
||||||
|
OS_WaitVBlankIntr();
|
||||||
|
keyData = PAD_Read();
|
||||||
|
|
||||||
|
if (keyData & PAD_BUTTON_A && !called)
|
||||||
|
{
|
||||||
|
pushCounter++;
|
||||||
|
called = TRUE;
|
||||||
|
|
||||||
|
//---- setting alarm
|
||||||
|
OS_CreateAlarm(&alarm);
|
||||||
|
OS_SetAlarm(&alarm, ALARM_COUNT, &alarmCallback, (void *)TEST_DATA);
|
||||||
|
|
||||||
|
OS_TPrintf("set alarm\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: alarmCallback
|
||||||
|
|
||||||
|
Description: callback for alarm interrupt
|
||||||
|
|
||||||
|
Arguments: arg : user setting argument
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void alarmCallback(void *arg)
|
||||||
|
{
|
||||||
|
#ifdef SDK_FINALROM
|
||||||
|
#pragma unused( arg )
|
||||||
|
#endif
|
||||||
|
OS_Printf(">>> called alarmCallback. arg=%x\n", arg);
|
||||||
|
OS_Printf(">>> PUSH=%d\n", pushCounter);
|
||||||
|
OS_Printf(">>> sp=%x\n", OSi_GetCurrentStackPointer());
|
||||||
|
called = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: VBlankIntr
|
||||||
|
|
||||||
|
Description: VBlank interrupt handler
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void VBlankIntr(void)
|
||||||
|
{
|
||||||
|
//---- check interrupt flag
|
||||||
|
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*====== End of main.c ======*/
|
39
include/nitro/dtcm_begin.h
Normal file
39
include/nitro/dtcm_begin.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - include
|
||||||
|
File: dtcm_begin.h
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: dtcm_begin.h,v $
|
||||||
|
Revision 1.4 2006/01/18 02:11:19 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.3 2005/07/11 05:00:42 yada
|
||||||
|
add include nitro/section.h
|
||||||
|
|
||||||
|
Revision 1.2 2005/02/28 05:26:02 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.1 2004/07/10 06:11:24 yasu
|
||||||
|
Support to select a section 'ITCM/DTCM/WRAM'
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
//
|
||||||
|
// include this instead of using C99 pragma extensions for compatibility
|
||||||
|
//
|
||||||
|
#include <nitro/section.h>
|
||||||
|
|
||||||
|
#if defined(SDK_CW) || defined(__MWERKS__)
|
||||||
|
//#pragma section DTCM begin
|
||||||
|
#elif defined(SDK_ADS)
|
||||||
|
TO BE DEFINED
|
||||||
|
#elif defined(SDK_GCC)
|
||||||
|
TO BE DEFINED
|
||||||
|
#endif
|
34
include/nitro/dtcm_end.h
Normal file
34
include/nitro/dtcm_end.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - include
|
||||||
|
File: dtcm_end.h
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: dtcm_end.h,v $
|
||||||
|
Revision 1.3 2006/01/18 02:11:19 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.2 2005/02/28 05:26:02 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.1 2004/07/10 06:11:24 yasu
|
||||||
|
Support to select a section 'ITCM/DTCM/WRAM'
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
//
|
||||||
|
// include this instead of using C99 pragma extensions for compatibility
|
||||||
|
//
|
||||||
|
#if defined(SDK_CW) || defined(__MWERKS__)
|
||||||
|
//#pragma section DTCM end
|
||||||
|
#elif defined(SDK_ADS)
|
||||||
|
TO BE DEFINED
|
||||||
|
#elif defined(SDK_GCC)
|
||||||
|
TO BE DEFINED
|
||||||
|
#endif
|
39
include/nitro/itcm_begin.h
Normal file
39
include/nitro/itcm_begin.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - include
|
||||||
|
File: itcm_begin.h
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: itcm_begin.h,v $
|
||||||
|
Revision 1.4 2006/01/18 02:11:19 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.3 2005/07/11 05:00:42 yada
|
||||||
|
add include nitro/section.h
|
||||||
|
|
||||||
|
Revision 1.2 2005/02/28 05:26:02 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.1 2004/07/10 06:11:24 yasu
|
||||||
|
Support to select a section 'ITCM/DTCM/WRAM'
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
//
|
||||||
|
// include this instead of using C99 pragma extensions for compatibility
|
||||||
|
//
|
||||||
|
#include <nitro/section.h>
|
||||||
|
|
||||||
|
#if defined(SDK_CW) || defined(__MWERKS__)
|
||||||
|
//#pragma section ITCM begin
|
||||||
|
#elif defined(SDK_ADS)
|
||||||
|
TO BE DEFINED
|
||||||
|
#elif defined(SDK_GCC)
|
||||||
|
TO BE DEFINED
|
||||||
|
#endif
|
34
include/nitro/itcm_end.h
Normal file
34
include/nitro/itcm_end.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - include
|
||||||
|
File: itcm_end.h
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: itcm_end.h,v $
|
||||||
|
Revision 1.3 2006/01/18 02:11:19 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.2 2005/02/28 05:26:02 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.1 2004/07/10 06:11:24 yasu
|
||||||
|
Support to select a section 'ITCM/DTCM/WRAM'
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
//
|
||||||
|
// include this instead of using C99 pragma extensions for compatibility
|
||||||
|
//
|
||||||
|
#if defined(SDK_CW) || defined(__MWERKS__)
|
||||||
|
//#pragma section ITCM end
|
||||||
|
#elif defined(SDK_ADS)
|
||||||
|
TO BE DEFINED
|
||||||
|
#elif defined(SDK_GCC)
|
||||||
|
TO BE DEFINED
|
||||||
|
#endif
|
377
include/nitro/os/common/system.h
Normal file
377
include/nitro/os/common/system.h
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: NitroSDK - OS - include
|
||||||
|
File: system.h
|
||||||
|
|
||||||
|
Copyright 2003-2006 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.
|
||||||
|
|
||||||
|
$Log: system.h,v $
|
||||||
|
Revision 1.30 2006/01/18 02:12:28 kitase_hirotake
|
||||||
|
do-indent
|
||||||
|
|
||||||
|
Revision 1.29 2005/10/07 08:22:03 yada
|
||||||
|
add OS_WaitVBlankIntr()
|
||||||
|
|
||||||
|
Revision 1.28 2005/08/31 12:03:27 yada
|
||||||
|
add OS_Exit()
|
||||||
|
|
||||||
|
Revision 1.27 2005/02/28 05:26:01 yosizaki
|
||||||
|
do-indent.
|
||||||
|
|
||||||
|
Revision 1.26 2004/11/24 04:36:10 yada
|
||||||
|
just fix typo
|
||||||
|
|
||||||
|
Revision 1.25 2004/09/02 06:27:05 yada
|
||||||
|
only change comment
|
||||||
|
|
||||||
|
Revision 1.24 2004/05/24 04:48:29 yada
|
||||||
|
OS_WaitIntr() -> OS_WaitInterrupt()
|
||||||
|
|
||||||
|
Revision 1.23 2004/05/10 11:21:49 yada
|
||||||
|
add OS_WaitIntr()
|
||||||
|
|
||||||
|
Revision 1.22 2004/04/07 02:03:17 yada
|
||||||
|
fix header comment
|
||||||
|
|
||||||
|
Revision 1.21 2004/04/06 01:38:13 yada
|
||||||
|
OS_Halt() の挙動変更
|
||||||
|
|
||||||
|
Revision 1.20 2004/03/04 09:48:20 yada
|
||||||
|
OSDisableInterrupt() を IRQ 禁止にした。
|
||||||
|
IRQ/FIQ 禁止には別関数を用意した。
|
||||||
|
|
||||||
|
Revision 1.19 2004/02/27 01:55:00 yasu
|
||||||
|
add OS_SpinWait, move OS_Halt into os_system.c
|
||||||
|
|
||||||
|
Revision 1.18 2004/02/13 08:45:00 yasu
|
||||||
|
clean up comments
|
||||||
|
|
||||||
|
Revision 1.17 2004/02/13 02:16:43 yada
|
||||||
|
EnableInterrupts, GetProcMode for ARM7 (temporary)
|
||||||
|
|
||||||
|
Revision 1.16 2004/02/13 01:51:33 yada
|
||||||
|
DisableInterrupts, RestoreInterrupts for ARM7 (temporary)
|
||||||
|
|
||||||
|
Revision 1.15 2004/02/12 10:56:04 yasu
|
||||||
|
new location of include files ARM9/ARM7
|
||||||
|
|
||||||
|
Revision 1.14 2004/02/10 12:11:23 yada
|
||||||
|
OS_GetDTCMAddress, OS_GetITCMAddress を tcm.hに移行
|
||||||
|
|
||||||
|
Revision 1.13 2004/02/10 11:35:06 yada
|
||||||
|
only arrange tab & space
|
||||||
|
|
||||||
|
Revision 1.12 2004/02/10 11:19:21 yada
|
||||||
|
Interrupt 関係のinline をやめる
|
||||||
|
|
||||||
|
Revision 1.11 2004/02/09 11:38:18 yada
|
||||||
|
OS_GetDTCMAddress, OS_GetITCMAddress 作成
|
||||||
|
|
||||||
|
Revision 1.10 2004/02/09 11:17:22 yasu
|
||||||
|
include code32.h
|
||||||
|
|
||||||
|
Revision 1.9 2004/02/05 07:09:03 yasu
|
||||||
|
change SDK prefix iris -> nitro
|
||||||
|
|
||||||
|
Revision 1.8 2004/01/18 04:47:31 yada
|
||||||
|
インデント等の整形
|
||||||
|
|
||||||
|
Revision 1.7 2004/01/17 02:28:38 nishida_kenji
|
||||||
|
convert 'inline' to 'static inline' in header files
|
||||||
|
|
||||||
|
Revision 1.6 2004/01/14 08:41:19 yada
|
||||||
|
OSIntrMode_Irq に伴う変更
|
||||||
|
|
||||||
|
Revision 1.5 2004/01/14 01:41:35 yada
|
||||||
|
CPSRのinterrupt 操作を IRQのみから IRQとFIQ に変更
|
||||||
|
|
||||||
|
Revision 1.4 2003/12/25 07:30:07 yada
|
||||||
|
型ルール統一による変更
|
||||||
|
|
||||||
|
Revision 1.3 2003/12/22 13:41:45 yasu
|
||||||
|
include ガードの修正
|
||||||
|
|
||||||
|
Revision 1.2 2003/12/12 05:06:39 yada
|
||||||
|
プロセッサモードの定義変更に伴う修正
|
||||||
|
|
||||||
|
Revision 1.1 2003/12/12 01:25:31 yada
|
||||||
|
os/cpsr.h → os/system.h と名称変更
|
||||||
|
|
||||||
|
Revision 1.7 2003/12/08 12:08:02 yada
|
||||||
|
SDK_ASMが定義されているときは define以外含まれないようにした
|
||||||
|
|
||||||
|
Revision 1.6 2003/12/08 01:25:05 yasu
|
||||||
|
context に SP_svc を追加する
|
||||||
|
|
||||||
|
Revision 1.5 2003/12/01 09:51:56 yasu
|
||||||
|
warning 対策のため DEBUG 時のみ変数の初期化を行なう
|
||||||
|
|
||||||
|
Revision 1.4 2003/12/01 04:15:53 yasu
|
||||||
|
OS_RestoreInterrupts の実装誤り修正
|
||||||
|
|
||||||
|
Revision 1.3 2003/11/30 10:24:09 yasu
|
||||||
|
前回の修正で入れてしまったバグの修正
|
||||||
|
|
||||||
|
Revision 1.2 2003/11/30 10:13:40 yasu
|
||||||
|
asm 表現法の変更
|
||||||
|
|
||||||
|
Revision 1.1 2003/11/30 04:17:43 yasu
|
||||||
|
新規作成 CPU CPSR 設定関係の関数
|
||||||
|
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef NITRO_OS_SYSTEM_H_
|
||||||
|
#define NITRO_OS_SYSTEM_H_
|
||||||
|
|
||||||
|
#ifndef SDK_ASM
|
||||||
|
#include <nitro/types.h>
|
||||||
|
#include <nitro/os/common/systemCall.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <nitro/hw/common/armArch.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#ifndef SDK_ASM
|
||||||
|
#define OS_EXIT_STRING_1 "*** Exit nitro program (status="
|
||||||
|
#define OS_EXIT_STRING_2 "%d).\n"
|
||||||
|
#define OS_EXIT_STRING OS_EXIT_STRING_1 OS_EXIT_STRING_2
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
OS_PROCMODE_USER = HW_PSR_USER_MODE,
|
||||||
|
OS_PROCMODE_FIQ = HW_PSR_FIQ_MODE,
|
||||||
|
OS_PROCMODE_IRQ = HW_PSR_IRQ_MODE,
|
||||||
|
OS_PROCMODE_SVC = HW_PSR_SVC_MODE,
|
||||||
|
OS_PROCMODE_ABORT = HW_PSR_ABORT_MODE,
|
||||||
|
OS_PROCMODE_UNDEF = HW_PSR_UNDEF_MODE,
|
||||||
|
OS_PROCMODE_SYS = HW_PSR_SYS_MODE
|
||||||
|
}
|
||||||
|
OSProcMode;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
OS_INTRMODE_IRQ_DISABLE = HW_PSR_IRQ_DISABLE,
|
||||||
|
OS_INTRMODE_IRQ_ENABLE = 0
|
||||||
|
}
|
||||||
|
OSIntrMode_Irq;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
OS_INTRMODE_FIQ_DISABLE = HW_PSR_FIQ_DISABLE,
|
||||||
|
OS_INTRMODE_FIQ_ENABLE = 0
|
||||||
|
}
|
||||||
|
OSIntrMode_Fiq;
|
||||||
|
|
||||||
|
typedef u32 OSIntrMode;
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// CONTROL INTERRUPT
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_EnableInterrupts
|
||||||
|
|
||||||
|
Description: Set CPSR to enable irq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSIntrMode OS_EnableInterrupts(void);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_DisableInterrupts
|
||||||
|
|
||||||
|
Description: Set CPSR to disable irq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSIntrMode OS_DisableInterrupts(void);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_RestoreInterrupts
|
||||||
|
|
||||||
|
Description: Restore CPSR irq interrupt
|
||||||
|
|
||||||
|
Arguments: state of irq interrupt bit
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSIntrMode OS_RestoreInterrupts(OSIntrMode state);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_EnableInterrupts_IrqAndFiq
|
||||||
|
|
||||||
|
Description: Set CPSR to enable irq and fiq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSIntrMode OS_EnableInterrupts_IrqAndFiq(void);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_DisableInterrupts_IrqAndFiq
|
||||||
|
|
||||||
|
Description: Set CPSR to disable irq and fiq interrupts
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSIntrMode OS_DisableInterrupts_IrqAndFiq(void);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_RestoreInterrupts_IrqAndFiq
|
||||||
|
|
||||||
|
Description: Restore CPSR irq and fiq interrupt
|
||||||
|
|
||||||
|
Arguments: state of irq and fiq interrupt bit
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE & HW_PSR_FIQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSIntrMode OS_RestoreInterrupts_IrqAndFiq(OSIntrMode state);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_GetCpsrIrq
|
||||||
|
|
||||||
|
Description: Get current state of CPSR irq interrupt
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: last state of HW_PSR_IRQ_DISABLE
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSIntrMode_Irq OS_GetCpsrIrq(void);
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// PROCESSER MODE
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_GetProcMode
|
||||||
|
|
||||||
|
Description: Get processor mode from CPSR
|
||||||
|
|
||||||
|
Arguments: None.
|
||||||
|
|
||||||
|
Returns: CPU processor mode (field 0x10-0x1f)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern OSProcMode OS_GetProcMode(void);
|
||||||
|
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// TERMINATE and HALT
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_Terminate
|
||||||
|
|
||||||
|
Description: Halt CPU and loop
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern void OS_Terminate(void);
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_Halt
|
||||||
|
|
||||||
|
Description: Halt CPU
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#if defined(SDK_ARM9) || defined(SDK_DEBUGGER_ARM)
|
||||||
|
extern void OS_Halt(void);
|
||||||
|
#else
|
||||||
|
static inline void OS_Halt(void)
|
||||||
|
{
|
||||||
|
SVC_Halt();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_Exit
|
||||||
|
|
||||||
|
Description: Display exit string and Terminate.
|
||||||
|
This is useful for 'loadrun' tool command.
|
||||||
|
|
||||||
|
Arguments: status : exit status
|
||||||
|
|
||||||
|
Returns: -- (Never return)
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern void OS_Exit(int status);
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// WAIT
|
||||||
|
//============================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_SpinWait
|
||||||
|
|
||||||
|
Description: Spin and Wait for specified CPU cycles at least
|
||||||
|
|
||||||
|
Arguments: cycles waiting CPU cycle
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern void OS_SpinWait(u32 cycle);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_WaitInterrupt
|
||||||
|
|
||||||
|
Description: wait specified interrupt
|
||||||
|
the difference between OS_WaitIrq and OS_WaitInterrupt,
|
||||||
|
in waiting interrupt
|
||||||
|
OS_WaitIrq does switch thread,
|
||||||
|
OS_WaitInterrupt doesn't switch thread.
|
||||||
|
OS_WaitIrq wait by using OS_SleepThread() with threadQueue,
|
||||||
|
OS_WaitInterrupt wait by using OS_Halt().
|
||||||
|
if SDK_NO_THREAD defined, 2 functions become same.
|
||||||
|
|
||||||
|
Arguments: clear TRUE if want to clear interrupt flag before wait.
|
||||||
|
FALSE if not.
|
||||||
|
irqFlags bit of interrupts to wait for
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef OSi_OSIRQMASK_DEFINED
|
||||||
|
typedef u32 OSIrqMask;
|
||||||
|
#define OSi_OSIRQMASK_DEFINED
|
||||||
|
#endif
|
||||||
|
extern void OS_WaitInterrupt(BOOL clear, OSIrqMask irqFlags);
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: OS_WaitVBlankIntr
|
||||||
|
|
||||||
|
Description: wait till vblank interrupt occurred.
|
||||||
|
the difference between SVC_WaitVBlankIntr and OS_WaitVBlankIntr is:
|
||||||
|
OS_WaitVBlankIntr does switch thread,
|
||||||
|
SVC_WaitVBlankIntr doesn't switch thread.
|
||||||
|
|
||||||
|
Arguments: None
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
extern void OS_WaitVBlankIntr(void);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* SDK_ASM */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*NITRO_OS_SYSTEM_H_*/
|
||||||
|
#endif
|
25
include/twl.h
Normal file
25
include/twl.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlSDK
|
||||||
|
File: twl.h
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
$Log: $
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef TWL_H_
|
||||||
|
#define TWL_H_
|
||||||
|
|
||||||
|
#include <nitro.h>
|
||||||
|
|
||||||
|
//#include <twl/c_extension.h>
|
||||||
|
#include <twl/vlink.h>
|
||||||
|
|
||||||
|
/* TWL_H_ */
|
||||||
|
#endif
|
606
include/twl/specfiles/ARM7-TEG.lcf.template
Normal file
606
include/twl/specfiles/ARM7-TEG.lcf.template
Normal file
@ -0,0 +1,606 @@
|
|||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - tools - makelcf
|
||||||
|
# File: ARM7-TEG.lcf.template
|
||||||
|
#
|
||||||
|
# Copyright 2003-2006 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM7-TEG.lcf.template,v $
|
||||||
|
# Revision 1.31 2006/05/10 03:19:47 yasu
|
||||||
|
# CodeWarrior 2.x のオーバーレイ拡張への対応
|
||||||
|
#
|
||||||
|
# Revision 1.30 2006/03/30 00:43:20 yasu
|
||||||
|
# 著作年度の変更
|
||||||
|
#
|
||||||
|
# Revision 1.29 2006/03/29 13:19:14 yasu
|
||||||
|
# NUMBER_OVERLAYS -> NUMBER.OVERLAYS への修正
|
||||||
|
#
|
||||||
|
# Revision 1.28 2005/09/02 04:14:22 yasu
|
||||||
|
# SDK2.2 でも使用可能のように古いシンボルを再定義した
|
||||||
|
#
|
||||||
|
# Revision 1.27 2005/08/31 09:34:57 yasu
|
||||||
|
# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正
|
||||||
|
#
|
||||||
|
# Revision 1.26 2005/06/20 12:29:20 yasu
|
||||||
|
# Surffix -> Suffix 修正
|
||||||
|
#
|
||||||
|
# Revision 1.25 2005/06/17 03:16:11 yasu
|
||||||
|
# fix copyright header
|
||||||
|
#
|
||||||
|
# Revision 1.24 2005/06/14 09:03:42 yada
|
||||||
|
# fix around minus value of SDK_STACKSIZE
|
||||||
|
#
|
||||||
|
# Revision 1.23 2004/09/08 01:27:18 yasu
|
||||||
|
# Add * (.wram) on static segment
|
||||||
|
#
|
||||||
|
# Revision 1.22 2004/08/18 02:00:34 yasu
|
||||||
|
# Fix address of SDK_AUTOLOAD.MAIN.START
|
||||||
|
#
|
||||||
|
# Revision 1.21 2004/08/18 01:50:40 yasu
|
||||||
|
# Support SDK_SUBPRIV_ARENA_LO
|
||||||
|
#
|
||||||
|
# Revision 1.20 2004/08/02 10:38:53 yasu
|
||||||
|
# Add autoload-done callback address in overlaydefs
|
||||||
|
#
|
||||||
|
# Revision 1.19 2004/07/26 00:08:27 yasu
|
||||||
|
# Fix label of exception table
|
||||||
|
#
|
||||||
|
# Revision 1.18 2004/07/24 05:42:25 yasu
|
||||||
|
# Set default values for SDK_AUTOGEN_xTCM_START
|
||||||
|
#
|
||||||
|
# Revision 1.17 2004/07/23 11:32:14 yasu
|
||||||
|
# Define labels for __exception_table_start__ and _end__
|
||||||
|
#
|
||||||
|
# Revision 1.16 2004/07/10 04:10:26 yasu
|
||||||
|
# Support command 'Library'
|
||||||
|
#
|
||||||
|
# Revision 1.15 2004/07/08 04:04:59 yasu
|
||||||
|
# fix small typo
|
||||||
|
#
|
||||||
|
# Revision 1.14 2004/07/02 08:13:02 yasu
|
||||||
|
# Support OBJECT( )
|
||||||
|
#
|
||||||
|
# Revision 1.13 2004/07/01 12:54:38 yasu
|
||||||
|
# support ITCM/DTCM/WRAM autoload
|
||||||
|
#
|
||||||
|
# Revision 1.12 2004/07/01 10:41:46 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.11 2004/07/01 09:41:50 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.10 2004/06/14 11:28:15 yasu
|
||||||
|
# support section filter "FOREACH.STATIC.OBJECTS=.sectionName"
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/05/27 04:06:42 yasu
|
||||||
|
# fix SDK_WRAM_ARENA_LO
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/04/26 11:41:38 yasu
|
||||||
|
# add KEEP_SECTION { .ctor }
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/04/19 06:39:41 yasu
|
||||||
|
# fix workram checker
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/04/19 04:27:30 yasu
|
||||||
|
# support WRAM overflow check
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/04/06 01:53:34 yasu
|
||||||
|
# move rodata section into text section
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/04/06 01:39:24 miya
|
||||||
|
# modify overlay module size
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/03/29 11:40:48 yasu
|
||||||
|
# delete ROM SIZE parameter on overlay table
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/03/26 09:32:48 yasu
|
||||||
|
# delete useless ALIGN
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/03/26 06:04:32 yasu
|
||||||
|
# move spec files
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/03/23 00:15:35 yasu
|
||||||
|
# add WRITEW 0 for the termination of __OVERLAY_static_init__
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/03/22 02:15:49 yasu
|
||||||
|
# set _start as entry address in rom header
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/03/16 10:06:07 yasu
|
||||||
|
# copy ARM9s template file
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 # > <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
<AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
|
||||||
|
<PROPERTY.OVERLAYDEFS> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 # > <PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>
|
||||||
|
<PROPERTY.OVERLAYTABLE> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 # > <PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 # > <OVERLAY.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
arena.MAIN (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
check.WORKRAM (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x10000 # > workram.check
|
||||||
|
}
|
||||||
|
|
||||||
|
KEEP_SECTION
|
||||||
|
{
|
||||||
|
.ctor
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
############################ STATIC #################################
|
||||||
|
.<STATIC.NAME>:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4); # Fit to cache line
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_STATIC_START =.;
|
||||||
|
SDK_STATIC_TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
OBJECT(_start,*)
|
||||||
|
crt0.o (.text)
|
||||||
|
<FOREACH.STATIC.OBJECTS=.text>
|
||||||
|
<STATIC.OBJECT=.text:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.text>
|
||||||
|
<STATIC.LIBRARY=.text:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
* (.exception)
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_ETABLE_START =.;
|
||||||
|
EXCEPTION
|
||||||
|
SDK_STATIC_ETABLE_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.init>
|
||||||
|
<STATIC.OBJECT=.init:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.init>
|
||||||
|
<STATIC.LIBRARY=.init:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.rodata>
|
||||||
|
<STATIC.OBJECT=.rodata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.rodata>
|
||||||
|
<STATIC.LIBRARY=.rodata: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>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_STATIC_SINIT_END =.;
|
||||||
|
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
SDK_STATIC_DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.STATIC.OBJECTS=.wram>
|
||||||
|
<STATIC.OBJECT=.wram:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.wram>
|
||||||
|
<STATIC.LIBRARY=.wram:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.sdata>
|
||||||
|
<STATIC.OBJECT=.sdata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.sdata>
|
||||||
|
<STATIC.LIBRARY=.sdata:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.data>
|
||||||
|
<STATIC.OBJECT=.data:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.data>
|
||||||
|
<STATIC.LIBRARY=.data:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_DATA_END =.;
|
||||||
|
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
|
||||||
|
__exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table
|
||||||
|
__exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table
|
||||||
|
} > <STATIC.NAME>
|
||||||
|
|
||||||
|
.<STATIC.NAME>.bss:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.bss>
|
||||||
|
<STATIC.OBJECT=.bss:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.bss>
|
||||||
|
<STATIC.LIBRARY=.bss:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_BSS_END = .;
|
||||||
|
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
|
||||||
|
|
||||||
|
} >> <STATIC.NAME>
|
||||||
|
|
||||||
|
|
||||||
|
############################ AUTOLOADS ##############################
|
||||||
|
SDK_AUTOLOAD.MAIN.START = 0x02380000;
|
||||||
|
SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD.MAIN.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.MAIN.BSS_SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.WRAM.START = 0x037f8000;
|
||||||
|
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);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.rodata>
|
||||||
|
<AUTOLOAD.OBJECT=.rodata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.rodata>
|
||||||
|
<AUTOLOAD.LIBRARY=.rodata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE BLOCK
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sdata>
|
||||||
|
<AUTOLOAD.OBJECT=.sdata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sdata>
|
||||||
|
<AUTOLOAD.LIBRARY=.sdata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.data>
|
||||||
|
<AUTOLOAD.OBJECT=.data:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.data>
|
||||||
|
<AUTOLOAD.LIBRARY=.data:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.;
|
||||||
|
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);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sbss>
|
||||||
|
<AUTOLOAD.OBJECT=.sbss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sbss>
|
||||||
|
<AUTOLOAD.LIBRARY=.sbss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.bss>
|
||||||
|
<AUTOLOAD.OBJECT=.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.bss>
|
||||||
|
<AUTOLOAD.LIBRARY=.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: 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_MAIN_START = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END;
|
||||||
|
SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END;
|
||||||
|
SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE;
|
||||||
|
SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE;
|
||||||
|
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
|
||||||
|
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
|
||||||
|
SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||||
|
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>.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);
|
||||||
|
|
||||||
|
############################ OVERLAYS ###############################
|
||||||
|
SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>;
|
||||||
|
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
.<OVERLAY.NAME>:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.rodata>
|
||||||
|
<OVERLAY.OBJECT=.rodata:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.rodata>
|
||||||
|
<OVERLAY.LIBRARY=.rodata:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<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>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.;
|
||||||
|
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.data>
|
||||||
|
<OVERLAY.OBJECT=.data:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.data>
|
||||||
|
<OVERLAY.LIBRARY=.data:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.;
|
||||||
|
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:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.sbss>
|
||||||
|
<OVERLAY.OBJECT=.sbss:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.sbss>
|
||||||
|
<OVERLAY.LIBRARY=.sbss:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: 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>
|
||||||
|
|
||||||
|
|
||||||
|
############################ ARENA ##################################
|
||||||
|
.arena.MAIN:
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_SECTION_ARENA_START =.;
|
||||||
|
} > arena.MAIN
|
||||||
|
|
||||||
|
|
||||||
|
############################ OVERLAYDEFS ############################
|
||||||
|
.<PROPERTY.OVERLAYDEFS>:
|
||||||
|
{
|
||||||
|
### <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.SUFFIX>"); # Overlay <OVERLAY.ID>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.OVERLAYDEFS>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OVERLAYTABLE ###########################
|
||||||
|
.<PROPERTY.OVERLAYTABLE>:
|
||||||
|
{
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
# Overlay <OVERLAY.ID>
|
||||||
|
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>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OTHERS #################################
|
||||||
|
SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END;
|
||||||
|
SDK_WRAM_ARENA_LO = SDK_SECTION_ARENA_START;
|
||||||
|
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||||
|
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||||
|
|
||||||
|
# work ram size checker
|
||||||
|
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
|
||||||
|
.check.WORKRAM:
|
||||||
|
{
|
||||||
|
. = . + SDK_SECTION_ARENA_START - <STATIC.ADDRESS> + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||||
|
} > check.WORKRAM
|
||||||
|
}
|
60
include/twl/specfiles/ARM7-TEG.lsf
Normal file
60
include/twl/specfiles/ARM7-TEG.lsf
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - include
|
||||||
|
# File: ARM7-TEG.lsf
|
||||||
|
#
|
||||||
|
# Copyright 2003,2004 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM7-TEG.lsf,v $
|
||||||
|
# Revision 1.10 2004/07/10 12:17:51 yasu
|
||||||
|
# delete GROUP(ROOT)
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/07/10 04:11:17 yasu
|
||||||
|
# Add GROUP(xxx) as object group
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/07/02 08:33:49 yasu
|
||||||
|
# Add .wram
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/07/02 01:12:11 yasu
|
||||||
|
# clean up comments
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/07/01 10:41:46 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/06/28 10:46:45 yasu
|
||||||
|
# avoid to use '*' as wildcard
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/04/19 04:27:30 yasu
|
||||||
|
# support WRAM overflow check
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/04/14 10:25:09 yasu
|
||||||
|
# delete LIBRARIES group
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/03/26 13:16:17 yasu
|
||||||
|
# use variables
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/03/26 06:04:32 yasu
|
||||||
|
# move spec files
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/03/18 12:43:38 yasu
|
||||||
|
# set top address for static segment
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Nitro LCF SPEC FILE
|
||||||
|
#
|
||||||
|
|
||||||
|
Static $(TARGET_NAME)
|
||||||
|
{
|
||||||
|
Address 0x037f8000
|
||||||
|
Object $(OBJS_STATIC)
|
||||||
|
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
|
||||||
|
Object * (.wram)
|
||||||
|
StackSize 1024 512
|
||||||
|
}
|
578
include/twl/specfiles/ARM7-TS.lcf.template
Normal file
578
include/twl/specfiles/ARM7-TS.lcf.template
Normal file
@ -0,0 +1,578 @@
|
|||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - tools - makelcf
|
||||||
|
# File: ARM7-TS.lcf.template
|
||||||
|
#
|
||||||
|
# Copyright 2003-2006 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM7-TS.lcf.template,v $
|
||||||
|
# Revision 1.24 2006/05/10 03:19:47 yasu
|
||||||
|
# CodeWarrior 2.x のオーバーレイ拡張への対応
|
||||||
|
#
|
||||||
|
# Revision 1.23 2006/04/07 04:45:14 kitase_hirotake
|
||||||
|
# .wram.bss の追加
|
||||||
|
#
|
||||||
|
# Revision 1.22 2006/03/30 00:43:20 yasu
|
||||||
|
# 著作年度の変更
|
||||||
|
#
|
||||||
|
# Revision 1.21 2006/03/29 13:19:14 yasu
|
||||||
|
# NUMBER_OVERLAYS -> NUMBER.OVERLAYS への修正
|
||||||
|
#
|
||||||
|
# Revision 1.20 2005/09/02 04:14:22 yasu
|
||||||
|
# SDK2.2 でも使用可能のように古いシンボルを再定義した
|
||||||
|
#
|
||||||
|
# Revision 1.19 2005/08/31 09:34:57 yasu
|
||||||
|
# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正
|
||||||
|
#
|
||||||
|
# Revision 1.18 2005/06/20 12:29:20 yasu
|
||||||
|
# Surffix -> Suffix 修正
|
||||||
|
#
|
||||||
|
# Revision 1.17 2005/06/14 09:03:42 yada
|
||||||
|
# fix around minus value of SDK_STACKSIZE
|
||||||
|
#
|
||||||
|
# Revision 1.16 2005/04/14 00:04:17 terui
|
||||||
|
# Update copyright.
|
||||||
|
#
|
||||||
|
# Revision 1.15 2005/04/13 12:52:50 terui
|
||||||
|
# Change SDK_AUTOLOAD.MAIN.START 0x027c0000 -> 0x027e0000
|
||||||
|
#
|
||||||
|
# Revision 1.14 2004/09/08 01:27:18 yasu
|
||||||
|
# Add * (.wram) on static segment
|
||||||
|
#
|
||||||
|
# Revision 1.13 2004/08/18 01:50:40 yasu
|
||||||
|
# Support SDK_SUBPRIV_ARENA_LO
|
||||||
|
#
|
||||||
|
# Revision 1.12 2004/08/02 10:38:53 yasu
|
||||||
|
# Add autoload-done callback address in overlaydefs
|
||||||
|
#
|
||||||
|
# Revision 1.11 2004/07/26 00:08:27 yasu
|
||||||
|
# Fix label of exception table
|
||||||
|
#
|
||||||
|
# Revision 1.10 2004/07/24 05:42:25 yasu
|
||||||
|
# Set default values for SDK_AUTOGEN_xTCM_START
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/07/23 11:32:14 yasu
|
||||||
|
# Define labels for __exception_table_start__ and _end__
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/07/12 12:24:12 yasu
|
||||||
|
# Fix checking WRAM
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/07/10 04:10:26 yasu
|
||||||
|
# Support command 'Library'
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/07/02 08:13:02 yasu
|
||||||
|
# Support OBJECT( )
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/07/01 12:54:38 yasu
|
||||||
|
# support ITCM/DTCM/WRAM autoload
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/07/01 10:41:46 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/05/28 02:11:15 yasu
|
||||||
|
# set WRAM arena region correctly
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/04/26 12:17:49 yasu
|
||||||
|
# add KEEP_SECTIONS
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/04/06 01:59:54 yasu
|
||||||
|
# newly added
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 # > <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
<AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
|
||||||
|
<PROPERTY.OVERLAYDEFS> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>
|
||||||
|
<PROPERTY.OVERLAYTABLE> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
arena.MAIN (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
check.WORKRAM (RWX) : ORIGIN = 0x037f8000, LENGTH = 0x18000 > workram.check
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
############################ STATIC #################################
|
||||||
|
.<STATIC.NAME>:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4); # Fit to cache line
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_STATIC_START =.;
|
||||||
|
SDK_STATIC_TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
OBJECT(_start,*)
|
||||||
|
crt0.o (.text)
|
||||||
|
<FOREACH.STATIC.OBJECTS=.text>
|
||||||
|
<STATIC.OBJECT=.text:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.text>
|
||||||
|
<STATIC.LIBRARY=.text:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
* (.exception)
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_ETABLE_START =.;
|
||||||
|
EXCEPTION
|
||||||
|
SDK_STATIC_ETABLE_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.init>
|
||||||
|
<STATIC.OBJECT=.init:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.init>
|
||||||
|
<STATIC.LIBRARY=.init:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.rodata>
|
||||||
|
<STATIC.OBJECT=.rodata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.rodata>
|
||||||
|
<STATIC.LIBRARY=.rodata: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>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_STATIC_SINIT_END =.;
|
||||||
|
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
SDK_STATIC_DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.STATIC.OBJECTS=.wram>
|
||||||
|
<STATIC.OBJECT=.wram:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.wram>
|
||||||
|
<STATIC.LIBRARY=.wram:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.sdata>
|
||||||
|
<STATIC.OBJECT=.sdata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.sdata>
|
||||||
|
<STATIC.LIBRARY=.sdata:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.data>
|
||||||
|
<STATIC.OBJECT=.data:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.data>
|
||||||
|
<STATIC.LIBRARY=.data:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_DATA_END =.;
|
||||||
|
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
|
||||||
|
__exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table
|
||||||
|
__exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table
|
||||||
|
} > <STATIC.NAME>
|
||||||
|
|
||||||
|
.<STATIC.NAME>.bss:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.bss>
|
||||||
|
<STATIC.OBJECT=.bss:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.bss>
|
||||||
|
<STATIC.LIBRARY=.bss:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_BSS_END = .;
|
||||||
|
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
|
||||||
|
|
||||||
|
} >> <STATIC.NAME>
|
||||||
|
|
||||||
|
|
||||||
|
############################ AUTOLOADS ##############################
|
||||||
|
SDK_AUTOLOAD.MAIN.START = 0x027e0000;
|
||||||
|
SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD.MAIN.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.MAIN.BSS_SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.WRAM.START = 0x037f8000;
|
||||||
|
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);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.rodata>
|
||||||
|
<AUTOLOAD.OBJECT=.rodata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.rodata>
|
||||||
|
<AUTOLOAD.LIBRARY=.rodata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE BLOCK
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sdata>
|
||||||
|
<AUTOLOAD.OBJECT=.sdata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sdata>
|
||||||
|
<AUTOLOAD.LIBRARY=.sdata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.data>
|
||||||
|
<AUTOLOAD.OBJECT=.data:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.data>
|
||||||
|
<AUTOLOAD.LIBRARY=.data:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.;
|
||||||
|
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);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sbss>
|
||||||
|
<AUTOLOAD.OBJECT=.sbss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sbss>
|
||||||
|
<AUTOLOAD.LIBRARY=.sbss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.bss>
|
||||||
|
<AUTOLOAD.OBJECT=.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.bss>
|
||||||
|
<AUTOLOAD.LIBRARY=.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.wram>
|
||||||
|
<AUTOLOAD.OBJECT=.wram.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.wram>
|
||||||
|
<AUTOLOAD.LIBRARY=.wram.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: 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_MAIN_START = SDK_AUTOLOAD.MAIN.START;
|
||||||
|
SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END;
|
||||||
|
SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END;
|
||||||
|
SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE;
|
||||||
|
SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE;
|
||||||
|
SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START;
|
||||||
|
SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END;
|
||||||
|
SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||||
|
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>.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);
|
||||||
|
|
||||||
|
############################ OVERLAYS ###############################
|
||||||
|
SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>;
|
||||||
|
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
.<OVERLAY.NAME>:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.rodata>
|
||||||
|
<OVERLAY.OBJECT=.rodata:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.rodata>
|
||||||
|
<OVERLAY.LIBRARY=.rodata:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<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>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.;
|
||||||
|
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.data>
|
||||||
|
<OVERLAY.OBJECT=.data:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.data>
|
||||||
|
<OVERLAY.LIBRARY=.data:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.;
|
||||||
|
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:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(4);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.sbss>
|
||||||
|
<OVERLAY.OBJECT=.sbss:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.sbss>
|
||||||
|
<OVERLAY.LIBRARY=.sbss:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: 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>
|
||||||
|
|
||||||
|
|
||||||
|
############################ ARENA ##################################
|
||||||
|
.arena.MAIN:
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_SECTION_ARENA_START =.;
|
||||||
|
} > arena.MAIN
|
||||||
|
|
||||||
|
|
||||||
|
############################ OVERLAYDEFS ############################
|
||||||
|
.<PROPERTY.OVERLAYDEFS>:
|
||||||
|
{
|
||||||
|
### <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.SUFFIX>"); # Overlay <OVERLAY.ID>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.OVERLAYDEFS>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OVERLAYTABLE ###########################
|
||||||
|
.<PROPERTY.OVERLAYTABLE>:
|
||||||
|
{
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
# Overlay <OVERLAY.ID>
|
||||||
|
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>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OTHERS #################################
|
||||||
|
SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END;
|
||||||
|
SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END;
|
||||||
|
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM
|
||||||
|
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM
|
||||||
|
|
||||||
|
# work ram size checker => check AUTOLOAD_WRAM
|
||||||
|
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
|
||||||
|
.check.WORKRAM:
|
||||||
|
{
|
||||||
|
. = . + SDK_AUTOLOAD.WRAM.BSS_END - 0x037f8000 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||||
|
} > check.WORKRAM
|
||||||
|
}
|
76
include/twl/specfiles/ARM7-TS.lsf
Normal file
76
include/twl/specfiles/ARM7-TS.lsf
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - include
|
||||||
|
# File: ARM7-TS.lsf
|
||||||
|
#
|
||||||
|
# Copyright 2003-2005 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM7-TS.lsf,v $
|
||||||
|
# Revision 1.12 2005/04/14 00:04:17 terui
|
||||||
|
# Update copyright.
|
||||||
|
#
|
||||||
|
# Revision 1.11 2005/04/13 12:49:24 terui
|
||||||
|
# Change Autoload MAIN Address 0x027c0000 -> 0x027e0000
|
||||||
|
#
|
||||||
|
# Revision 1.10 2004/08/18 01:51:02 yasu
|
||||||
|
# Rename autoload section name
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/07/26 02:21:48 yasu
|
||||||
|
# Add comment for autoload on 0x027c0000
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/07/12 12:23:14 yasu
|
||||||
|
# Delete GROUP(ROOT)
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/07/10 04:11:17 yasu
|
||||||
|
# Add GROUP(xxx) as object group
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/07/02 01:12:11 yasu
|
||||||
|
# clean up comments
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/07/01 12:54:38 yasu
|
||||||
|
# support ITCM/DTCM/WRAM autoload
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/07/01 10:41:46 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/06/28 10:46:45 yasu
|
||||||
|
# avoid to use '*' as wildcard
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/04/14 10:25:09 yasu
|
||||||
|
# delete LIBRARIES group
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/04/06 01:59:54 yasu
|
||||||
|
# newly added
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Nitro LCF SPEC FILE
|
||||||
|
#
|
||||||
|
|
||||||
|
Static $(TARGET_NAME)
|
||||||
|
{
|
||||||
|
Address 0x02380000
|
||||||
|
Library crt0.o
|
||||||
|
StackSize 1024 512
|
||||||
|
}
|
||||||
|
|
||||||
|
#Objects on MAIN RAM # nothing for elf2bin
|
||||||
|
#Autoload MAIN
|
||||||
|
#{
|
||||||
|
# Address 0x027e0000
|
||||||
|
# Library
|
||||||
|
#}
|
||||||
|
|
||||||
|
Autoload WRAM
|
||||||
|
{
|
||||||
|
Address 0x037f8000
|
||||||
|
Object $(OBJS_STATIC)
|
||||||
|
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
|
||||||
|
Object * (.wram)
|
||||||
|
}
|
692
include/twl/specfiles/ARM9-TEG.lcf.template
Normal file
692
include/twl/specfiles/ARM9-TEG.lcf.template
Normal file
@ -0,0 +1,692 @@
|
|||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - tools - makelcf
|
||||||
|
# File: ARM9-TEG.lcf.template
|
||||||
|
#
|
||||||
|
# Copyright 2003-2006 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM9-TEG.lcf.template,v $
|
||||||
|
# Revision 1.31 2006/05/10 03:19:47 yasu
|
||||||
|
# CodeWarrior 2.x のオーバーレイ拡張への対応
|
||||||
|
#
|
||||||
|
# Revision 1.30 2006/03/30 00:31:29 yasu
|
||||||
|
# NUMBER_OVERLAYS を NUMBER.OVERLAYS に修正
|
||||||
|
#
|
||||||
|
# Revision 1.29 2006/03/29 13:19:14 yasu
|
||||||
|
# NUMBER_OVERLAYS -> NUMBER.OVERLAYS への修正
|
||||||
|
#
|
||||||
|
# Revision 1.28 2005/09/02 04:14:22 yasu
|
||||||
|
# SDK2.2 でも使用可能のように古いシンボルを再定義した
|
||||||
|
#
|
||||||
|
# Revision 1.27 2005/08/31 09:34:57 yasu
|
||||||
|
# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正
|
||||||
|
#
|
||||||
|
# Revision 1.26 2005/08/26 11:22:16 yasu
|
||||||
|
# ITCM/DTCM への overlay の対応
|
||||||
|
#
|
||||||
|
# Revision 1.25 2005/06/20 12:29:20 yasu
|
||||||
|
# Surffix -> Suffix 修正
|
||||||
|
#
|
||||||
|
# Revision 1.24 2005/06/17 03:16:11 yasu
|
||||||
|
# fix copyright header
|
||||||
|
#
|
||||||
|
# Revision 1.23 2005/06/14 09:03:42 yada
|
||||||
|
# fix around minus value of SDK_STACKSIZE
|
||||||
|
#
|
||||||
|
# Revision 1.22 2004/10/03 02:00:56 yasu
|
||||||
|
# Output component file list for compstatic tool
|
||||||
|
#
|
||||||
|
# Revision 1.21 2004/09/09 11:49:20 yasu
|
||||||
|
# Support compstatic in default
|
||||||
|
#
|
||||||
|
# Revision 1.20 2004/09/09 03:15:36 yasu
|
||||||
|
# Support NITRO_COMPRESS on TEG
|
||||||
|
#
|
||||||
|
# Revision 1.19 2004/08/02 10:38:53 yasu
|
||||||
|
# Add autoload-done callback address in overlaydefs
|
||||||
|
#
|
||||||
|
# Revision 1.18 2004/07/26 00:08:27 yasu
|
||||||
|
# Fix label of exception table
|
||||||
|
#
|
||||||
|
# Revision 1.17 2004/07/24 05:42:25 yasu
|
||||||
|
# Set default values for SDK_AUTOGEN_xTCM_START
|
||||||
|
#
|
||||||
|
# Revision 1.16 2004/07/23 11:32:14 yasu
|
||||||
|
# Define labels for __exception_table_start__ and _end__
|
||||||
|
#
|
||||||
|
# Revision 1.15 2004/07/12 12:21:08 yasu
|
||||||
|
# Check size of ITCM/DTCM
|
||||||
|
#
|
||||||
|
# Revision 1.14 2004/07/10 04:10:26 yasu
|
||||||
|
# Support command 'Library'
|
||||||
|
#
|
||||||
|
# Revision 1.13 2004/07/08 04:04:59 yasu
|
||||||
|
# fix small typo
|
||||||
|
#
|
||||||
|
# Revision 1.12 2004/07/02 08:13:02 yasu
|
||||||
|
# Support OBJECT( )
|
||||||
|
#
|
||||||
|
# Revision 1.11 2004/07/01 12:54:38 yasu
|
||||||
|
# support ITCM/DTCM/WRAM autoload
|
||||||
|
#
|
||||||
|
# Revision 1.10 2004/07/01 09:41:50 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/06/14 11:28:15 yasu
|
||||||
|
# support section filter "FOREACH.STATIC.OBJECTS=.sectionName"
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/04/26 11:41:38 yasu
|
||||||
|
# add KEEP_SECTION { .ctor }
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/04/20 07:41:32 yasu
|
||||||
|
# Set STATICINIT instead of .ctor temporarily
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/04/14 07:13:20 yasu
|
||||||
|
# add ALIGN(32) for convenience to handle cache line
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/04/06 01:53:34 yasu
|
||||||
|
# move rodata section into text section
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/04/06 01:39:43 miya
|
||||||
|
# modify overlay module size
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/03/29 11:40:48 yasu
|
||||||
|
# delete ROM SIZE parameter on overlay table
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/03/26 09:32:48 yasu
|
||||||
|
# delete useless ALIGN
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/03/26 06:04:32 yasu
|
||||||
|
# move spec files
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/03/23 00:15:35 yasu
|
||||||
|
# add WRITEW 0 for the termination of __OVERLAY_static_init__
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/03/22 02:15:49 yasu
|
||||||
|
# set _start as entry address in rom header
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/03/16 10:05:14 yasu
|
||||||
|
# add ALIGN(4) at end of section
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/02/14 03:34:00 yasu
|
||||||
|
# exchange .bss and .sbss
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/02/13 07:13:16 yasu
|
||||||
|
# support SDK_IRQ_STACKSIZE
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/02/05 12:21:14 yasu
|
||||||
|
# change SDK prefix iris -> nitro
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/01/16 01:34:01 yasu
|
||||||
|
# Clean up lcf to support ARENA functions
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/01/15 13:10:03 yasu
|
||||||
|
# clean unused variables
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/01/15 10:52:51 yasu
|
||||||
|
# lcf template for OVERLAY
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/01/14 01:59:02 yasu
|
||||||
|
# Change filename
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/01/07 13:11:08 yasu
|
||||||
|
# change command casing
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/01/05 02:32:59 yasu
|
||||||
|
# Initial version
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 # > <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
<AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
|
||||||
|
<PROPERTY.OVERLAYDEFS> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 # > <PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>
|
||||||
|
<PROPERTY.OVERLAYTABLE> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 # > <PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 # > <OVERLAY.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
dummy.MAIN_EX (RW) : ORIGIN = 0x02400000, LENGTH = 0x0
|
||||||
|
arena.MAIN (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS=MAIN>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX<FOREACH.OVERLAYS=MAINEX>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
arena.ITCM (RW) : ORIGIN = AFTER(ITCM<FOREACH.OVERLAYS=ITCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
arena.DTCM (RW) : ORIGIN = AFTER(DTCM<FOREACH.OVERLAYS=DTCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 # > component.files
|
||||||
|
check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 # > itcm.check
|
||||||
|
check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 # > dtcm.check
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
############################ STATIC #################################
|
||||||
|
.<STATIC.NAME>:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32); # Fit to cache line
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_STATIC_START =.;
|
||||||
|
SDK_STATIC_TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
OBJECT(_start,*)
|
||||||
|
crt0.o (.text)
|
||||||
|
<FOREACH.STATIC.OBJECTS=.text>
|
||||||
|
<STATIC.OBJECT=.text:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.text>
|
||||||
|
<STATIC.LIBRARY=.text:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
* (.exception)
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_ETABLE_START =.;
|
||||||
|
EXCEPTION
|
||||||
|
SDK_STATIC_ETABLE_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.init>
|
||||||
|
<STATIC.OBJECT=.init:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.init>
|
||||||
|
<STATIC.LIBRARY=.init:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.rodata>
|
||||||
|
<STATIC.OBJECT=.rodata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.rodata>
|
||||||
|
<STATIC.LIBRARY=.rodata: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>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_STATIC_SINIT_END =.;
|
||||||
|
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_STATIC_TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<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_OVERLAY_DIGEST =.;
|
||||||
|
# NO DIGEST
|
||||||
|
SDK_OVERLAY_DIGEST_END =.;
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_STATIC_DATA_END =.;
|
||||||
|
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
|
||||||
|
__exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table
|
||||||
|
__exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table
|
||||||
|
} > <STATIC.NAME>
|
||||||
|
|
||||||
|
.<STATIC.NAME>.bss:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.bss>
|
||||||
|
<STATIC.OBJECT=.bss:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.bss>
|
||||||
|
<STATIC.LIBRARY=.bss:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_STATIC_BSS_END = .;
|
||||||
|
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
|
||||||
|
|
||||||
|
} >> <STATIC.NAME>
|
||||||
|
|
||||||
|
|
||||||
|
############################ AUTOLOADS ##############################
|
||||||
|
SDK_AUTOLOAD.ITCM.START = 0x01ff8000;
|
||||||
|
SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START;
|
||||||
|
SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START;
|
||||||
|
SDK_AUTOLOAD.ITCM.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.ITCM.BSS_SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.DTCM.START = 0x02380000;
|
||||||
|
SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START;
|
||||||
|
SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START;
|
||||||
|
SDK_AUTOLOAD.DTCM.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.DTCM.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(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.itcm>
|
||||||
|
<AUTOLOAD.OBJECT=.itcm:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.itcm>
|
||||||
|
<AUTOLOAD.LIBRARY=.itcm:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.rodata>
|
||||||
|
<AUTOLOAD.OBJECT=.rodata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.rodata>
|
||||||
|
<AUTOLOAD.LIBRARY=.rodata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE BLOCK
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sdata>
|
||||||
|
<AUTOLOAD.OBJECT=.sdata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sdata>
|
||||||
|
<AUTOLOAD.LIBRARY=.sdata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.data>
|
||||||
|
<AUTOLOAD.OBJECT=.data:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.data>
|
||||||
|
<AUTOLOAD.LIBRARY=.data:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.dtcm>
|
||||||
|
<AUTOLOAD.OBJECT=.dtcm:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.dtcm>
|
||||||
|
<AUTOLOAD.LIBRARY=.dtcm:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.;
|
||||||
|
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(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sbss>
|
||||||
|
<AUTOLOAD.OBJECT=.sbss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sbss>
|
||||||
|
<AUTOLOAD.LIBRARY=.sbss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.bss>
|
||||||
|
<AUTOLOAD.OBJECT=.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.bss>
|
||||||
|
<AUTOLOAD.LIBRARY=.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(32);
|
||||||
|
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_ITCM_START = SDK_AUTOLOAD.ITCM.START;
|
||||||
|
SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END;
|
||||||
|
SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END;
|
||||||
|
SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE;
|
||||||
|
SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE;
|
||||||
|
SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START;
|
||||||
|
SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END;
|
||||||
|
SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END;
|
||||||
|
SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE;
|
||||||
|
SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE;
|
||||||
|
|
||||||
|
############################ AUTOLOAD_INFO ##########################
|
||||||
|
.binary.AUTOLOAD_INFO:
|
||||||
|
{
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
WRITEW ADDR(.<AUTOLOAD.NAME>);
|
||||||
|
WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE;
|
||||||
|
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
|
||||||
|
} > binary.STATIC_FOOTER
|
||||||
|
|
||||||
|
############################ OVERLAYS ###############################
|
||||||
|
SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>;
|
||||||
|
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
.<OVERLAY.NAME>:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.rodata>
|
||||||
|
<OVERLAY.OBJECT=.rodata:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.rodata>
|
||||||
|
<OVERLAY.LIBRARY=.rodata:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<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>
|
||||||
|
WRITEW 0;
|
||||||
|
#:::::::::: ctor
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.;
|
||||||
|
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.data>
|
||||||
|
<OVERLAY.OBJECT=.data:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.data>
|
||||||
|
<OVERLAY.LIBRARY=.data:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.;
|
||||||
|
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:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.sbss>
|
||||||
|
<OVERLAY.OBJECT=.sbss:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.sbss>
|
||||||
|
<OVERLAY.LIBRARY=.sbss:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(32);
|
||||||
|
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>
|
||||||
|
|
||||||
|
|
||||||
|
############################ MAIN EX ##################################
|
||||||
|
.dummy.MAIN_EX:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
} > dummy.MAIN_EX
|
||||||
|
|
||||||
|
|
||||||
|
############################ ARENA ##################################
|
||||||
|
.arena.MAIN:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_START =.;
|
||||||
|
} > arena.MAIN
|
||||||
|
|
||||||
|
.arena.MAIN_EX:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_EX_START =.;
|
||||||
|
} > arena.MAIN_EX
|
||||||
|
|
||||||
|
.arena.ITCM:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_ITCM_START =.;
|
||||||
|
} > arena.ITCM
|
||||||
|
|
||||||
|
.arena.DTCM:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_DTCM_START =.;
|
||||||
|
} > arena.DTCM
|
||||||
|
|
||||||
|
|
||||||
|
############################ OVERLAYDEFS ############################
|
||||||
|
.<PROPERTY.OVERLAYDEFS>:
|
||||||
|
{
|
||||||
|
### <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.SUFFIX>"); # Overlay <OVERLAY.ID>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.OVERLAYDEFS>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OVERLAYTABLE ###########################
|
||||||
|
.<PROPERTY.OVERLAYTABLE>:
|
||||||
|
{
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
# Overlay <OVERLAY.ID>
|
||||||
|
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>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OTHERS #################################
|
||||||
|
SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START;
|
||||||
|
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in DTCM
|
||||||
|
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # when 0 means all remains of DTCM
|
||||||
|
|
||||||
|
# Module filelist
|
||||||
|
.binary.MODULE_FILES:
|
||||||
|
{
|
||||||
|
WRITES ("<STATIC.NAME><PROPERTY.SUFFIX>");
|
||||||
|
WRITES ("<PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>");
|
||||||
|
WRITES ("<PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>");
|
||||||
|
} > binary.MODULE_FILES
|
||||||
|
|
||||||
|
# ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM
|
||||||
|
.check.ITCM:
|
||||||
|
{
|
||||||
|
. = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE;
|
||||||
|
<FOREACH.OVERLAYS=ITCM>
|
||||||
|
. = . + SDK_OVERLAY.<OVERLAY.NAME>.SIZE + SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE;
|
||||||
|
<END.OVERLAYS>
|
||||||
|
} > check.ITCM
|
||||||
|
|
||||||
|
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
|
||||||
|
.check.DTCM:
|
||||||
|
{
|
||||||
|
. = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE;
|
||||||
|
<FOREACH.OVERLAYS=DTCM>
|
||||||
|
. = . + SDK_OVERLAY.<OVERLAY.NAME>.SIZE + SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE;
|
||||||
|
<END.OVERLAYS>
|
||||||
|
. = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||||
|
} > check.DTCM
|
||||||
|
|
||||||
|
}
|
76
include/twl/specfiles/ARM9-TEG.lsf
Normal file
76
include/twl/specfiles/ARM9-TEG.lsf
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - include
|
||||||
|
# File: ARM9-TEG.lsf
|
||||||
|
#
|
||||||
|
# Copyright 2003,2004 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM9-TEG.lsf,v $
|
||||||
|
# Revision 1.9 2004/07/10 12:17:51 yasu
|
||||||
|
# delete GROUP(ROOT)
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/07/10 04:11:17 yasu
|
||||||
|
# Add GROUP(xxx) as object group
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/07/08 04:04:59 yasu
|
||||||
|
# fix small typo
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/07/01 12:54:38 yasu
|
||||||
|
# support ITCM/DTCM/WRAM autoload
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/07/01 09:41:50 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/06/28 10:53:23 yasu
|
||||||
|
# Avoid to use '*' as wildcard
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/04/14 10:25:09 yasu
|
||||||
|
# delete LIBRARIES group
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/03/26 13:16:17 yasu
|
||||||
|
# use variables
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/03/26 06:04:32 yasu
|
||||||
|
# move spec files
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/03/18 12:42:34 yasu
|
||||||
|
# default.lsf -> default.ARM[9/7]-TEG.lsf
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/03/18 03:11:26 yasu
|
||||||
|
# rename segment default -> main
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/03/18 02:51:51 yasu
|
||||||
|
# default lcf spec file
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Nitro LCF SPEC FILE
|
||||||
|
#
|
||||||
|
|
||||||
|
Static $(TARGET_NAME)
|
||||||
|
{
|
||||||
|
Address 0x02004000
|
||||||
|
Object $(OBJS_STATIC)
|
||||||
|
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
|
||||||
|
}
|
||||||
|
|
||||||
|
Autoload ITCM
|
||||||
|
{
|
||||||
|
Address 0x01ff8000
|
||||||
|
Object * (.itcm)
|
||||||
|
Object $(OBJS_AUTOLOAD) (.text)
|
||||||
|
}
|
||||||
|
|
||||||
|
Autoload DTCM
|
||||||
|
{
|
||||||
|
Address 0x02380000
|
||||||
|
Object * (.dtcm)
|
||||||
|
Object $(OBJS_AUTOLOAD) (.data)
|
||||||
|
Object $(OBJS_AUTOLOAD) (.bss)
|
||||||
|
}
|
706
include/twl/specfiles/ARM9-TS.lcf.template
Normal file
706
include/twl/specfiles/ARM9-TS.lcf.template
Normal file
@ -0,0 +1,706 @@
|
|||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - tools - makelcf
|
||||||
|
# File: ARM9-TS.lcf.template
|
||||||
|
#
|
||||||
|
# Copyright 2003-2006 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM9-TS.lcf.template,v $
|
||||||
|
# Revision 1.35 2006/05/10 03:19:47 yasu
|
||||||
|
# CodeWarrior 2.x のオーバーレイ拡張への対応
|
||||||
|
#
|
||||||
|
# Revision 1.34 2006/04/06 09:02:36 kitase_hirotake
|
||||||
|
# .itcm.bss .dtcm.bss に対応
|
||||||
|
#
|
||||||
|
# Revision 1.33 2006/03/30 23:59:22 yasu
|
||||||
|
# 著作年度の変更
|
||||||
|
#
|
||||||
|
# Revision 1.32 2006/03/29 13:14:22 yasu
|
||||||
|
# CWVER 2.x でのオーバーレイのサポート
|
||||||
|
#
|
||||||
|
# Revision 1.31 2005/11/24 01:16:47 yada
|
||||||
|
# change start address of mainEX arena from 0x2400000 to 0x23e0000
|
||||||
|
#
|
||||||
|
# Revision 1.30 2005/09/02 04:14:22 yasu
|
||||||
|
# SDK2.2 でも使用可能のように古いシンボルを再定義した
|
||||||
|
#
|
||||||
|
# Revision 1.29 2005/08/31 09:34:57 yasu
|
||||||
|
# section_BSS というようなセクション名を使ったときに正常に動作しない場合があるのを修正
|
||||||
|
#
|
||||||
|
# Revision 1.28 2005/08/26 11:22:16 yasu
|
||||||
|
# ITCM/DTCM への overlay の対応
|
||||||
|
#
|
||||||
|
# Revision 1.27 2005/06/20 12:29:20 yasu
|
||||||
|
# Surffix -> Suffix 修正
|
||||||
|
#
|
||||||
|
# Revision 1.26 2005/06/14 09:03:42 yada
|
||||||
|
# fix around minus value of SDK_STACKSIZE
|
||||||
|
#
|
||||||
|
# Revision 1.25 2005/04/13 12:51:00 terui
|
||||||
|
# Change SDK_AUTOLOAD.DTCM.START 0x027c0000 -> 0x027e0000
|
||||||
|
#
|
||||||
|
# Revision 1.24 2005/03/30 00:02:14 yosizaki
|
||||||
|
# fix copyright header.
|
||||||
|
#
|
||||||
|
# Revision 1.23 2005/03/25 12:54:59 yasu
|
||||||
|
# Include .version section
|
||||||
|
#
|
||||||
|
# Revision 1.22 2004/10/03 02:00:56 yasu
|
||||||
|
# Output component file list for compstatic tool
|
||||||
|
#
|
||||||
|
# Revision 1.21 2004/09/27 05:28:21 yasu
|
||||||
|
# Support .sinit
|
||||||
|
#
|
||||||
|
# Revision 1.20 2004/09/09 11:49:20 yasu
|
||||||
|
# Support compstatic in default
|
||||||
|
#
|
||||||
|
# Revision 1.19 2004/09/06 06:40:00 yasu
|
||||||
|
# Add labels for digest
|
||||||
|
#
|
||||||
|
# Revision 1.18 2004/08/20 06:19:59 yasu
|
||||||
|
# DTCM moves to 0x027c0000 at default
|
||||||
|
#
|
||||||
|
# Revision 1.17 2004/08/02 10:38:53 yasu
|
||||||
|
# Add autoload-done callback address in overlaydefs
|
||||||
|
#
|
||||||
|
# Revision 1.16 2004/07/26 02:22:32 yasu
|
||||||
|
# Change DTCM address to 0x023c0000
|
||||||
|
#
|
||||||
|
# Revision 1.15 2004/07/26 00:08:27 yasu
|
||||||
|
# Fix label of exception table
|
||||||
|
#
|
||||||
|
# Revision 1.14 2004/07/24 05:42:25 yasu
|
||||||
|
# Set default values for SDK_AUTOGEN_xTCM_START
|
||||||
|
#
|
||||||
|
# Revision 1.13 2004/07/23 11:32:14 yasu
|
||||||
|
# Define labels for __exception_table_start__ and _end__
|
||||||
|
#
|
||||||
|
# Revision 1.12 2004/07/12 12:21:08 yasu
|
||||||
|
# Check size of ITCM/DTCM
|
||||||
|
#
|
||||||
|
# Revision 1.11 2004/07/10 04:10:26 yasu
|
||||||
|
# Support command 'Library'
|
||||||
|
#
|
||||||
|
# Revision 1.10 2004/07/02 08:13:02 yasu
|
||||||
|
# Support OBJECT( )
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/07/01 12:54:38 yasu
|
||||||
|
# support ITCM/DTCM/WRAM autoload
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/07/01 10:41:46 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/06/02 07:35:37 yasu
|
||||||
|
# Set libsyscall.a in FORCE_ACTIVE
|
||||||
|
# Put NitroMain at the top of ROM image
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/06/02 04:56:28 yasu
|
||||||
|
# Change to fit to new ROM map of TS
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/06/01 06:12:00 miya
|
||||||
|
# add padding at top of ROM image.
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/04/26 12:16:48 yasu
|
||||||
|
# add KEEP_SECTIONS
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/04/20 07:41:32 yasu
|
||||||
|
# Set STATICINIT instead of .ctor temporarily
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/04/14 07:16:42 yasu
|
||||||
|
# add ALIGN(32) for convenience to handle cache line
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/04/06 01:59:54 yasu
|
||||||
|
# newly added
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
<STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 # > <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
<AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.AUTOLOADS>
|
||||||
|
binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 # >> <STATIC.NAME><PROPERTY.SUFFIX>
|
||||||
|
|
||||||
|
<PROPERTY.OVERLAYDEFS> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>
|
||||||
|
<PROPERTY.OVERLAYTABLE> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
<OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.SUFFIX>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
dummy.MAIN_EX (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0
|
||||||
|
arena.MAIN (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS=MAIN>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX<FOREACH.OVERLAYS=MAINEX>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
arena.ITCM (RW) : ORIGIN = AFTER(ITCM<FOREACH.OVERLAYS=ITCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
arena.DTCM (RW) : ORIGIN = AFTER(DTCM<FOREACH.OVERLAYS=DTCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0
|
||||||
|
binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files
|
||||||
|
check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check
|
||||||
|
check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCE_ACTIVE
|
||||||
|
{
|
||||||
|
SVC_SoftReset
|
||||||
|
}
|
||||||
|
|
||||||
|
KEEP_SECTION
|
||||||
|
{
|
||||||
|
.sinit
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
############################ STATIC #################################
|
||||||
|
.<STATIC.NAME>:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32); # Fit to cache line
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# TEXT BLOCK: READ ONLY
|
||||||
|
#
|
||||||
|
SDK_STATIC_START =.;
|
||||||
|
SDK_STATIC_TEXT_START =.;
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
libsyscall.a (.text)
|
||||||
|
crt0.o (.text)
|
||||||
|
crt0.o (.rodata)
|
||||||
|
* (.version)
|
||||||
|
OBJECT(NitroMain,*)
|
||||||
|
<FOREACH.STATIC.OBJECTS=.text>
|
||||||
|
<STATIC.OBJECT=.text:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.text>
|
||||||
|
<STATIC.LIBRARY=.text:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
* (.exception)
|
||||||
|
. = ALIGN(4);
|
||||||
|
SDK_STATIC_ETABLE_START =.;
|
||||||
|
EXCEPTION
|
||||||
|
SDK_STATIC_ETABLE_END =.;
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.init>
|
||||||
|
<STATIC.OBJECT=.init:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.init>
|
||||||
|
<STATIC.LIBRARY=.init:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.rodata>
|
||||||
|
<STATIC.OBJECT=.rodata:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.rodata>
|
||||||
|
<STATIC.LIBRARY=.rodata: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
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_STATIC_TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<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_OVERLAY_DIGEST =.;
|
||||||
|
# NO DIGEST
|
||||||
|
SDK_OVERLAY_DIGEST_END =.;
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_STATIC_DATA_END =.;
|
||||||
|
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
|
||||||
|
__exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table
|
||||||
|
__exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table
|
||||||
|
} > <STATIC.NAME>
|
||||||
|
|
||||||
|
.<STATIC.NAME>.bss:
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.STATIC.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>;
|
||||||
|
<END.STATIC.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.STATIC.OBJECTS=.bss>
|
||||||
|
<STATIC.OBJECT=.bss:t>
|
||||||
|
<END.STATIC.OBJECTS>
|
||||||
|
<FOREACH.STATIC.LIBRARIES=.bss>
|
||||||
|
<STATIC.LIBRARY=.bss:t>
|
||||||
|
<END.STATIC.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_STATIC_BSS_END = .;
|
||||||
|
SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
|
||||||
|
|
||||||
|
} >> <STATIC.NAME>
|
||||||
|
|
||||||
|
|
||||||
|
############################ AUTOLOADS ##############################
|
||||||
|
SDK_AUTOLOAD.ITCM.START = 0x01ff8000;
|
||||||
|
SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START;
|
||||||
|
SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START;
|
||||||
|
SDK_AUTOLOAD.ITCM.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.ITCM.BSS_SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.DTCM.START = 0x027e0000;
|
||||||
|
SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START;
|
||||||
|
SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START;
|
||||||
|
SDK_AUTOLOAD.DTCM.SIZE = 0;
|
||||||
|
SDK_AUTOLOAD.DTCM.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(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.itcm>
|
||||||
|
<AUTOLOAD.OBJECT=.itcm:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.itcm>
|
||||||
|
<AUTOLOAD.LIBRARY=.itcm:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.rodata>
|
||||||
|
<AUTOLOAD.OBJECT=.rodata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.rodata>
|
||||||
|
<AUTOLOAD.LIBRARY=.rodata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: text/rodata
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE BLOCK
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START =.;
|
||||||
|
#:::::::::: data
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sdata>
|
||||||
|
<AUTOLOAD.OBJECT=.sdata:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sdata>
|
||||||
|
<AUTOLOAD.LIBRARY=.sdata:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.data>
|
||||||
|
<AUTOLOAD.OBJECT=.data:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.data>
|
||||||
|
<AUTOLOAD.LIBRARY=.data:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.dtcm>
|
||||||
|
<AUTOLOAD.OBJECT=.dtcm:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.dtcm>
|
||||||
|
<AUTOLOAD.LIBRARY=.dtcm:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.;
|
||||||
|
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(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>;
|
||||||
|
<END.AUTOLOAD.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# BSS BLOCK
|
||||||
|
#
|
||||||
|
SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .;
|
||||||
|
#:::::::::: bss
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.sbss>
|
||||||
|
<AUTOLOAD.OBJECT=.sbss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.sbss>
|
||||||
|
<AUTOLOAD.LIBRARY=.sbss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.bss>
|
||||||
|
<AUTOLOAD.OBJECT=.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.bss>
|
||||||
|
<AUTOLOAD.LIBRARY=.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.dtcm>
|
||||||
|
<AUTOLOAD.OBJECT=.dtcm.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.dtcm>
|
||||||
|
<AUTOLOAD.LIBRARY=.dtcm.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.AUTOLOAD.OBJECTS=.itcm>
|
||||||
|
<AUTOLOAD.OBJECT=.itcm.bss:t>
|
||||||
|
<END.AUTOLOAD.OBJECTS>
|
||||||
|
<FOREACH.AUTOLOAD.LIBRARIES=.itcm>
|
||||||
|
<AUTOLOAD.LIBRARY=.itcm.bss:t>
|
||||||
|
<END.AUTOLOAD.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(32);
|
||||||
|
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_ITCM_START = SDK_AUTOLOAD.ITCM.START;
|
||||||
|
SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END;
|
||||||
|
SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END;
|
||||||
|
SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE;
|
||||||
|
SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE;
|
||||||
|
SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START;
|
||||||
|
SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END;
|
||||||
|
SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END;
|
||||||
|
SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE;
|
||||||
|
SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE;
|
||||||
|
|
||||||
|
############################ AUTOLOAD_INFO ##########################
|
||||||
|
.binary.AUTOLOAD_INFO:
|
||||||
|
{
|
||||||
|
<FOREACH.AUTOLOADS>
|
||||||
|
WRITEW ADDR(.<AUTOLOAD.NAME>);
|
||||||
|
WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE;
|
||||||
|
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
|
||||||
|
} > binary.STATIC_FOOTER
|
||||||
|
|
||||||
|
############################ OVERLAYS ###############################
|
||||||
|
SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>;
|
||||||
|
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
.<OVERLAY.NAME>:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.rodata>
|
||||||
|
<OVERLAY.OBJECT=.rodata:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.rodata>
|
||||||
|
<OVERLAY.LIBRARY=.rodata:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<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
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DATA BLOCK: READ WRITE
|
||||||
|
#
|
||||||
|
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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.data>
|
||||||
|
<OVERLAY.OBJECT=.data:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.data>
|
||||||
|
<OVERLAY.LIBRARY=.data:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: data
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.;
|
||||||
|
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:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF>
|
||||||
|
{
|
||||||
|
ALIGNALL(4); . = ALIGN(32);
|
||||||
|
<IF.NITRO_LCFSPEC.GE.2>
|
||||||
|
<FOREACH.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>;
|
||||||
|
<END.OVERLAY.SEARCHSYMBOLS>
|
||||||
|
<ENDIF>
|
||||||
|
#
|
||||||
|
# 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>
|
||||||
|
. = ALIGN(4);
|
||||||
|
<FOREACH.OVERLAY.OBJECTS=.sbss>
|
||||||
|
<OVERLAY.OBJECT=.sbss:t>
|
||||||
|
<END.OVERLAY.OBJECTS>
|
||||||
|
<FOREACH.OVERLAY.LIBRARIES=.sbss>
|
||||||
|
<OVERLAY.LIBRARY=.sbss:t>
|
||||||
|
<END.OVERLAY.LIBRARIES>
|
||||||
|
. = ALIGN(4);
|
||||||
|
#:::::::::: bss
|
||||||
|
. = ALIGN(32);
|
||||||
|
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>
|
||||||
|
|
||||||
|
############################ MAIN EX ##################################
|
||||||
|
# MAIN EX Area
|
||||||
|
.dummy.MAIN_EX:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
} > dummy.MAIN_EX
|
||||||
|
|
||||||
|
############################ ARENA ##################################
|
||||||
|
.arena.MAIN:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_START =.;
|
||||||
|
} > arena.MAIN
|
||||||
|
|
||||||
|
.arena.MAIN_EX:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_EX_START =.;
|
||||||
|
} > arena.MAIN_EX
|
||||||
|
|
||||||
|
.arena.ITCM:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_ITCM_START =.;
|
||||||
|
} > arena.ITCM
|
||||||
|
|
||||||
|
.arena.DTCM:
|
||||||
|
{
|
||||||
|
. = ALIGN(32);
|
||||||
|
SDK_SECTION_ARENA_DTCM_START =.;
|
||||||
|
} > arena.DTCM
|
||||||
|
|
||||||
|
############################ OVERLAYDEFS ############################
|
||||||
|
.<PROPERTY.OVERLAYDEFS>:
|
||||||
|
{
|
||||||
|
### <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.SUFFIX>"); # Overlay <OVERLAY.ID>
|
||||||
|
<END.OVERLAYS>
|
||||||
|
|
||||||
|
} > <PROPERTY.OVERLAYDEFS>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OVERLAYTABLE ###########################
|
||||||
|
.<PROPERTY.OVERLAYTABLE>:
|
||||||
|
{
|
||||||
|
<FOREACH.OVERLAYS>
|
||||||
|
# Overlay <OVERLAY.ID>
|
||||||
|
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>
|
||||||
|
|
||||||
|
|
||||||
|
############################ OTHERS #################################
|
||||||
|
SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START;
|
||||||
|
SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in DTCM
|
||||||
|
SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # when 0 means all remains of DTCM
|
||||||
|
|
||||||
|
# Module filelist
|
||||||
|
.binary.MODULE_FILES:
|
||||||
|
{
|
||||||
|
WRITES ("<STATIC.NAME><PROPERTY.SUFFIX>");
|
||||||
|
WRITES ("<PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>");
|
||||||
|
WRITES ("<PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>");
|
||||||
|
} > binary.MODULE_FILES
|
||||||
|
|
||||||
|
# ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM
|
||||||
|
.check.ITCM:
|
||||||
|
{
|
||||||
|
. = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE;
|
||||||
|
<FOREACH.OVERLAYS=ITCM>
|
||||||
|
. = . + SDK_OVERLAY.<OVERLAY.NAME>.SIZE + SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE;
|
||||||
|
<END.OVERLAYS>
|
||||||
|
} > check.ITCM
|
||||||
|
|
||||||
|
SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
|
||||||
|
.check.DTCM:
|
||||||
|
{
|
||||||
|
. = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE;
|
||||||
|
<FOREACH.OVERLAYS=DTCM>
|
||||||
|
. = . + SDK_OVERLAY.<OVERLAY.NAME>.SIZE + SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE;
|
||||||
|
<END.OVERLAYS>
|
||||||
|
. = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
|
||||||
|
} > check.DTCM
|
||||||
|
|
||||||
|
}
|
77
include/twl/specfiles/ARM9-TS.lsf
Normal file
77
include/twl/specfiles/ARM9-TS.lsf
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: NitroSDK - include
|
||||||
|
# File: ARM9-TS.lsf
|
||||||
|
#
|
||||||
|
# Copyright 2003-2005 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.
|
||||||
|
#
|
||||||
|
# $Log: ARM9-TS.lsf,v $
|
||||||
|
# Revision 1.12 2005/04/14 00:04:16 terui
|
||||||
|
# Update copyright.
|
||||||
|
#
|
||||||
|
# Revision 1.11 2005/04/13 12:49:59 terui
|
||||||
|
# Change Autoload DTCM Address 0x027c0000 -> 0x027e0000
|
||||||
|
#
|
||||||
|
# Revision 1.10 2004/08/18 01:50:09 yasu
|
||||||
|
# DTCM moves to 0x027c0000
|
||||||
|
#
|
||||||
|
# Revision 1.9 2004/07/26 02:22:32 yasu
|
||||||
|
# Change DTCM address to 0x023c0000
|
||||||
|
#
|
||||||
|
# Revision 1.8 2004/07/10 12:17:51 yasu
|
||||||
|
# delete GROUP(ROOT)
|
||||||
|
#
|
||||||
|
# Revision 1.7 2004/07/10 04:11:17 yasu
|
||||||
|
# Add GROUP(xxx) as object group
|
||||||
|
#
|
||||||
|
# Revision 1.6 2004/07/01 12:54:38 yasu
|
||||||
|
# support ITCM/DTCM/WRAM autoload
|
||||||
|
#
|
||||||
|
# Revision 1.5 2004/07/01 10:41:46 yasu
|
||||||
|
# support autoload
|
||||||
|
#
|
||||||
|
# Revision 1.4 2004/06/28 10:46:45 yasu
|
||||||
|
# avoid to use '*' as wildcard
|
||||||
|
#
|
||||||
|
# Revision 1.3 2004/06/08 07:46:40 yasu
|
||||||
|
# move start address 0x02004000 -> 0x02000000
|
||||||
|
#
|
||||||
|
# Revision 1.2 2004/04/14 10:25:09 yasu
|
||||||
|
# delete LIBRARIES group
|
||||||
|
#
|
||||||
|
# Revision 1.1 2004/04/06 01:59:54 yasu
|
||||||
|
# newly added
|
||||||
|
#
|
||||||
|
# $NoKeywords: $
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Nitro LCF SPEC FILE
|
||||||
|
#
|
||||||
|
|
||||||
|
Static $(TARGET_NAME)
|
||||||
|
{
|
||||||
|
Address 0x02000000
|
||||||
|
Object $(OBJS_STATIC)
|
||||||
|
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
|
||||||
|
}
|
||||||
|
|
||||||
|
Autoload ITCM
|
||||||
|
{
|
||||||
|
Address 0x01ff8000
|
||||||
|
Object * (.itcm)
|
||||||
|
Object $(OBJS_AUTOLOAD) (.text)
|
||||||
|
}
|
||||||
|
|
||||||
|
Autoload DTCM
|
||||||
|
{
|
||||||
|
Address 0x027e0000
|
||||||
|
Object * (.dtcm)
|
||||||
|
Object $(OBJS_AUTOLOAD) (.data)
|
||||||
|
Object $(OBJS_AUTOLOAD) (.bss)
|
||||||
|
}
|
||||||
|
|
86
include/twl/vlink.h
Normal file
86
include/twl/vlink.h
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
#ifndef TWL_VLINK_H_
|
||||||
|
#define TWL_VLINK_H_
|
||||||
|
|
||||||
|
#ifndef _IOREAD
|
||||||
|
#define _IOREAD 0x01
|
||||||
|
#define _IOWRITE 0x02
|
||||||
|
#define _IORW 0x04
|
||||||
|
#define _IOEOF 0x08
|
||||||
|
#define _IOFLUSH 0x10
|
||||||
|
#define _IOERR 0x20
|
||||||
|
#define _IOSTRING 0x40
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void vlinkInit(void);
|
||||||
|
|
||||||
|
struct ffblk {
|
||||||
|
char ff_reserved[23];
|
||||||
|
char ff_attrib;
|
||||||
|
unsigned short ff_ftime;
|
||||||
|
unsigned short ff_fdate;
|
||||||
|
struct {
|
||||||
|
unsigned short low,high;
|
||||||
|
} ff_fsize;
|
||||||
|
char ff_name[255+1];
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned year;
|
||||||
|
unsigned mon;
|
||||||
|
unsigned day;
|
||||||
|
unsigned hour;
|
||||||
|
unsigned min;
|
||||||
|
unsigned sec;
|
||||||
|
unsigned msec;
|
||||||
|
} Vlink_dos_time;
|
||||||
|
|
||||||
|
int vlink_dos_put_console(char c);
|
||||||
|
int vlink_dos_putstring_console(char *str,int size);
|
||||||
|
int vlink_dos_stat_console(void);
|
||||||
|
int vlink_dos_get_console(void);
|
||||||
|
int vlink_dos_open(char *fname,int mode);
|
||||||
|
int vlink_dos_creat(char *fname,int mode);
|
||||||
|
int vlink_dos_read(int fd,char *buf,int size);
|
||||||
|
int vlink_dos_write(int fd,char *buf,int size);
|
||||||
|
int vlink_dos_close(int fd);
|
||||||
|
int vlink_dos_lseek(int fd,int ofs,int pos);
|
||||||
|
int vlink_dos_file_mode(char *fname,int mode,int action);
|
||||||
|
int vlink_dos_set_dta(struct ffblk *fbp);
|
||||||
|
int vlink_dos_find_first(char *fname,unsigned attrib);
|
||||||
|
int vlink_dos_find_next(void);
|
||||||
|
int vlink_dos_find_close(void);
|
||||||
|
int vlink_dos_get_ioctl(int fd);
|
||||||
|
int vlink_dos_get_file_time(int fd,unsigned short *timep);
|
||||||
|
int vlink_dos_get_time(Vlink_dos_time *dtp);
|
||||||
|
int vlink_dos_set_file_time(int fd,unsigned short *timep);
|
||||||
|
int vlink_dos_mkdir(char *path);
|
||||||
|
int vlink_dos_rmdir(char *path);
|
||||||
|
int vlink_dos_remove(char *fname);
|
||||||
|
int vlink_dos_rename(char *old,char *new);
|
||||||
|
int vlink_dos_getcwd(char *path,int drvno);
|
||||||
|
int vlink_dos_chdir(char *path);
|
||||||
|
int vlink_dos_getcdrv(void);
|
||||||
|
int vlink_dos_dup(int fd);
|
||||||
|
int vlink_dos_dup2(int oldfd,int newfd);
|
||||||
|
int vlink_dos_version(void);
|
||||||
|
int vlink_dos_exit(int retcode);
|
||||||
|
int vlink_dos_sleep(int ms);
|
||||||
|
|
||||||
|
int vlinkRead_VIO_pt(void *dramAddr, int nbytes);
|
||||||
|
int vlinkWrite_VIO_pt(void *dramAddr,int nbytes);
|
||||||
|
|
||||||
|
int i_vlink_init_osemu(void);
|
||||||
|
|
||||||
|
void vlink_dos_printf(const char *text, ...);
|
||||||
|
void vlink_dos_fprintf(int fd, const char *text, ...);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // TWL_VLINK_H_
|
22
include/twl_sp.h
Normal file
22
include/twl_sp.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlSDK - include
|
||||||
|
File: twl_sp.h
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
$Log: $
|
||||||
|
$NoKeywords: $
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef SDK_ARM7
|
||||||
|
#define SDK_ARM7
|
||||||
|
#endif
|
||||||
|
#ifdef SDK_ARM9
|
||||||
|
#undef SDK_ARM9
|
||||||
|
#endif
|
||||||
|
#include <twl.h>
|
5
readme.txt
Normal file
5
readme.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
ビルドするには NitroSDK が必要です。
|
||||||
|
|
||||||
|
下記の環境変数を設定してください。
|
||||||
|
例)TWLSDK_ROOT=c:/TwlSDK
|
||||||
|
|
304
tools/axd/ARM7.ses
Normal file
304
tools/axd/ARM7.ses
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
[CLI]
|
||||||
|
dwParse=1
|
||||||
|
dwEcho=1
|
||||||
|
dwUpdate=1
|
||||||
|
dwHistorySize=16
|
||||||
|
dwInstructionSize=1
|
||||||
|
dwMemBytes=32
|
||||||
|
dwMemSize=0
|
||||||
|
dwStepSize=0
|
||||||
|
Format=hex
|
||||||
|
FormatPar=-1
|
||||||
|
dwLogFile=0
|
||||||
|
dwRecordFile=0
|
||||||
|
[Console]
|
||||||
|
dwLogStatus=0
|
||||||
|
dwReadStatus=0
|
||||||
|
[Control]
|
||||||
|
dwActiveTab=0
|
||||||
|
[DebugEnvironment]
|
||||||
|
biDebugEnvironment=EECEFEDDABAAAAAABAAAAAAADEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFEMFNEFHMGEHJGNCJEDEFEOCEGMGMGAANEFHMGEHJGNCJEDEFEAADCFJBAAAAANEFFMEEFJENCJEDEFEPFEECFJEGFFECFADPFOEBENEFENDBECFNEHDEFEENEJENAKANEFFMEEFJENCJEDEFEPFDEPEOEOEFEDEEFJEPEOEPFOEBENEFENDNAKANEFFMEEFJENCJEDEFEPFDFFECFGFFECFPFMEPEDEBEEFJEPEOENDMGPGDGBGMGIGPGDHEHNAKANEFFMEEFJENCJEDEFEPFEEMEMEPFDFFEEFEFJEOEHEDFNDADNAKAEFBECFHEFEEFPFEEJECFNDDEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFENAKANEFFMEEFJENCJEDEFEPFIEBEOEEEMEFECFCEBEDFFEBEEEEECFNDGEGEADADADADADADNAKANEFFMEEFJENCJEDEFEPFDEMEFEBEOEDEPEEEFEBEEEEECFNDADADADADADADFDADNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEMEJEDFEFJEEFFENEADNDNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEOEBENEFENDNAKADEPEOEEFCFPEMEMEFECFPFCFEEJEGFFECFDFJEPEOENDBDFDBDNAKANEFFMEEFJENCJEDEFEPFIFDFIEPEEFAFMEFFHEHEJEOEHEFEOEBECEMEFEEENDEFCFFFFENAKACEJFEFFEDFFEIFNDMEJGEHEHMGFGNAKANEFFMEEFJENCJEDEFEPFEFBEAFADPFAFPEDFJEEFJEPEOENDBDNAKADCDCDC
|
||||||
|
[DebugInternals]
|
||||||
|
dwActiveTab=0
|
||||||
|
[DebugInternals\InternalVariables]
|
||||||
|
dwRefresh=1
|
||||||
|
[Docking]
|
||||||
|
biBarID_0=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAACBAAAAAOPPPPPPPMEAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_4=AMAAAAAABJAAAAAAJLDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_65539=LCCAAAAAKJBAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAABACAAAAAFOCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_1114115=GHBAAAAAPNAAAAAAJMCAAAAABJAAAAAAMGAAAAAAAIAAAAAAPCBAAAAADPBAAAAACAAAAAAABAPCMKBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_65538=LMAAAAAAIGBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAANCFAAAAADJAAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_1=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPCHBAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_65540=IMBAAAAADIBAAAAAILDAAAAAIEAAAAAAAMAAAAAAEMAAAAAAHHEAAAAAPLCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_7=HIBAAAAABJAAAAAAJLDAAAAABJAAAAAAMGAAAAAAAIAAAAAALHDAAAAAOLBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_6=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAAOPPPPPPPMBAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_65543=AMAAAAAABJAAAAAAJLDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPCHBAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
[Docking\OpenStates]
|
||||||
|
biBarID_0=BAAAAAAA
|
||||||
|
biBarID_4=BAAAAAAA
|
||||||
|
biBarID_6=BAAAAAAA
|
||||||
|
biBarID_7=BAAAAAAA
|
||||||
|
biBarID_65538=BAAAAAAA
|
||||||
|
biBarID_65539=BAAAAAAA
|
||||||
|
biBarID_65540=BAAAAAAA
|
||||||
|
biBarID_65543=BAAAAAAA
|
||||||
|
[Images\Image_0]
|
||||||
|
Filename=C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf
|
||||||
|
Processor=ARM7TDMI_1
|
||||||
|
dwProfileState=0
|
||||||
|
[Interface\AutoRefresh]
|
||||||
|
dwEnabled=0
|
||||||
|
dwInterval=100
|
||||||
|
dwTerminateOnSuspend=0
|
||||||
|
[Interface\Formatting]
|
||||||
|
dwDecIsUser=0
|
||||||
|
DecFormat=%d
|
||||||
|
dwHexIsUser=0
|
||||||
|
HexFormat=%0X
|
||||||
|
dwFloatIsUser=0
|
||||||
|
FloatFormat=%.7g
|
||||||
|
dwDbleIsUser=0
|
||||||
|
DbleFormat=%.10g
|
||||||
|
dwQ15IsUser=0
|
||||||
|
Q15Format=%.6g
|
||||||
|
dwQ31IsUser=0
|
||||||
|
Q31Format=%.12g
|
||||||
|
dwArrayThreshold=16
|
||||||
|
[Interface\General]
|
||||||
|
dwTarget Connection=1
|
||||||
|
dwReport All Warnings=0
|
||||||
|
dwReport Exceptions=1
|
||||||
|
[Interface\SessionFiles]
|
||||||
|
dwReselect Target=1
|
||||||
|
dwReload Images=0
|
||||||
|
dwRun Config Script=0
|
||||||
|
Config Script Name=D:\Iris\geometry\geometry.ses
|
||||||
|
[Interface\Toolbars]
|
||||||
|
dwTBFile=1
|
||||||
|
dwTBSearch=1
|
||||||
|
dwTBExecute=1
|
||||||
|
dwTBSystemView=1
|
||||||
|
dwTBProcView=1
|
||||||
|
dwTBHelp=1
|
||||||
|
[Interface\Views]
|
||||||
|
biDefault Fixed Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAAHHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biDefault General Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAACHJGGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
dwTab Size=4
|
||||||
|
dwInterleave=0
|
||||||
|
dwShow Line Numbers=1
|
||||||
|
dwShow Margin=1
|
||||||
|
dwShow Tooltips=1
|
||||||
|
dwInitViewState=0
|
||||||
|
[MainWnd]
|
||||||
|
biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPMBCAAAAAMCAAAAAANNFAAAAAFADAAAAA
|
||||||
|
[Memory]
|
||||||
|
dwActiveTab=0
|
||||||
|
dwApplyToAllTabs=0
|
||||||
|
[Memory\Tab_0]
|
||||||
|
dwStartAddress=58687488
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory\Tab_1]
|
||||||
|
dwStartAddress=58720256
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory\Tab_2]
|
||||||
|
dwStartAddress=41811968
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory\Tab_3]
|
||||||
|
dwStartAddress=67108864
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory1]
|
||||||
|
dwActiveTab=1
|
||||||
|
dwApplyToAllTabs=0
|
||||||
|
[Memory1\Tab_0]
|
||||||
|
dwStartAddress=58687488
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory1\Tab_1]
|
||||||
|
dwStartAddress=58720256
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory1\Tab_2]
|
||||||
|
dwStartAddress=41811968
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory1\Tab_3]
|
||||||
|
dwStartAddress=67108864
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Output]
|
||||||
|
dwActiveTab=0
|
||||||
|
[ProcessorRegisters\ARM7TDMI_1]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=0
|
||||||
|
[ProcessorRegisters\ARM7_1]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[ProcessorRegisters\ARM9_0]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[RecentFileList]
|
||||||
|
dwFileCount=4
|
||||||
|
[RecentImageList]
|
||||||
|
File_1=C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf
|
||||||
|
File_2=D:\IrisSubp\IrisSubpMon\IrisSubpMon_Data\ThumbRelease\IrisSubpMon.axf
|
||||||
|
File_3=D:\Iris\IrisMon\IrisMon_Data\ThumbRelease\IrisMon.axf
|
||||||
|
File_4=D:\Iris\IrisMon\IrisMon_Data\ThumbDebugRel\IrisMon.axf
|
||||||
|
dwFileCount=4
|
||||||
|
[RecentSymbolsList]
|
||||||
|
dwFileCount=4
|
||||||
|
[Target\ARM7TDMI_1]
|
||||||
|
dwMode=1
|
||||||
|
dwCommsChannel=0
|
||||||
|
dwArmSWI=1193046
|
||||||
|
dwThumbSWI=171
|
||||||
|
dwSHVector=8
|
||||||
|
dwDCCSHVector=458752
|
||||||
|
dwECVector=26
|
||||||
|
dwTopOfMemory=524288
|
||||||
|
dwTopOfMemoryExists=1
|
||||||
|
[ToolBars\ToolBarID-Bar0]
|
||||||
|
dwBarID=59419
|
||||||
|
dwBars=12
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=171
|
||||||
|
dwBar#2=173
|
||||||
|
dwBar#3=175
|
||||||
|
dwBar#4=179
|
||||||
|
dwBar#5=177
|
||||||
|
dwBar#6=128
|
||||||
|
dwBar#7=65543
|
||||||
|
dwBar#8=65538
|
||||||
|
dwBar#9=65539
|
||||||
|
dwBar#10=65540
|
||||||
|
dwBar#11=0
|
||||||
|
[ToolBars\ToolBarID-Bar1]
|
||||||
|
dwBarID=59422
|
||||||
|
dwBars=4
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=7
|
||||||
|
dwBar#2=4
|
||||||
|
dwBar#3=0
|
||||||
|
[ToolBars\ToolBarID-Bar2]
|
||||||
|
dwBarID=59420
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=6
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar3]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=895
|
||||||
|
dwYPos=466
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=7
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar4]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=1329
|
||||||
|
dwYPos=167
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=2
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar5]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=517
|
||||||
|
dwYPos=761
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=3
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar6]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=1147
|
||||||
|
dwYPos=723
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=4
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Summary]
|
||||||
|
dwBars=7
|
||||||
|
dwScreenCX=1600
|
||||||
|
dwScreenCY=1200
|
||||||
|
[Variables]
|
||||||
|
dwActiveTab=2
|
||||||
|
[Variables\Tab_0]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[Variables\Tab_1]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[Variables\Tab_2]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[Views]
|
||||||
|
dwLastView=0
|
||||||
|
[Views\View_0]
|
||||||
|
UnitName=ARM7TDMI_1
|
||||||
|
ImageName=C:\twl\twlsdk_bak\build\tests\os\_ARM7-alarm-2\bin\ARM7-TS\Release\main.axf
|
||||||
|
dwDisassembly=0
|
||||||
|
FileName=C:\twl\twlsdk_bak\build\libraries\init\ARM7\crt0.c
|
||||||
|
dwMixedView=0
|
||||||
|
dwShowMargin=1
|
||||||
|
dwShowLineNumbers=1
|
||||||
|
biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAAAAAAAAAAAAAAAADICAAAAAONAAAAAA
|
253
tools/axd/ARM9.ses
Normal file
253
tools/axd/ARM9.ses
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
[CLI]
|
||||||
|
dwParse=1
|
||||||
|
dwEcho=1
|
||||||
|
dwUpdate=1
|
||||||
|
dwHistorySize=16
|
||||||
|
dwInstructionSize=1
|
||||||
|
dwMemBytes=32
|
||||||
|
dwMemSize=0
|
||||||
|
dwStepSize=0
|
||||||
|
Format=hex
|
||||||
|
FormatPar=-1
|
||||||
|
dwLogFile=0
|
||||||
|
dwRecordFile=0
|
||||||
|
[Control]
|
||||||
|
dwActiveTab=0
|
||||||
|
[DebugEnvironment]
|
||||||
|
biDebugEnvironment=EECEFEDDABAAAAAABAAAAAAADEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFEMFNEFHMGEHJGNCJEDEFEOCEGMGMGAANEFHMGEHJGNCJEDEFEAADCGJBAAAAACEJFEFFEDFFEIFNDMEJGEHEHMGFGNAKANEFFMEEFJENCJEDEFEPFDEPEOEOEFEDEEFJEPEOEPFOEBENEFENDNAKANEFFMEEFJENCJEDEFEPFDFFECFGFFECFPFMEPEDEBEEFJEPEOENDMGPGDGBGMGIGPGDHEHNAKANEFFMEEFJENCJEDEFEPFEEMEMEPFDFFEEFEFJEOEHEDFNDADNAKAEFBECFHEFEEFPFEEJECFNDDEKDMFAFCHPGHGCHBGNGACGEJGMGFGDHMFBECFNEMFNEFHMGEHJGNCJEDEFENAKANEFFMEEFJENCJEDEFEPFIEBEOEEEMEFECFCEBEDFFEBEEEEECFNDGEGEADADADADADADNAKANEFFMEEFJENCJEDEFEPFDEMEFEBEOEDEPEEEFEBEEEEECFNDADADADADADADFDADNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEMEJEDFEFJEEFFENEADNDNAKAEFCFBEDEFEEEMEMEPFEFCFBEDEFEDEPEOEEFCFPEMEOEBENEFENDNAKADEPEOEEFCFPEMEMEFECFPFCFEEJEGFFECFDFJEPEOENDBDFDBDNAKANEFFMEEFJENCJEDEFEPFIFDFIEPEEFAFMEFFHEHEJEOEHEFEOEBECEMEFEEENDEFCFFFFENAKANEFFMEEFJENCJEDEFEPFEECFJEGFFECFADPFOEBENEFENDBECFNEJDEDGDFENCDFNAKANEFFMEEFJENCJEDEFEPFEFBEAFADPFAFPEDFJEEFJEPEOENDADNAKADCDC
|
||||||
|
[DebugInternals]
|
||||||
|
dwActiveTab=0
|
||||||
|
[DebugInternals\InternalVariables]
|
||||||
|
dwRefresh=1
|
||||||
|
[Docking]
|
||||||
|
biBarID_0=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAHLBAAAAAOPPPPPPPMEAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_4=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_65539=LCCAAAAAKJBAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOHCAAAAAPFCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_1114115=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_65538=BEBAAAAAIGBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAAJDAAAAAAGKBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_1=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPCHBAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_65540=JCBAAAAAEKBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAMGAAAAAALEDAAAAADHBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_7=MFBAAAAAIKAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAADFDAAAAAEGCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biBarID_6=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAAOPPPPPPPMBAAAAAAAAAAAAAAAAPBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
[Docking\OpenStates]
|
||||||
|
biBarID_0=BAAAAAAA
|
||||||
|
biBarID_4=BAAAAAAA
|
||||||
|
biBarID_6=BAAAAAAA
|
||||||
|
biBarID_7=BAAAAAAA
|
||||||
|
biBarID_65538=BAAAAAAA
|
||||||
|
biBarID_65539=BAAAAAAA
|
||||||
|
biBarID_65540=BAAAAAAA
|
||||||
|
[Images\Image_0]
|
||||||
|
Filename=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf
|
||||||
|
Processor=ARM946E_S_0
|
||||||
|
dwProfileState=0
|
||||||
|
[Interface\AutoRefresh]
|
||||||
|
dwEnabled=0
|
||||||
|
dwInterval=100
|
||||||
|
dwTerminateOnSuspend=0
|
||||||
|
[Interface\Formatting]
|
||||||
|
dwDecIsUser=0
|
||||||
|
DecFormat=%d
|
||||||
|
dwHexIsUser=0
|
||||||
|
HexFormat=%0X
|
||||||
|
dwFloatIsUser=0
|
||||||
|
FloatFormat=%.7g
|
||||||
|
dwDbleIsUser=0
|
||||||
|
DbleFormat=%.10g
|
||||||
|
dwQ15IsUser=0
|
||||||
|
Q15Format=%.6g
|
||||||
|
dwQ31IsUser=0
|
||||||
|
Q31Format=%.12g
|
||||||
|
dwArrayThreshold=16
|
||||||
|
[Interface\General]
|
||||||
|
dwTarget Connection=1
|
||||||
|
dwReport All Warnings=0
|
||||||
|
dwReport Exceptions=1
|
||||||
|
[Interface\SessionFiles]
|
||||||
|
dwReselect Target=1
|
||||||
|
dwReload Images=0
|
||||||
|
dwRun Config Script=0
|
||||||
|
Config Script Name=C:\Iris\geometry\geometry.ses
|
||||||
|
[Interface\Toolbars]
|
||||||
|
dwTBFile=1
|
||||||
|
dwTBSearch=1
|
||||||
|
dwTBExecute=1
|
||||||
|
dwTBSystemView=1
|
||||||
|
dwTBProcView=1
|
||||||
|
dwTBHelp=1
|
||||||
|
[Interface\Views]
|
||||||
|
biDefault Fixed Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAAHHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
biDefault General Font=EPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAADACABABBCIMGCICHACGJOLCJJKAACHJGGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
dwTab Size=4
|
||||||
|
dwInterleave=0
|
||||||
|
dwShow Line Numbers=1
|
||||||
|
dwShow Margin=1
|
||||||
|
dwShow Tooltips=1
|
||||||
|
dwInitViewState=0
|
||||||
|
[MainWnd]
|
||||||
|
biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPEJAAAAAANKAAAAAAEFEAAAAAGIDAAAAA
|
||||||
|
[Memory]
|
||||||
|
dwActiveTab=1
|
||||||
|
dwApplyToAllTabs=0
|
||||||
|
[Memory\Tab_0]
|
||||||
|
dwStartAddress=33570560
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory\Tab_1]
|
||||||
|
dwStartAddress=41940992
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory\Tab_2]
|
||||||
|
dwStartAddress=41942016
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Memory\Tab_3]
|
||||||
|
dwStartAddress=67108864
|
||||||
|
Format=hex_noprefix_32
|
||||||
|
dwFormatID=-1
|
||||||
|
dwListBigEndian=0
|
||||||
|
dwDisplayOffset=0
|
||||||
|
dwPageSize=1024
|
||||||
|
dwListSize=4
|
||||||
|
dwTargetAccessSize=0
|
||||||
|
dwAutoRefresh=1
|
||||||
|
[Output]
|
||||||
|
dwActiveTab=0
|
||||||
|
[ProcessorRegisters\ARM946E_S_0]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=0
|
||||||
|
[ProcessorRegisters\ARM9_0]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[RecentFileList]
|
||||||
|
dwFileCount=4
|
||||||
|
[RecentImageList]
|
||||||
|
File_1=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf
|
||||||
|
File_2=C:\Iris\IrisMon\IrisMon_Data\ThumbRelease\IrisMon.axf
|
||||||
|
File_3=C:\Iris\ipl2_test\ipl2_test_Data\ThumbDebugRel\ipl2_test.axf
|
||||||
|
File_4=C:\Iris\two_quads\two_quads_Data\ThumbDebugRel\two_quads.axf
|
||||||
|
dwFileCount=4
|
||||||
|
[RecentSymbolsList]
|
||||||
|
File_1=C:\IrisSubp\IrisSubpMon\IrisSubpMon_Data\ThumbRelease\IrisSubpMon.axf
|
||||||
|
dwFileCount=4
|
||||||
|
[Target\ARM946E_S_0]
|
||||||
|
dwMode=1
|
||||||
|
dwCommsChannel=0
|
||||||
|
dwArmSWI=1193046
|
||||||
|
dwThumbSWI=171
|
||||||
|
dwSHVector=-65528
|
||||||
|
dwDCCSHVector=458752
|
||||||
|
dwECVector=27
|
||||||
|
dwTopOfMemory=524288
|
||||||
|
dwTopOfMemoryExists=1
|
||||||
|
[ToolBars\ToolBarID-Bar0]
|
||||||
|
dwBarID=59419
|
||||||
|
dwBars=12
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=171
|
||||||
|
dwBar#2=173
|
||||||
|
dwBar#3=175
|
||||||
|
dwBar#4=179
|
||||||
|
dwBar#5=177
|
||||||
|
dwBar#6=128
|
||||||
|
dwBar#7=65543
|
||||||
|
dwBar#8=65538
|
||||||
|
dwBar#9=65539
|
||||||
|
dwBar#10=65540
|
||||||
|
dwBar#11=0
|
||||||
|
[ToolBars\ToolBarID-Bar1]
|
||||||
|
dwBarID=59422
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=4
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar2]
|
||||||
|
dwBarID=59420
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=6
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar3]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=855
|
||||||
|
dwYPos=632
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=7
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar4]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=61
|
||||||
|
dwYPos=442
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=2
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar5]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=642
|
||||||
|
dwYPos=627
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=3
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Bar6]
|
||||||
|
dwBarID=59423
|
||||||
|
dwHorz=1
|
||||||
|
dwFloating=1
|
||||||
|
dwXPos=847
|
||||||
|
dwYPos=391
|
||||||
|
dwBars=3
|
||||||
|
dwBar#0=0
|
||||||
|
dwBar#1=4
|
||||||
|
dwBar#2=0
|
||||||
|
[ToolBars\ToolBarID-Summary]
|
||||||
|
dwBars=7
|
||||||
|
dwScreenCX=1600
|
||||||
|
dwScreenCY=1200
|
||||||
|
[Variables]
|
||||||
|
dwActiveTab=1
|
||||||
|
[Variables\Tab_0]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[Variables\Tab_1]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[Variables\Tab_2]
|
||||||
|
dwFormatID=-1
|
||||||
|
dwRefresh=1
|
||||||
|
[Views]
|
||||||
|
dwLastView=0
|
||||||
|
[Views\View_0]
|
||||||
|
UnitName=ARM946E_S_0
|
||||||
|
ImageName=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf
|
||||||
|
dwDisassembly=0
|
||||||
|
FileName=C:\twl\twlsdk_bak\build\libraries\init\ARM9\crt0.c
|
||||||
|
dwMixedView=0
|
||||||
|
dwShowMargin=1
|
||||||
|
dwShowLineNumbers=1
|
||||||
|
biWndPlacement=MCAAAAAAAAAAAAAABAAAAAAAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAAAAAAAAAAAAAAAAGFCAAAAAJEBAAAAA
|
9
tools/axd/readme.txt
Normal file
9
tools/axd/readme.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
デスクトップへ AXD-Debugger のショートカットを作成し、
|
||||||
|
「リンク先」に下記のように設定すると便利です。
|
||||||
|
|
||||||
|
ARM9側:
|
||||||
|
|
||||||
|
%ARMBIN_AXD% -nologo -session %TWLSDK_ROOT%/tools/axd/ARM9.ses -debug %TWLSDK_ROOT%/(起動時にロードするaxfファイル)
|
||||||
|
|
||||||
|
ARM7側は -session へ "ARM7.ses" を指定します。
|
||||||
|
-debug の代わりに -exec を使用すると起動直後に実行されます。
|
136
tools/partner_mlt/core0/JETCTR.CFG
Normal file
136
tools/partner_mlt/core0/JETCTR.CFG
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
; ホストインタフェース
|
||||||
|
; ホストパソコンとPARTNER-CTRを接続するインタフェースの種類やアドレスを設定します。
|
||||||
|
; インタフェースの種類はUSB接続かNetwork接続が選択できます。Model10/20はUSB接続のみ。
|
||||||
|
; Ex. USB接続の場合(単体)
|
||||||
|
; PORT ADDRESS USB
|
||||||
|
; Ex. USB接続の場合(複数台のPARTNER-CTRが同一のPCに接続されている場合)
|
||||||
|
; PORT ADDRESS USB:本体シリアルナンバー
|
||||||
|
; 本体底面記載のシリアルナンバーを記述することで機器の選択ができます。
|
||||||
|
; Ex. Network接続の場合
|
||||||
|
; PORT ADDRESS NET:xxx.xxx.xxx.xxx
|
||||||
|
; NET: に続けて xxx部分にIPアドレスを記述します。
|
||||||
|
;
|
||||||
|
;PORT ADDRESS USB
|
||||||
|
;PORT ADDRESS USB:F0100010
|
||||||
|
;PORT ADDRESS NET:192.168.1.11
|
||||||
|
PORT ADDRESS USB
|
||||||
|
|
||||||
|
|
||||||
|
; J_FRQ
|
||||||
|
; JTAGクロック周波数を設定します。通常はAUTOを設定してください。
|
||||||
|
; 周波数のほかに、オプションでTDO信号のサンプルタイミングの指定もできます。
|
||||||
|
; Ex. 自動設定の場合
|
||||||
|
; J_FRQ AUTO
|
||||||
|
; Ex. アダプティブモードの場合
|
||||||
|
; RTCK信号が配線されている必要があります。JTAGクロック周波数はターゲット
|
||||||
|
; の状態に応じて自動追従します。
|
||||||
|
; J_FRQ ADPT ... 通常設定
|
||||||
|
; J_FRQ ADPTX ... SleepなどでRTCKが停止する場合
|
||||||
|
; Ex.マニュアル設定
|
||||||
|
; J_FRQ 16 ... 16MHz
|
||||||
|
; J_FRQ 200K,2 ... 200KHz , TDOサンプルモード2(立ち上がりエッジ)
|
||||||
|
; J_FRQ 50,1 ... 50MHz , TDOサンプルモード1(遅延)
|
||||||
|
; J_FRQ 6.6,0 ... 6.6MHz , TDOサンプルモード0(立下りエッジ)
|
||||||
|
; CTRでは、通常 ADPTX を設定してください
|
||||||
|
;J_FRQ AUTO
|
||||||
|
;J_FRQ ADPT
|
||||||
|
;J_FRQ 16,1
|
||||||
|
;J_FRQ 8
|
||||||
|
;J_FRQ 1
|
||||||
|
;J_FRQ 200K
|
||||||
|
;J_FRQ ADPTX
|
||||||
|
J_FRQ ADPTX
|
||||||
|
|
||||||
|
|
||||||
|
; J_VCC
|
||||||
|
; JTAG信号の電圧を指定します。1.8V/2.5V/3V/3.3V/5Vのいずれかを設定します。
|
||||||
|
; ターゲットCPUのJTAG端子のI/O電源電圧を設定してください。
|
||||||
|
; CTRのMG20(メインプロセッサ)では1.8Vを設定
|
||||||
|
; CTRのIOP(IOプロセッサ)では3.3Vを設定
|
||||||
|
; Ex.
|
||||||
|
; J_VCC 5
|
||||||
|
; J_VCC 3.3
|
||||||
|
; J_VCC 3.0
|
||||||
|
; J_VCC 2.5
|
||||||
|
; J_VCC 1.8
|
||||||
|
;J_VCC 3.3
|
||||||
|
;J_VCC 1.8
|
||||||
|
J_VCC 3.3
|
||||||
|
|
||||||
|
|
||||||
|
; CPU名の指定
|
||||||
|
; CTR MG20は 11MPC,0 を設定
|
||||||
|
; CTR IOPは 946T,1 を設定
|
||||||
|
;CPU CORE 946T,1
|
||||||
|
;CPU CORE 11MPC,0
|
||||||
|
;CPU CORE 70T,0
|
||||||
|
CPU CORE 946T,1
|
||||||
|
|
||||||
|
|
||||||
|
; JTAG chain config
|
||||||
|
; JTAG カスケード接続情報の設定
|
||||||
|
; J_CONFIG チップ数,チップ位置(TDO側=0),IR_lenビット数(TDO側),IR_lenビット数(TDI側)
|
||||||
|
; 単独で接続されている場合(通常)は、設定しません。
|
||||||
|
; CTRでJTAGカスケード接続の場合は以下のように設定します
|
||||||
|
; ex. J_CONFIG 2,0,0,5 -- カスケード IOP
|
||||||
|
; ex. J_CONFIG 2,1,4,0 -- カスケード MG20
|
||||||
|
;J_CONFIG 2,0,0,5
|
||||||
|
;J_CONFIG 2,1,4,0
|
||||||
|
;J_CONFIG 2,1,4,0 -- カスケード MG20
|
||||||
|
;J_CONFIG 2,1,4,4
|
||||||
|
;J_CONFIG 2,0,4,4
|
||||||
|
;J_CONFIG 2,0,0,4
|
||||||
|
J_CONFIG 2,1,4,0
|
||||||
|
|
||||||
|
|
||||||
|
; CARD_ID
|
||||||
|
; CARD ROM のIDを設定します。カードのタイプやROM容量の設定です。
|
||||||
|
; NTR TYPE1 64Mbit : 0x000007c2
|
||||||
|
; NTR TYPE1 128Mbit : 0x00000fc2
|
||||||
|
; NTR TYPE1 256Mbit : 0x00001fc2
|
||||||
|
; NTR TYPE1 512Mbit : 0x00003fc2
|
||||||
|
; NTR TYPE1 1Gbit : 0x00007fc2
|
||||||
|
; NTR TYPE1 2Gbit : 0x0000ffc2
|
||||||
|
; NTR TYPE1 4Gbit : 0x0000fec2
|
||||||
|
; NTR TYPE2 64Mbit : 0x800007c2
|
||||||
|
; NTR TYPE2 128Mbit : 0x80000fc2
|
||||||
|
; NTR TYPE2 256Mbit : 0x80001fc2
|
||||||
|
; NTR TYPE2 512Mbit : 0x80003fc2
|
||||||
|
; NTR TYPE2 1Gbit : 0x80007fc2
|
||||||
|
; NTR TYPE2 2Gbit : 0x8000ffc2
|
||||||
|
; NTR TYPE2 4Gbit : 0x8000fec2
|
||||||
|
;CTR_CARD_ID 0x0000ffc2
|
||||||
|
;CTR_CARD_ID 0x0000fec2
|
||||||
|
CTR_CARD_ID 0x0000ffc2
|
||||||
|
|
||||||
|
|
||||||
|
; CTR RST BOOT mode
|
||||||
|
; デバッガ起動時と初期化時に、JTAGポートが使用可能になるまでの待ち時間設定
|
||||||
|
; ex. CTR_RST_MODE WAIT ... ダイアログメッセージを出して wait
|
||||||
|
; ex. CTR_RST_MODE NO_SRST ... 初期化時にリセットを行わない
|
||||||
|
; ex. CTR_RST_MODE 1 ... 1秒の待ち時間設定
|
||||||
|
; 通常は 1 を設定
|
||||||
|
;CTR_RST_MODE WAIT
|
||||||
|
;CTR_RST_MODE NO_SRST
|
||||||
|
;CTR_RST_MODE 1
|
||||||
|
;CTR_RST_MODE 0
|
||||||
|
CTR_RST_MODE NO_SRST
|
||||||
|
|
||||||
|
|
||||||
|
; バーチャルリンク(VLINK)の指定です。
|
||||||
|
; VLINK OFF .. バーチャルリンクを使用しません
|
||||||
|
; VLINK CPU .. JTAGでバーチャルリンクを使用します
|
||||||
|
;VLINK CPU
|
||||||
|
;VLINK OFF
|
||||||
|
VLINK CPU
|
||||||
|
|
||||||
|
|
||||||
|
; PARTNERのコマンドでアクセス可能なメモリ領域(最大20領域)
|
||||||
|
; MAP 開始アドレス,終了アドレス
|
||||||
|
; PARTNERのコマンドでアクセス可能な範囲を開始アドレスと終了アドレスで指定します。
|
||||||
|
;
|
||||||
|
; EX. MAP 10000000,1000FFFF
|
||||||
|
; MAP FFF00000,FFFFFFFF
|
||||||
|
MAP 00000000,ffffffff
|
||||||
|
|
||||||
|
|
3370
tools/partner_mlt/core0/JETCTR.JPX
Normal file
3370
tools/partner_mlt/core0/JETCTR.JPX
Normal file
File diff suppressed because it is too large
Load Diff
142
tools/partner_mlt/core1/JETCTR.CFG
Normal file
142
tools/partner_mlt/core1/JETCTR.CFG
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
; ホストインタフェース
|
||||||
|
; ホストパソコンとPARTNER-CTRを接続するインタフェースの種類やアドレスを設定します。
|
||||||
|
; インタフェースの種類はUSB接続かNetwork接続が選択できます。Model10/20はUSB接続のみ。
|
||||||
|
; Ex. USB接続の場合(単体)
|
||||||
|
; PORT ADDRESS USB
|
||||||
|
; Ex. USB接続の場合(複数台のPARTNER-CTRが同一のPCに接続されている場合)
|
||||||
|
; PORT ADDRESS USB:本体シリアルナンバー
|
||||||
|
; 本体底面記載のシリアルナンバーを記述することで機器の選択ができます。
|
||||||
|
; Ex. Network接続の場合
|
||||||
|
; PORT ADDRESS NET:xxx.xxx.xxx.xxx
|
||||||
|
; NET: に続けて xxx部分にIPアドレスを記述します。
|
||||||
|
;
|
||||||
|
;PORT ADDRESS USB
|
||||||
|
;PORT ADDRESS USB:F0100010
|
||||||
|
;PORT ADDRESS NET:192.168.1.11
|
||||||
|
PORT ADDRESS USB
|
||||||
|
|
||||||
|
|
||||||
|
; J_FRQ
|
||||||
|
; JTAGクロック周波数を設定します。通常はAUTOを設定してください。
|
||||||
|
; 周波数のほかに、オプションでTDO信号のサンプルタイミングの指定もできます。
|
||||||
|
; Ex. 自動設定の場合
|
||||||
|
; J_FRQ AUTO
|
||||||
|
; Ex. アダプティブモードの場合
|
||||||
|
; RTCK信号が配線されている必要があります。JTAGクロック周波数はターゲット
|
||||||
|
; の状態に応じて自動追従します。
|
||||||
|
; J_FRQ ADPT ... 通常設定
|
||||||
|
; J_FRQ ADPTX ... SleepなどでRTCKが停止する場合
|
||||||
|
; Ex.マニュアル設定
|
||||||
|
; J_FRQ 16 ... 16MHz
|
||||||
|
; J_FRQ 200K,2 ... 200KHz , TDOサンプルモード2(立ち上がりエッジ)
|
||||||
|
; J_FRQ 50,1 ... 50MHz , TDOサンプルモード1(遅延)
|
||||||
|
; J_FRQ 6.6,0 ... 6.6MHz , TDOサンプルモード0(立下りエッジ)
|
||||||
|
; CTRでは、通常 ADPTX を設定してください
|
||||||
|
;J_FRQ AUTO
|
||||||
|
;J_FRQ ADPT
|
||||||
|
;J_FRQ 16,1
|
||||||
|
;J_FRQ 8
|
||||||
|
;J_FRQ 1
|
||||||
|
;J_FRQ 200K
|
||||||
|
;J_FRQ ADPTX
|
||||||
|
J_FRQ ADPTX
|
||||||
|
|
||||||
|
|
||||||
|
; J_VCC
|
||||||
|
; JTAG信号の電圧を指定します。1.8V/2.5V/3V/3.3V/5Vのいずれかを設定します。
|
||||||
|
; ターゲットCPUのJTAG端子のI/O電源電圧を設定してください。
|
||||||
|
; CTRのMG20(メインプロセッサ)では1.8Vを設定
|
||||||
|
; CTRのIOP(IOプロセッサ)では3.3Vを設定
|
||||||
|
; Ex.
|
||||||
|
; J_VCC 5
|
||||||
|
; J_VCC 3.3
|
||||||
|
; J_VCC 3.0
|
||||||
|
; J_VCC 2.5
|
||||||
|
; J_VCC 1.8
|
||||||
|
;J_VCC 3.3
|
||||||
|
;J_VCC 1.8
|
||||||
|
J_VCC 3.3
|
||||||
|
|
||||||
|
|
||||||
|
; CPU名の指定
|
||||||
|
; CTR MG20は 11MPC,0 を設定
|
||||||
|
; CTR IOPは 946T,1 を設定
|
||||||
|
;CPU CORE 946T,1
|
||||||
|
;CPU CORE 11MPC,0
|
||||||
|
;CPU CORE 70T,0
|
||||||
|
CPU CORE 70T,0
|
||||||
|
|
||||||
|
|
||||||
|
; JTAG chain config
|
||||||
|
; JTAG カスケード接続情報の設定
|
||||||
|
; J_CONFIG チップ数,チップ位置(TDO側=0),IR_lenビット数(TDO側),IR_lenビット数(TDI側)
|
||||||
|
; 単独で接続されている場合(通常)は、設定しません。
|
||||||
|
; CTRでJTAGカスケード接続の場合は以下のように設定します
|
||||||
|
; ex. J_CONFIG 2,0,0,5 -- カスケード IOP
|
||||||
|
; ex. J_CONFIG 2,1,4,0 -- カスケード MG20
|
||||||
|
;J_CONFIG 2,0,0,5
|
||||||
|
;J_CONFIG 2,1,4,0
|
||||||
|
;J_CONFIG 2,0,4,4
|
||||||
|
J_CONFIG 2,0,4,4
|
||||||
|
|
||||||
|
|
||||||
|
; CARD_ID
|
||||||
|
; CARD ROM のIDを設定します。カードのタイプやROM容量の設定です。
|
||||||
|
; NTR TYPE1 64Mbit : 0x000007c2
|
||||||
|
; NTR TYPE1 128Mbit : 0x00000fc2
|
||||||
|
; NTR TYPE1 256Mbit : 0x00001fc2
|
||||||
|
; NTR TYPE1 512Mbit : 0x00003fc2
|
||||||
|
; NTR TYPE1 1Gbit : 0x00007fc2
|
||||||
|
; NTR TYPE1 2Gbit : 0x0000ffc2
|
||||||
|
; NTR TYPE1 4Gbit : 0x0000fec2
|
||||||
|
; NTR TYPE2 64Mbit : 0x800007c2
|
||||||
|
; NTR TYPE2 128Mbit : 0x80000fc2
|
||||||
|
; NTR TYPE2 256Mbit : 0x80001fc2
|
||||||
|
; NTR TYPE2 512Mbit : 0x80003fc2
|
||||||
|
; NTR TYPE2 1Gbit : 0x80007fc2
|
||||||
|
; NTR TYPE2 2Gbit : 0x8000ffc2
|
||||||
|
; NTR TYPE2 4Gbit : 0x8000fec2
|
||||||
|
;CTR_CARD_ID 0x0000ffc2
|
||||||
|
;CTR_CARD_ID 0x0000fec2
|
||||||
|
CTR_CARD_ID 0x0000ffc2
|
||||||
|
|
||||||
|
|
||||||
|
; CTR RST BOOT mode
|
||||||
|
; デバッガ起動時と初期化時に、JTAGポートが使用可能になるまでの待ち時間設定
|
||||||
|
; ex. CTR_RST_MODE WAIT ... ダイアログメッセージを出して wait
|
||||||
|
; ex. CTR_RST_MODE NO_SRST ... 初期化時にリセットを行わない
|
||||||
|
; ex. CTR_RST_MODE 1 ... 1秒の待ち時間設定
|
||||||
|
; 通常は 1 を設定
|
||||||
|
;CTR_RST_MODE WAIT
|
||||||
|
;CTR_RST_MODE NO_SRST
|
||||||
|
;CTR_RST_MODE 1
|
||||||
|
;CTR_RST_MODE 0
|
||||||
|
CTR_RST_MODE NO_SRST
|
||||||
|
|
||||||
|
|
||||||
|
; バーチャルリンク(VLINK)の指定です。
|
||||||
|
; VLINK OFF .. バーチャルリンクを使用しません
|
||||||
|
; VLINK CPU .. JTAGでバーチャルリンクを使用します
|
||||||
|
;VLINK CPU
|
||||||
|
;VLINK OFF
|
||||||
|
VLINK CPU
|
||||||
|
|
||||||
|
|
||||||
|
; JTAG chain config
|
||||||
|
; JTAG カスケード接続情報の設定
|
||||||
|
; J_CONFIG チップ数,チップ位置(TDO側=0),IR_lenビット数(TDO側),IR_lenビット数(TDI側)
|
||||||
|
; 単独で接続されている場合(通常)は、設定しません。
|
||||||
|
;J_CONFIG 3,1,6,8
|
||||||
|
;J_CONFIG 2,1,4,0
|
||||||
|
J_CONFIG 2,0,4,4
|
||||||
|
|
||||||
|
|
||||||
|
; PARTNERのコマンドでアクセス可能なメモリ領域(最大20領域)
|
||||||
|
; MAP 開始アドレス,終了アドレス
|
||||||
|
; PARTNERのコマンドでアクセス可能な範囲を開始アドレスと終了アドレスで指定します。
|
||||||
|
;
|
||||||
|
; EX. MAP 10000000,1000FFFF
|
||||||
|
; MAP FFF00000,FFFFFFFF
|
||||||
|
MAP 00000000,ffffffff
|
||||||
|
|
||||||
|
|
3397
tools/partner_mlt/core1/JETCTR.JPX
Normal file
3397
tools/partner_mlt/core1/JETCTR.JPX
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user