;===================================================================== ; IrisSubpOS_Arm.s ; OSライブラリ(ARMASM用) ; ; Copyright (C) 2003-2004 NINTENDO Co.,Ltd. ;===================================================================== IF :DEF: _IRIS_SUBP_OS_H ELSE _IRIS_SUBP_OS_H * 1 INCLUDE IrisSubpTargetArm.s INCLUDE IrisSubpDefineArm.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 ;======================================================================= ; プログラムステータスレジスタ ;======================================================================= ;----------------------------------------------------------------------- ; プログラムステータスレジスタ セット(r0=パラメータ) ;----------------------------------------------------------------------- EXTERN OS_SetCpsr ;----------------------------------------------------------------------- ; カレント・プログラムステータスレジスタ値 獲得 ;----------------------------------------------------------------------- EXTERN OS_GetCpsr ;----------------------------------------------------------------------- ; IRQ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableCpsrIRQ EXTERN OS_DisableCpsrIRQ ;----------------------------------------------------------------------- ; FIQ&IRQ イネーブル/ディセーブル ;----------------------------------------------------------------------- EXTERN OS_EnableCpsrFIQ_IRQ EXTERN OS_DisableCpsrFIQ_IRQ ENDIF ; _IRIS_SUBP_OS_H END