OSDN Git Service

MochiBooterの大幅改造(ATA-PIOreadによるカーネルロード)、VMイメージ作成ツール追加など
[mochi/master.git] / src / booter / include / Cmn.h
1 /******************************************************************************/
2 /* src/booter/include/Cmn.h                                                   */
3 /*                                                                 2017/07/04 */
4 /* Copyright (C) 2017 Mochi.                                                  */
5 /******************************************************************************/
6 #ifndef CMN_H
7 #define CMN_H
8 /******************************************************************************/
9 /* インクルード                                                               */
10 /******************************************************************************/
11 /* 共通ヘッダ */
12 #include <stdbool.h>
13 #include <stdint.h>
14 #include <hardware/IA32/IA32Instruction.h>
15
16
17 /******************************************************************************/
18 /* 定義                                                                       */
19 /******************************************************************************/
20 /* 処理結果 */
21 #define CMN_SUCCESS             (  0 )      /** 成功 */
22 #define CMN_FAILURE             ( -1 )      /** 失敗 */
23
24 /* モジュール・サブモジュール識別子 */
25 #define CMN_MODULE_INIT_INIT      ( 0x0101 )  /** 初期化制御(初期化)     */
26 #define CMN_MODULE_INTMNG_INIT    ( 0x0201 )  /** 割込管理(初期化)       */
27 #define CMN_MODULE_INTMNG_PIC     ( 0x0202 )  /** 割込管理(PIC管理)      */
28 #define CMN_MODULE_INTMNG_IDT     ( 0x0203 )  /** 割込管理(IDT管理)      */
29 #define CMN_MODULE_INTMNG_HDL     ( 0x0204 )  /** 割込管理(ハンドラ管理) */
30 #define CMN_MODULE_DRIVER_INIT    ( 0x0301 )  /** ドライバ(初期化)       */
31 #define CMN_MODULE_DRIVER_A20     ( 0x0302 )  /** ドライバ(A20)          */
32 #define CMN_MODULE_DRIVER_ATA     ( 0x0303 )  /** ドライバ(ATA)          */
33 #define CMN_MODULE_LOADMNG_INIT   ( 0x0401 )  /** 読込管理(初期化)       */
34 #define CMN_MODULE_LOADMNG_KERNEL ( 0x0402 )  /** 読込管理(カーネル)     */
35 #define CMN_MODULE_DEBUG_INIT     ( 0x0401 )  /** デバッグ制御(初期化)   */
36 #define CMN_MODULE_DEBUG_LOG      ( 0x0402 )  /** デバッグ制御(ログ管理) */
37
38 /** モジュール・サブモジュール数 */
39 #define CMN_MODULE_NUM          ( 12 )
40
41 /** 処理結果構造体 */
42 typedef int32_t CmnRet_t;
43
44
45 /******************************************************************************/
46 /* インライン関数定義                                                         */
47 /******************************************************************************/
48 /******************************************************************************/
49 /**
50  * @brief       アボート
51  * @details     無限ループする。
52  */
53 /******************************************************************************/
54 static inline void CmnAbort( void )
55 {
56     /* 割込み禁止 */
57     IA32InstructionCli();
58     
59     /* 無限ループ */
60     while ( true ) {
61         IA32InstructionHlt();
62     }
63 }
64
65
66 /******************************************************************************/
67 #endif