ntr_bootrom/trunk/IrisMainp/include/IrisOS_Mw.s

478 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_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
;=======================================================================
; ロック変数
;=======================================================================
//
#define OS_UNLOCK_ID 0 //
#define OS_MAINP_LOCKED_FLAG 0x40 //
#define OS_MAINP_LOCK_ID_START 0x40 //
#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 //
#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 //
;-----------------------------------------------------------------------
; ロック関数の初期化
;-----------------------------------------------------------------------
.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
;-----------------------------------------------------------------------
; イネーブル/ディセーブル
;-----------------------------------------------------------------------
.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_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