;===================================================================== ; IrisOS_Arm.s ; OSライブラリ(ARMASM用) ; ; Copyright (C) 2003-2004 NINTENDO Co.,Ltd. ;===================================================================== IF :DEF: _IRIS_OS_H ELSE _IRIS_OS_H * 1 INCLUDE IrisTargetArm.s INCLUDE IrisDefineArm.s ;======================================================================= ; ロック変数 ;======================================================================= ; ロックID OS_UNLOCK_ID * 0 ; ロック変数がロックされていない場合のID OS_MAINP_LOCKED_FLAG * 0x40 ; メインプロセッサによるロック確認フラグ OS_MAINP_LOCK_ID_START * 0x40 ; メインプロセッサ用ロックIDの割り当て開始番号 OS_MAINP_LOCK_ID_END * 0x6f ; 割り当て終了番号 OS_MAINP_DBG_LOCK_ID * 0x70 ; デバッガ予約番号 OS_MAINP_SYSTEM_LOCK_ID * 0x7f ; システム予約番号 OS_SUBP_LOCKED_FLAG * 0x80 ; サブプロセッサによるロック確認フラグ OS_SUBP_LOCK_ID_START * 0x80 ; サブプロセッサ用ロックIDの割り当て開始番号 OS_SUBP_LOCK_ID_END * 0xaf ; 割り当て終了番号 OS_SUBP_DBG_LOCK_ID * 0xb0 ; デバッガ予約番号 OS_SUBP_SYSTEM_LOCK_ID * 0xbf ; システム予約番号 OS_LOCK_SUCCESS * 0 ; ロック成功 OS_LOCK_ERROR * -1 ; ロックエラー OS_UNLOCK_SUCCESS * 0 ; ロック解除成功 OS_UNLOCK_ERROR * -2 ; ロック解除エラー OS_LOCK_FREE * 0 ; ロック解除中 OS_LOCK_ID_ERROR * -3 ; ロックIDエラー ;----------------------------------------------------------------------- ; ロック関数の初期化 ;----------------------------------------------------------------------- EXTERN OS_InitLock ;----------------------------------------------------------------------- ; ロックIDの獲得 ;----------------------------------------------------------------------- EXTERN OS_GetLockID ;----------------------------------------------------------------------- ; スピンロック(ワード/バイト) ;----------------------------------------------------------------------- EXTERN OS_LockWord EXTERN OS_LockByte EXTERN OS_LockCard EXTERN OS_LockCartridge EXTERN OS_LockWramBlock0 EXTERN OS_LockWramBlock1 EXTERN OS_LockVramC EXTERN OS_LockVramD EXTERN OS_LockSendFifo ;----------------------------------------------------------------------- ; ロックの解除(ワード/バイト) ;----------------------------------------------------------------------- EXTERN OS_UnLockWord EXTERN OS_UnLockByte EXTERN OS_UnLockCard EXTERN OS_UnLockCartridge EXTERN OS_UnLockWramBlock0 EXTERN OS_UnLockWramBlock1 EXTERN OS_UnLockVramC EXTERN OS_UnLockVramD EXTERN OS_UnLockSendFifo ;----------------------------------------------------------------------- ; ロックの試行(ワード/バイト) ;----------------------------------------------------------------------- EXTERN OS_TryLockWord EXTERN OS_TryLockByte EXTERN OS_TryLockCard EXTERN OS_TryLockCartridge EXTERN OS_TryLockWramBlock0 EXTERN OS_TryLockWramBlock1 EXTERN OS_TryLockVramC EXTERN OS_TryLockVramD EXTERN OS_TryLockSendFifo ;----------------------------------------------------------------------- ; ロックフラグの読み込み(ワード/バイト) ;----------------------------------------------------------------------- EXTERN OS_ReadLockWord EXTERN OS_ReadLockByte ;----------------------------------------------------------------------- ; ロック変数の所有モジュールIDの読み込み(ワード/バイト) ;----------------------------------------------------------------------- EXTERN OS_ReadOwnerOfLockWord EXTERN OS_ReadOwnerOfLockByte ;----------------------------------------------------------------------- ; ホールト ;----------------------------------------------------------------------- IF :DEF: IRIS_BB ELSE EXTERN OS_Halt ENDIF ; IRIS_BB IF :DEF: IRIS_BB ELSE ;======================================================================= ; プログラムステータスレジスタ ;======================================================================= ;----------------------------------------------------------------------- ; プログラムステータスレジスタ セット(r0=パラメータ) ;----------------------------------------------------------------------- EXTERN OS_SetCpsr ;----------------------------------------------------------------------- ; カレント・プログラムステータスレジスタ値 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetCpsr ;----------------------------------------------------------------------- ; IRQ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableCpsrIRQ EXTERN OS_DisableCpsrIRQ ;----------------------------------------------------------------------- ; FIQ&IRQ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableCpsrFIQ_IRQ EXTERN OS_DisableCpsrFIQ_IRQ ;======================================================================= ; 例外ベクタ ;======================================================================= ;----------------------------------------------------------------------- ; 例外ベクタを上位/下位アドレスへ移動 ;----------------------------------------------------------------------- EXTERN OS_UpperExceptionVector EXTERN OS_LowerExceptionVector ;======================================================================= ; プロテクションユニット ;======================================================================= ;----------------------------------------------------------------------- ; プロテクションユニット イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableProtectUnit EXTERN OS_DisableProtectUnit ;======================================================================= ; 命令キャッシュ ;======================================================================= ;----------------------------------------------------------------------- ; 命令キャッシュ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableICache EXTERN OS_DisableICache ;----------------------------------------------------------------------- ; 命令キャッシュ 無効化 ;----------------------------------------------------------------------- EXTERN OS_InvalidateICache ;----------------------------------------------------------------------- ; 命令キャッシュラインのアドレスによる無効化 ;----------------------------------------------------------------------- EXTERN OS_InvalidateICacheAddr EXTERN OS_InvalidateICacheAddrs ;----------------------------------------------------------------------- ; 命令キャッシュラインのアドレスによるプリフェッチ ;----------------------------------------------------------------------- EXTERN OS_PrefetchICacheAddr EXTERN OS_PrefetchICacheAddrs ;----------------------------------------------------------------------- ; 命令キャッシュ ロックダウン ;----------------------------------------------------------------------- EXTERN OS_LockdownICache ;======================================================================= ; データキャッシュ ;======================================================================= ;----------------------------------------------------------------------- ; データキャッシュ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableDCache EXTERN OS_DisableDCache ;----------------------------------------------------------------------- ; データキャッシュ 無効化 ;----------------------------------------------------------------------- EXTERN OS_InvalidateDCache ;----------------------------------------------------------------------- ; データキャッシュラインのアドレスによる無効化 ;----------------------------------------------------------------------- EXTERN OS_InvalidateDCacheAddr EXTERN OS_InvalidateDCacheAddrs ;----------------------------------------------------------------------- ; データキャッシュ クリーン ;----------------------------------------------------------------------- EXTERN OS_CleanDCache ;----------------------------------------------------------------------- ; データキャッシュラインのアドレスによるクリーン ;----------------------------------------------------------------------- EXTERN OS_CleanDCacheAddr EXTERN OS_CleanDCacheAddrs ;----------------------------------------------------------------------- ; データキャッシュラインのインデックスによるクリーン ;----------------------------------------------------------------------- EXTERN OS_CleanDCacheIndex EXTERN OS_CleanDCacheIndices ;----------------------------------------------------------------------- ; データキャッシュ クリーン&無効化 ;----------------------------------------------------------------------- EXTERN OS_Clean2InvalidateDCache ;----------------------------------------------------------------------- ; データキャッシュラインのアドレスによるクリーン&無効化 ;----------------------------------------------------------------------- EXTERN OS_Clean2InvalidateDCacheAddr EXTERN OS_Clean2InvalidateDCacheAddrs ;----------------------------------------------------------------------- ; データキャッシュラインのインデックスによるクリーン&無効化 ;----------------------------------------------------------------------- EXTERN OS_Clean2InvalidateDCacheIndex EXTERN OS_Clean2InvalidateDCacheIndices ;----------------------------------------------------------------------- ; データキャッシュラインのアドレスによるプリロード ;----------------------------------------------------------------------- EXTERN OS_PreloadDCacheAddr EXTERN OS_PreloadDCacheAddrs ;----------------------------------------------------------------------- ; データキャッシュ ロックダウン ;----------------------------------------------------------------------- EXTERN OS_LockdownDCache ;======================================================================= ; ライトバッファ ;======================================================================= ;----------------------------------------------------------------------- ; ライトバッファ エンプティ待ち ;----------------------------------------------------------------------- EXTERN OS_WaitWriteBufferEmpty ;======================================================================= ; 命令TCM ;======================================================================= ;----------------------------------------------------------------------- ; 命令TCM イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableITCM EXTERN OS_DisableITCM ;----------------------------------------------------------------------- ; 命令TCMパラメータ セット ;----------------------------------------------------------------------- EXTERN OS_SetParamITCM ;----------------------------------------------------------------------- ; 命令TCMパラメータ 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetParamITCM ;======================================================================= ; データTCM ;======================================================================= ;----------------------------------------------------------------------- ; データTCM イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableICache EXTERN OS_EnableICache ;----------------------------------------------------------------------- ; データTCMパラメータ セット ;----------------------------------------------------------------------- EXTERN OS_SetParamDTCM ;----------------------------------------------------------------------- ; データTCMパラメータ 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetParamDTCM ;======================================================================= ; プロテクションリージョン ;======================================================================= ;----------------------------------------------------------------------- ; プロテクションリージョン毎の命令キャッシュ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableICache4PR EXTERN OS_DisableICache4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎のデータキャッシュ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableDCache4PR EXTERN OS_DisableDCache4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎のライトバッファ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableWriteBuffer4PR EXTERN OS_DisableWriteBuffer4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎の命令キャッシュ イネーブルフラグ獲得 ;----------------------------------------------------------------------- EXTERN OS_GetICacheEnableFlags4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎のデータキャッシュ イネーブルフラグ獲得 ;----------------------------------------------------------------------- EXTERN OS_GetDCacheEnableFlags4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎のライトバッファ・イネーブルフラグ 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetWriteBufferEnableFlags4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎の命令アクセス制限 セット ;----------------------------------------------------------------------- EXTERN OS_SetIPermissions4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎のデータアクセス制限 セット ;----------------------------------------------------------------------- EXTERN OS_SetDPermissions4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎の命令アクセス制限 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetIPermissions4PR ;----------------------------------------------------------------------- ; プロテクションリージョン毎のデータアクセス制限 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetDPermissions4PR ;----------------------------------------------------------------------- ; 各プロテクションリージョンのパラメータ セット ;----------------------------------------------------------------------- EXTERN OS_SetProtectRegion0 EXTERN OS_SetProtectRegion1 EXTERN OS_SetProtectRegion2 EXTERN OS_SetProtectRegion3 EXTERN OS_SetProtectRegion4 EXTERN OS_SetProtectRegion5 EXTERN OS_SetProtectRegion6 EXTERN OS_SetProtectRegion7 ;----------------------------------------------------------------------- ; 各プロテクションリージョンのパラメータ 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetProtectRegion0 EXTERN OS_GetProtectRegion1 EXTERN OS_GetProtectRegion2 EXTERN OS_GetProtectRegion3 EXTERN OS_GetProtectRegion4 EXTERN OS_GetProtectRegion5 EXTERN OS_GetProtectRegion6 EXTERN OS_GetProtectRegion7 ENDIF ; IRIS_BB ENDIF ; _IRIS_OS_H END