twl_wrapsdk/include/nitro/hw/common/mmap_shared.h
nakasima a8f3113969 add HW_MAIN_MEM_HI and move HW_MAIN_MEM_SYSTEM.
fix interrupt func.

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@10 4ee2a332-4b2b-5046-8439-1ba90f034370
2007-04-04 11:58:10 +00:00

387 lines
17 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project: NitroSDK - HW - include
File: mmap_shared.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: mmap_shared.h,v $
Revision 1.41 2006/01/18 02:11:30 kitase_hirotake
do-indent
Revision 1.40 2005/09/08 12:28:09 yasu
SDK_FROM_TOOL の判定部分に SDK_WIN32 での判定も追加
Revision 1.39 2005/07/27 07:45:30 seiki_masashi
OSSystemWork の wm_keyshare_control を wm_rssi_pool に変更
Revision 1.38 2005/06/02 10:28:11 terui
OSSystemWork構造体内のfile_control及びis_reservedメンバを統合してrom_headerメンバに変名
Revision 1.37 2005/05/20 03:10:53 yosizaki
add HW_CARD_ROM_HEADER, HW_DOWNLOAD_PARAMETER.
Revision 1.36 2005/02/28 05:26:01 yosizaki
do-indent.
Revision 1.35 2004/12/02 00:26:02 yada
add autoload sync
Revision 1.34 2004/11/22 01:14:51 yada
add HW_ROM_BASE_OFFSET_BUF
Revision 1.33 2004/09/01 04:19:11 yada
add HW_RESET_PARAMETER_BUF
Revision 1.32 2004/08/17 04:09:56 yada
add some definition to detect debugger correctly
Revision 1.31 2004/08/16 08:16:16 yada
HW_CHECK_DEBUGGER_BUF definition is moved to mmap_shared.h header
Revision 1.30 2004/08/16 08:08:06 yada
add HW_BOOT_CHECK_INFO_BUF and HW_CTRDG_MODULE_INFO_BUF
Revision 1.29 2004/08/10 12:12:01 yada
place VBlank count buffer in shared area
Revision 1.28 2004/08/07 00:58:46 terui
wm_controlを削除、wm_callback_control wm_keyshare_controlを追加
Revision 1.27 2004/08/03 01:36:27 terui
Add wm_control
Revision 1.26 2004/07/27 05:59:11 yada
fix OSSystemWork structure.
lowest 0x80 (increased in recent release) byte was forgotten.
Revision 1.25 2004/07/22 11:29:23 yada
shared area is expanded 0x80 byte
make HW_WM_BOOT_BUF
Revision 1.24 2004/06/15 02:10:00 yada
only add HW_DMA_CLEAR_DATA_BUF_END
Revision 1.23 2004/06/08 10:41:55 yada
only fix comment
Revision 1.22 2004/06/01 04:24:24 terui
Add mic_sampling_data.
Revision 1.21 2004/05/28 09:40:30 terui
Add mic_last_address
Revision 1.20 2004/05/24 09:54:31 yasu
move RED_RESERVED_END to (HW_MAIN_MEM + 0x007ffa00)
Revision 1.19 2004/05/21 12:11:58 yasu
Reduce the SHARED ARENA because of allocating HW_RED_RESERVED
Revision 1.18 2004/05/21 11:07:26 yada
add HW_RED_RESERVED area
Revision 1.17 2004/05/19 05:19:17 yada
add NVRAM user info area
Revision 1.16 2004/05/14 11:58:24 takano_makoto
Add #ifndef SDK_FROM_TOOL for VC or BCB.
Revision 1.15 2004/05/11 12:08:13 yada
some define names was changed,
HW_BIOS_EXCP_STACK_MAIN, HW_EXCP_VECTOR_MAIN,
HW_IS_RESERVED was deleted.
Revision 1.14 2004/05/11 01:14:33 yasu
Allocate PXI related flags on shared area
Revision 1.13 2004/05/10 08:20:19 yada
ram checker deleted, because put checker for main and sub.
Revision 1.12 2004/05/10 08:15:46 yada
HW_COMPONENT_PARAM の位置変え
Revision 1.11 2004/05/06 00:38:14 yada
add HW_IS_RESERVED
Revision 1.10 2004/05/06 00:17:13 yada
add HW_REAL_TIME_CLOCK_BUF
Revision 1.9 2004/05/04 04:11:11 terui
Change position of real time clock infromation area.
Revision 1.8 2004/05/04 02:08:50 terui
Add real time clock information area.
Revision 1.7 2004/04/30 07:37:44 yada
HW_LOCKIDFLAG_MAIN/SUB -> HW_LOCK_ID_FLAG_MAIN/SUB
Revision 1.6 2004/04/29 09:34:02 yada
put HW_LOCKID_FLAG_MAIN/SUB
Revision 1.5 2004/04/14 05:05:21 takano_makoto
Add Touch Panel Area.
Revision 1.4 2004/04/07 02:03:17 yada
fix header comment
Revision 1.3 2004/03/15 11:02:15 yada
インクルードガード名修正
Revision 1.2 2004/03/12 12:11:10 yada
only arrange tab
Revision 1.1 2004/02/18 07:51:36 yada
mmap_shared.h を A7/9共通に
Revision 1.5 2004/02/18 01:24:57 yada
XYボタン情報領域を追加
Revision 1.4 2004/02/17 06:51:02 yada
より直感的な表記へ変更
Revision 1.3 2004/02/14 06:57:48 yasu
add HW_COMPONENT_PARAM
Revision 1.2 2004/02/13 10:39:58 yada
ARENAを個から個にしてインフォエリア拡大
Revision 1.1 2004/02/13 01:52:31 yada
ARM7用に追加 (temporary?)
Revision 1.11 2004/02/12 10:56:04 yasu
new location of include files ARM9/ARM7
Revision 1.10 2004/02/05 07:09:03 yasu
change SDK prefix iris -> nitro
Revision 1.9 2004/01/19 02:29:10 yada
systemWork を 0x200→0x280と増やした。
それに伴いメンバのオフセットが悉く変更に。
Revision 1.8 2004/01/17 11:43:29 yada
アリーナ情報位置変更につき
Revision 1.7 2004/01/16 11:49:18 yada
リザーブ領域を追加
Revision 1.6 2004/01/16 04:13:19 yada
アリーナ定義修正
Revision 1.5 2004/01/15 12:14:13 yada
SystemWork にアリーナ構造体を取るようにした
Revision 1.4 2004/01/07 01:41:34 yada
arena用のデフォルトLo/Hi値定義
Revision 1.3 2003/12/25 07:30:42 yada
型ルール統一による変更
Revision 1.2 2003/12/22 13:38:04 yasu
OS_GetSystemWrokをマクロに OS_LockWord を struct タグでアクセスするよう変更
Revision 1.1 2003/12/17 06:05:39 yasu
mmap_reserved.h を mmap_tcm.h と mmap_shared.h に分割
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef NITRO_HW_COMMON_MMAP_SHARED_H_
#define NITRO_HW_COMMON_MMAP_SHARED_H_
#ifdef __cplusplus
extern "C" {
#endif
//----------------------------------------------------------------------
// MEMORY MAP of SYSTEM SHARED AREA
//----------------------------------------------------------------------
//
#define HW_RED_RESERVED (HW_MAIN_MEM_EX_END - 0x800) // maybe change later
#define HW_RED_RESERVED_END (HW_RED_RESERVED + HW_RED_RESERVED_SIZE)
#define HW_RED_RESERVED_SIZE 0x200
/* original ROM-header of NITRO-CARD for downloaded program */
#define HW_CARD_ROM_HEADER_SIZE 0x160
/* maximun size of parameters for downloaded program */
#define HW_DOWNLOAD_PARAMETER_SIZE 0x20
//---- default address for shared memory arena
#define HW_SHARED_ARENA_LO_DEFAULT HW_MAIN_MEM_SHARED
#ifdef HW_RED_RESERVED
# define HW_SHARED_ARENA_HI_DEFAULT (HW_RED_RESERVED - HW_CARD_ROM_HEADER_SIZE - HW_DOWNLOAD_PARAMETER_SIZE)
#else
# define HW_SHARED_ARENA_HI_DEFAULT (HW_MAIN_MEM_SYSTEM - HW_CARD_ROM_HEADER_SIZE - HW_DOWNLOAD_PARAMETER_SIZE)
#endif
// 0x027ffa00-0x027ffa7f:(128byte):UNUSED
/* 0x027ffa80-0x027ffbdf:(352byte): original ROM-header */
#define HW_CARD_ROM_HEADER (HW_MAIN_MEM + 0x00fffa80)
/* 0x027ffbe0-0x027ffbff:( 32byte): parameters for downloaded program */
#define HW_DOWNLOAD_PARAMETER (HW_MAIN_MEM + 0x00fffbe0)
//-------------------------------- MainMemory shared area
#define HW_MAIN_MEM_SYSTEM_SIZE 0x400
#define HW_MAIN_MEM_SYSTEM (HW_MAIN_MEM_EX_END - 0x400)
#define HW_BOOT_CHECK_INFO_BUF (HW_MAIN_MEM_SYSTEM + 0x000) // Boot check info (END-0x400)
#define HW_BOOT_CHECK_INFO_BUF_END (HW_MAIN_MEM_SYSTEM + 0x020) // (END-0x3e0)
#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM_SYSTEM + 0x020) // reset parameter (END-0x3e0)
// 0x027ffc24-0x027ffc2b:(8byte):UNUSED
#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM_SYSTEM + 0x02c) // ROM offset of own program (END-0x3d4)
#define HW_ROM_BASE_OFFSET_BUF_END (HW_MAIN_MEM_SYSTEM + 0x030) // (END-0x3d0)
#define HW_CTRDG_MODULE_INFO_BUF (HW_MAIN_MEM_SYSTEM + 0x030) // Cartridge module info (END-0x3d0)
#define HW_CTRDG_MODULE_INFO_BUF_END (HW_MAIN_MEM_SYSTEM + 0x03c) // (END-0x3c4)
#define HW_VBLANK_COUNT_BUF (HW_MAIN_MEM_SYSTEM + 0x03c) // VBlank counter (END-0x3c4)
#define HW_WM_BOOT_BUF (HW_MAIN_MEM_SYSTEM + 0x040) // WM buffer for Multi-Boot (END-0x3c0)
#define HW_WM_BOOT_BUF_END (HW_MAIN_MEM_SYSTEM + 0x080) // (END-0x380)
#define HW_NVRAM_USER_INFO (HW_MAIN_MEM_SYSTEM + 0x080) // NVRAM user info (END-0x380)
#define HW_NVRAM_USER_INFO_END (HW_MAIN_MEM_SYSTEM + 0x180) // (END-0x280)
#define HW_BIOS_EXCP_STACK_MAIN (HW_MAIN_MEM_SYSTEM + 0x180) // MAINPデバッガモニタ例外ハンドラ (END-0x280)
#define HW_BIOS_EXCP_STACK_MAIN_END (HW_MAIN_MEM_SYSTEM + 0x19c) // (END-0x264)
#define HW_EXCP_VECTOR_MAIN (HW_MAIN_MEM_SYSTEM + 0x19c) // MAINP用HW_EXCP_VECTOR_BUF (END-0x264)
#define HW_ARENA_INFO_BUF (HW_MAIN_MEM_SYSTEM + 0x1a0) // アリーナ情報構造体(27F_FDA027F_FDE7) (END-0x260)
#define HW_REAL_TIME_CLOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x1e8) // RTC
#define HW_DMA_CLEAR_DATA_BUF (HW_MAIN_MEM_SYSTEM + 0x1f0) // DMAクリアデータ・バッファ (END-0x210)
#define HW_DMA_CLEAR_DATA_BUF_END (HW_MAIN_MEM_SYSTEM + 0x200) // (この領域は ARM9-TEG にのみ使用する)
#define HW_ROM_HEADER_BUF (HW_MAIN_MEM_SYSTEM + 0x200) // ROM内登録エリアデータ・バッファ (END-0x200)
#define HW_ROM_HEADER_BUF_END (HW_MAIN_MEM_SYSTEM + 0x360) // (END-0x0a0)
#define HW_ISD_RESERVED (HW_MAIN_MEM_SYSTEM + 0x360) // IS DEBUGGER Reserved (END-0xa0)
#define HW_ISD_RESERVED_END (HW_MAIN_MEM_SYSTEM + 0x380) // (END-0x80)
#define HW_PXI_SIGNAL_PARAM_ARM9 (HW_MAIN_MEM_SYSTEM + 0x380) // PXI Signal Param for ARM9
#define HW_PXI_SIGNAL_PARAM_ARM7 (HW_MAIN_MEM_SYSTEM + 0x384) // PXI Signal Param for ARM7
#define HW_PXI_HANDLE_CHECKER_ARM9 (HW_MAIN_MEM_SYSTEM + 0x388) // PXI Handle Checker for ARM9
#define HW_PXI_HANDLE_CHECKER_ARM7 (HW_MAIN_MEM_SYSTEM + 0x38c) // PXI Handle Checker for ARM7
#define HW_MIC_LAST_ADDRESS (HW_MAIN_MEM_SYSTEM + 0x390) // MIC 最新サンプリングデータ格納アドレス
#define HW_MIC_SAMPLING_DATA (HW_MAIN_MEM_SYSTEM + 0x394) // MIC 単体サンプリング結果
#define HW_WM_CALLBACK_CONTROL (HW_MAIN_MEM_SYSTEM + 0x396) // WM コールバック同期用パラメータ
#define HW_WM_RSSI_POOL (HW_MAIN_MEM_SYSTEM + 0x398) // WM 受信強度による乱数源
#define HW_COMPONENT_PARAM (HW_MAIN_MEM_SYSTEM + 0x39c) // Component 同期用パラメータ
#define HW_THREADINFO_MAIN (HW_MAIN_MEM_SYSTEM + 0x3a0) // ThreadInfo for Main processor
#define HW_THREADINFO_SUB (HW_MAIN_MEM_SYSTEM + 0x3a4) // ThreadInfo for Sub processor
#define HW_BUTTON_XY_BUF (HW_MAIN_MEM_SYSTEM + 0x3a8) // buffer for X and Y button
#define HW_TOUCHPANEL_BUF (HW_MAIN_MEM_SYSTEM + 0x3aa) // buffer for touch panel
#define HW_AUTOLOAD_SYNC_BUF (HW_MAIN_MEM_SYSTEM + 0x3ae) // buffer for autoload sync
#define HW_LOCK_ID_FLAG_MAIN (HW_MAIN_MEM_SYSTEM + 0x3b0) // lockID flag for Main processor
#define HW_LOCK_ID_FLAG_SUB (HW_MAIN_MEM_SYSTEM + 0x3b8) // lockID flag for Sub processor
// SpinLock Mutex
#define HW_VRAM_C_LOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x3c0) // VRAM-C・ロックバッファ (END-0x40)
#define HW_VRAM_D_LOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x3c8) // VRAM-D・ロックバッファ (END-0x38)
#define HW_WRAM_BLOCK0_LOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x3d0) // CPU内部ワークRAM・ブロック0・ロックバッファ (END-0x30)
#define HW_WRAM_BLOCK1_LOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x3d8) // CPU内部ワークRAM・ブロック1・ロックバッファ (END-0x28)
#define HW_CARD_LOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x3e0) // カード・ロックバッファ (END-0x20)
#define HW_CTRDG_LOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x3e8) // カートリッジ・ロックバッファ (END-0x18)
#define HW_INIT_LOCK_BUF (HW_MAIN_MEM_SYSTEM + 0x3f0) // 初期化ロックバッファ (END-0x10)
#define HW_MMEMCHECKER_MAIN (HW_MAIN_MEM_SYSTEM + 0x3f8) // MainMomory Size Checker for Main processor (END-8)
#define HW_MMEMCHECKER_SUB (HW_MAIN_MEM_SYSTEM + 0x3fa) // MainMomory Size Checker for Sub processor (END-6)
#define HW_CMD_AREA (HW_MAIN_MEM_SYSTEM + 0x3fe) // メインメモリコマンド発行エリア(使用禁止エリア)(END-2)
//--------------------------------------------------------------------
//---- Lock area
#define HW_SHARED_LOCK_BUF (HW_VRAM_C_LOCK_BUF)
#define HW_SHARED_LOCK_BUF_END (HW_INIT_LOCK_BUF + 8)
#define HW_CHECK_DEBUGGER_SW (HW_MAIN_MEM_SYSTEM + 0x010) // (u16)debugger check switch. if 0 check buf1, else buf2.
#define HW_CHECK_DEBUGGER_BUF1 (HW_RED_RESERVED + 0x014) // (u16)debugger checker. 1 if run on debugger.
#define HW_CHECK_DEBUGGER_BUF2 (HW_MAIN_MEM_SYSTEM + 0x014) // (u16)debugger checker. 1 if run on debugger.
/* if include from Other Environment for exsample VC or BCB, */
/* please define SDK_FROM_TOOL */
#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL))
//
//--------------------------------------------------------------------
#ifndef SDK_ASM
#include <nitro/types.h>
#include <nitro/os/common/thread.h>
#include <nitro/os/common/spinLock.h>
#include <nitro/os/common/arena.h>
typedef union
{
u32 b32;
u16 b16;
}
OSDmaClearSrc;
typedef struct
{
u8 bootCheckInfo[0x20]; // 000-01f: 32byte boot check info
u32 resetParameter; // 020-023: 4byte reset parameter
u8 padding5[0x8]; // 024-02c: (8byte)
u32 romBaseOffset; // 02c-02f: 4byte ROM offset of own program
u8 cartridgeModuleInfo[12]; // 030-03b: 12byte cartridge module info
u32 vblankCount; // 03c-03f: 4byte Vブランクカウント
u8 wmBootBuf[0x40]; // 040-07f: 64byte WM のマルチブート用バッファ
u8 nvramUserInfo[0x100]; // 080-17f: 256bytes NVRAM user info
u8 isd_reserved1[0x20]; // 180-19f: 32bytes ISDebugger 予約
u8 arenaInfo[0x48]; // 1a0-1e7: 72bytte アリーナ情報
u8 real_time_clock[8]; // 1e8-1ef: 8bytes RTC
u32 dmaClearBuf[4]; // 1f0-1ff: 16bytes DMA クリア情報バッファ (ARM9-TEG用)
u8 rom_header[0x160]; // 200-35f: 352bytes ROM 内登録エリア情報退避バッファ
u8 isd_reserved2[32]; // 360-37f: 32bytes ISDebugger 予約
u32 pxiSignalParam[2]; // 380-387: 8bytes Param for PXI Signal
u32 pxiHandleChecker[2]; // 388-38f: 8bytes Flag for PXI Command Handler Installed
u32 mic_last_address; // 390-393: 4bytes マイク 最新サンプリング結果の格納アドレス
u16 mic_sampling_data; // 394-395: 2bytes マイク 単体サンプリング結果
u16 wm_callback_control; // 396-397: 2bytes WM コールバック同期用パラメータ
u16 wm_rssi_pool; // 398-399: 2bytes WM 受信強度による乱数源
u8 padding3[2]; // 39a-39b: (2bytes)
u32 component_param; // 39c-39f: 4bytes Component 同期用パラメータ
OSThreadInfo *threadinfo_mainp; // 3a0-3a3: 4bytes ARM9 スレッド情報へのポインタ 初期値0であること
OSThreadInfo *threadinfo_subp; // 3a4-3a7: 4bytes ARM7 スレッド情報へのポインタ 初期値0であること
u16 button_XY; // 3a8-3a9: 2bytes XY ボタン情報格納位置
u8 touch_panel[4]; // 3aa-3ad: 4bytes タッチパネル情報格納位置
u16 autoloadSync; // 3ae-3af: 2bytes autoload sync between processors
u32 lockIDFlag_mainp[2]; // 3b0-3b7: 8bytes lockID管理フラグ(ARM9用)
u32 lockIDFlag_subp[2]; // 3b8-3bf: 8bytes lockID管理フラグ(ARM7用)
struct OSLockWord lock_VRAM_C; // 3c0-3c7: 8bytes C・ロックバッファ
struct OSLockWord lock_VRAM_D; // 3c8-3cf: 8bytes VRAM-D・ロックバッファ
struct OSLockWord lock_WRAM_BLOCK0; // 3d0-3d7: 8bytes ブロック0・ロックバッファ
struct OSLockWord lock_WRAM_BLOCK1; // 3d8-3df: 8bytes CPU内部ワークRAM・ブロック1・ロックバッファ
struct OSLockWord lock_CARD; // 3e0-3e7: 8bytes カード・ロックバッファ
struct OSLockWord lock_CARTRIDGE; // 3e8-3ef: 8bytes カートリッジ・ロックバッファ
struct OSLockWord lock_INIT; // 3f0-3f7: 8bytes 初期化ロックバッファ
u16 mmem_checker_mainp; // 3f8-3f9: 2bytes MainMomory Size Checker for Main processor
u16 mmem_checker_subp; // 3fa-3fb: 2bytes MainMomory Size Checker for Sub processor
u8 padding4[2]; // 3fc-3fd: (2bytes)
u16 command_area; // 3fe-3ff: 2bytes Command Area
}
OSSystemWork;
#define OS_GetSystemWork() ((OSSystemWork *)HW_MAIN_MEM_SYSTEM)
#endif
#endif // SDK_FROM_TOOL
#ifdef __cplusplus
} /* extern "C" */
#endif
/* NITRO_HW_COMMON_MMAP_SHARED_H_ */
#endif