ntr_bootrom/trunk/IrisMainp/include/IrisOS_Arm.s

479 lines
17 KiB
ArmAsm
Raw Permalink 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.

;=====================================================================
; 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
;-----------------------------------------------------------------------
; イネーブル/ディセーブル
;-----------------------------------------------------------------------
EXTERN OS_EnableCpsrIRQ
EXTERN OS_DisableCpsrIRQ
;-----------------------------------------------------------------------
; イネーブル/ディセーブル
;-----------------------------------------------------------------------
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