VFPデモ追加。i_osSaveContextVFP修正。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@158 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
nakasima 2009-01-07 01:26:31 +00:00
parent 6722703730
commit 0485b1ff1e
9 changed files with 337 additions and 6 deletions

View File

@ -22,6 +22,7 @@ include $(CTRBROM_ROOT)/build/buildtools/commondefs
SUBDIRS = \
jtag-only \
vfp \
thread \
teg-dev \
ctr_bootrom \

View File

@ -0,0 +1,48 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - bootrom - vfp
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: $
# $Rev$
# $Author$
#----------------------------------------------------------------------------
BROM_DEF_LINK_SCATLD = TRUE
SUBDIRS =
#----------------------------------------------------------------------------
TARGET_BIN = vfp11.padbin
SRCS = \
main.c \
#SRCDIR = # using default
#LCFILE = # using default
include $(CTRBROM_ROOT)/build/buildtools/commondefs
INSTALL_DIR = ..
INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN_BASENAME).axf
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(CTRBROM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,66 @@
/*---------------------------------------------------------------------------*
Project: TwlBrom - vfp
File: main.c
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: $
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#include <brom.h>
#define THREAD1_PRIO 10
#define STACK_SIZE 1024
OSThread thread1;
u64 stack1[STACK_SIZE / sizeof(u64)];
void proc1(void *arg);
float f0 = 1;
float f1 = 1;
void BromMain( void )
{
s32 n;
osInitException();
osInitBROM();
osPrintf( "ARM11: start\n" );
osInitThread();
osCreateThread( &thread1, proc1, (void *)0x111, stack1 + STACK_SIZE / sizeof(u64), STACK_SIZE, THREAD1_PRIO );
for (n = 0; n < 5; n++)
{
osPrintf( "BromMain\n" );
osWakeupThreadDirect( &thread1 );
}
}
//--------------------------------------------------------------------------------
// proc1
//
void proc1(void *arg)
{
#ifdef SDK_FINALROM
#pragma unused( arg )
#endif
while (1)
{
osPrintf( "Thread1: (%x)\n", (u32)arg );
// 1回目のみVFP例外発生
f0+=f1;
// osVSNPrintf は %f 非サポート
osPrintf( "Thread1: %f\n", f0 );
osSleepThread( NULL );
}
}

View File

@ -0,0 +1,50 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - bootrom - vfp
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: $
# $Rev$
# $Author$
#----------------------------------------------------------------------------
#BROM_DEF_LINK_SCATLD = TRUE
BROM_PROC = ARM9
SUBDIRS =
#----------------------------------------------------------------------------
TARGET_BIN = vfp9.padbin
SRCS = \
main.c \
#SRCDIR = # using default
#LCFILE = # using default
include $(CTRBROM_ROOT)/build/buildtools/commondefs
INSTALL_DIR = ..
INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN_BASENAME).axf
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(CTRBROM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,24 @@
/*---------------------------------------------------------------------------*
Project: TwlBrom - vfp
File: main.c
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: $
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#include <brom.h>
void BromSpMain( void )
{
osInitException();
osInitBROM();
}

View File

@ -0,0 +1,34 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - build
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: $
# $Rev$
# $Author$
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
ARM11 \
ARM9 \
rom \
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,62 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - bootrom - vfp
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: $
# $Rev$
# $Author$
#----------------------------------------------------------------------------
BROM_PROMGEN = TRUE
SUBDIRS =
LINCLUDES = ../include
#----------------------------------------------------------------------------
TARGET_BIN = twl_bootrom.exo
CRT0_O =
SRCS = \
crt0.c \
#SRCDIR = # using default
#LCFILE = # using default
BROM_PADBIN_ARM11 = ../ARM11/bin/$(BROM_BUILDTYPE_ARM11)/vfp11.padbin
BROM_PADBIN_ARM9 = ../ARM9/bin/$(BROM_BUILDTYPE_ARM9)/vfp9.padbin
BROM_DEPENDS = $(BROM_PADBIN_ARM11) $(BROM_PADBIN_ARM9)
MACRO_FLAGS += -DBROM_PADBIN_ARM11=$(BROM_PADBIN_ARM11) \
-DBROM_PADBIN_ARM9=$(BROM_PADBIN_ARM9) \
include $(CTRBROM_ROOT)/build/buildtools/commondefs
INSTALL_TARGETS = $(TARGETS)
INSTALL_DIR = $(BROM_INSTALL_PROMDIR)
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(CTRBROM_ROOT)/build/buildtools/modulerules
crt0.c : $(BROM_DEPENDS)
touch crt0.c
#===== End of Makefile =====

View File

@ -0,0 +1,41 @@
/*---------------------------------------------------------------------------*
Project: CtrBrom - bootrom - init
File: crt0.c
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: $
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#include <brom/code32.h>
#include <brom/types.h>
#include <brom/hw/common/mmap_prom.h>
/*---------------------------------------------------------------------------*
Name: _start
Description: Start up
Arguments: None
Returns: None.
*---------------------------------------------------------------------------*/
asm void _start( void )
{
PRESERVE8
EXPORT CTR_BROM_ARM11
EXPORT CTR_BROM_ARM9
CTR_BROM_ARM11
INCBIN BROM_PADBIN_ARM11
CTR_BROM_ARM9
INCBIN BROM_PADBIN_ARM9
}

View File

@ -76,6 +76,11 @@ asm void osInitContext(
str r1, [ context, #OS_CONTEXT_R12 ]
str r1, [ context, #OS_CONTEXT_LR ]
// ---- VFPレジスタを初期化
#ifdef SDK_CONTEXT_HAS_VFP
str r1, [ context, #__cpp(offsetof(OSContext,fpexc)) ]
#endif
bx lr // start here and swicth arm/thumb mode
#undef context
@ -105,7 +110,7 @@ asm BOOL i_osSaveContextVFP( OSContext* context )
tst r2, #HW_FPEXC_VFP_ENABLE
fmrxne r2, fpscr // VFPコントロールレジスタ保存VFPイネーブル時
stmiane r1!, {r2}
fstmfdsne r1!, {f0-f31} // VFPレジスタの保存VFPイネーブル時
fstmiasne r1!, {f0-f31} // VFPレジスタの保存VFPイネーブル時
bx lr
}
#endif // SDK_CONTEXT_HAS_VFP
@ -124,9 +129,9 @@ asm BOOL i_osSaveContextVFP( OSContext* context )
asm BOOL osSaveContext( OSContext* context )
{
#ifdef SDK_CONTEXT_HAS_VFP
stmfd sp!, { lr, r0 }
stmfd sp!, { r0, lr }
bl i_osSaveContextVFP
ldmfd sp!, { lr, r0 }
ldmfd sp!, { r0, lr }
#endif
add r1, r0, #OS_CONTEXT_CPSR
@ -176,7 +181,7 @@ asm void i_osLoadContextVFP( OSContext* context )
ldmia r1!, {r2}
fmxr fpexc, r2
tst r2, #HW_FPEXC_VFP_ENABLE
fldmfdsne r1!, {f0-f31}
fldmiasne r1!, {f0-f31}
bx lr
}
#endif // SDK_CONTEXT_HAS_VFP
@ -194,9 +199,9 @@ asm void i_osLoadContextVFP( OSContext* context )
asm void osLoadContext( OSContext* context )
{
#ifdef SDK_CONTEXT_HAS_VFP
stmfd sp!, { lr, r0 }
stmfd sp!, { r0, lr }
bl i_osLoadContextVFP
ldmfd sp!, { lr, r0 }
ldmfd sp!, { r0, lr }
#endif
//---- モードを svc に