mirror of
https://github.com/rvtr/ntr_bootrom.git
synced 2025-10-31 07:11:11 -04:00
478 lines
17 KiB
ArmAsm
478 lines
17 KiB
ArmAsm
;=====================================================================
|
||
; IrisOS_Mw.s
|
||
; OSライブラリ(MWASMARM用)
|
||
;
|
||
; Copyright (C) 2003-2004 NINTENDO Co.,Ltd.
|
||
;=====================================================================
|
||
#ifndef _IRIS_OS_H
|
||
#define _IRIS_OS_H
|
||
|
||
|
||
.INCLUDE IrisTarget.h
|
||
.INCLUDE IrisDefine.h
|
||
|
||
|
||
|
||
;=======================================================================
|
||
; ロック変数
|
||
;=======================================================================
|
||
|
||
// ロックID
|
||
|
||
#define OS_UNLOCK_ID 0 // ロック変数がロックされていない場合のID
|
||
#define OS_MAINP_LOCKED_FLAG 0x40 // メインプロセッサによるロック確認フラグ
|
||
#define OS_MAINP_LOCK_ID_START 0x40 // メインプロセッサ用ロックIDの割り当て開始番号
|
||
#define OS_MAINP_LOCK_ID_END 0x6f // 割り当て終了番号
|
||
#define OS_MAINP_DBG_LOCK_ID 0x70 // デバッガ予約番号
|
||
#define OS_MAINP_SYSTEM_LOCK_ID 0x7f // システム予約番号
|
||
#define OS_SUBP_LOCKED_FLAG 0x80 // サブプロセッサによるロック確認フラグ
|
||
#define OS_SUBP_LOCK_ID_START 0x80 // サブプロセッサ用ロックIDの割り当て開始番号
|
||
#define OS_SUBP_LOCK_ID_END 0xaf // 割り当て終了番号
|
||
#define OS_SUBP_DBG_LOCK_ID 0xb0 // デバッガ予約番号
|
||
#define OS_SUBP_SYSTEM_LOCK_ID 0xbf // システム予約番号
|
||
|
||
#define OS_LOCK_SUCCESS 0 // ロック成功
|
||
#define OS_LOCK_ERROR -1 // ロックエラー
|
||
|
||
#define OS_UNLOCK_SUCCESS 0 // ロック解除成功
|
||
#define OS_UNLOCK_ERROR -2 // ロック解除エラー
|
||
|
||
#define OS_LOCK_FREE 0 // ロック解除中
|
||
|
||
#define 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
|
||
|
||
|
||
|
||
;-----------------------------------------------------------------------
|
||
; ホールト
|
||
;-----------------------------------------------------------------------
|
||
|
||
#ifdef IRIS_BB
|
||
#else
|
||
|
||
.EXTERN OS_Halt
|
||
|
||
#endif // IRIS_BB
|
||
|
||
|
||
|
||
#ifdef 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_IsEnableDTCM
|
||
|
||
;-----------------------------------------------------------------------
|
||
; データ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
|