ctr_firmware/trunk/bootrom/include/brom/os/common/context.h
nakasima 7404c14df9 スレッドライブラリ暫定版を追加。しかしデフォルトはディセーブルに。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@95 b871894f-2f95-9b40-918c-086798483c85
2008-12-09 12:03:57 +00:00

96 lines
2.5 KiB
C

/*---------------------------------------------------------------------------*
Project: CtrBrom - OS - include
File: context.h
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$
*---------------------------------------------------------------------------*/
#ifndef BROM_OS_CONTEXT_H_
#define BROM_OS_CONTEXT_H_
#include <brom/os/common/system.h>
#ifdef SDK_ARM11
//#include <brom/cp/context.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
//----------------------------------------------------------------------------
#define SDK_CONTEXT_HAS_SP_SVC
//----------------------------------------------------------------------------
#define OS_CONTEXT_CPSR 0
#define OS_CONTEXT_R0 4
#define OS_CONTEXT_R1 8
#define OS_CONTEXT_R2 12
#define OS_CONTEXT_R3 16
#define OS_CONTEXT_R4 20
#define OS_CONTEXT_R5 24
#define OS_CONTEXT_R6 28
#define OS_CONTEXT_R7 32
#define OS_CONTEXT_R8 36
#define OS_CONTEXT_R9 40
#define OS_CONTEXT_R10 44
#define OS_CONTEXT_R11 48
#define OS_CONTEXT_R12 52
#define OS_CONTEXT_R13 56
#define OS_CONTEXT_R14 60
#define OS_CONTEXT_PC_PLUS4 64 // Should be set to PC+4 for interrupt handling
#define OS_CONTEXT_SP OS_CONTEXT_R13
#define OS_CONTEXT_LR OS_CONTEXT_R14
#ifdef SDK_CONTEXT_HAS_SP_SVC
#define OS_CONTEXT_R13_SVC 68
#define OS_CONTEXT_SP_SVC OS_CONTEXT_R13_SVC
#endif
#ifdef SDK_ARM9
#ifdef SDK_CONTEXT_HAS_SP_SVC
#define OS_CONTEXT_CP_CONTEXT 72
#else
#define OS_CONTEXT_CP_CONTEXT 68
#endif
#endif
typedef struct OSContext
{
u32 cpsr;
u32 r[13];
u32 sp;
u32 lr;
u32 pc_plus4;
#ifdef SDK_CONTEXT_HAS_SP_SVC
u32 sp_svc;
#endif
}
OSContext;
//----------------------------------------------------------------------------
void osInitContext(OSContext *context, u32 newpc, u32 newsp);
BOOL osSaveContext(OSContext *context);
void osLoadContext(OSContext *context);
void osDumpContext(OSContext *context);
#ifdef __cplusplus
} /* extern "C" */
#endif
/* BROM_OS_CONTEXT_H_ */
#endif