OSDN Git Service

MochiBooterの大幅改造(ATA-PIOreadによるカーネルロード)、VMイメージ作成ツール追加など
[mochi/master.git] / src / booter / LoadMng / LoadMngInit.h
1 /******************************************************************************/
2 /* src/booter/LoadMng/LoadMngInit.h                                           */
3 /*                                                                 2017/07/03 */
4 /* Copyright (C) 2017 Mochi.                                                  */
5 /******************************************************************************/
6 #ifndef LOADMNG_INIT_H
7 #define LOADMNG_INIT_H
8 /******************************************************************************/
9 /* インクルード                                                               */
10 /******************************************************************************/
11 /* 共通ヘッダ */
12 #include <stdint.h>
13
14
15 /******************************************************************************/
16 /* 定義                                                                       */
17 /******************************************************************************/
18 /** CYLINDER取得マクロ */
19 #define GET_CYLINDER( _CYLSEC )     \
20     ( ( ( _CYLSEC >> 6 ) & 0x0300 ) | ( _CYLSEC & 0x00FF ) )
21
22 /** SECTOR取得マクロ */
23 #define GET_SECTOR( _CYLSEC ) ( ( _CYLSEC >> 8 ) & 0x3F )
24
25 /** CHSアドレス */
26 typedef struct {
27     uint16_t cylSec;            /**< シリンダ&セクタ */
28     uint8_t  head;              /**< ヘッド          */
29 }  __attribute__( ( packed ) ) chs_t;
30
31 /** パーティションテーブル */
32 typedef struct {
33     uint8_t  status;            /**< ステータス           */
34     chs_t    chsFirstAddr;      /**< CHS先頭アドレス      */
35     uint8_t  type;              /**< パーティションタイプ */
36     chs_t    chsLastAddr;       /**< CHS最後尾アドレス    */
37     uint32_t lbaFirstAddr;      /**< LBA先頭アドレス      */
38     uint32_t lbaSize;           /**< LBAサイズ            */
39 } __attribute__( ( packed ) ) pt_t;
40
41
42 /******************************************************************************/
43 /* 変数定義                                                                   */
44 /******************************************************************************/
45 /** パーティションテーブル */
46 extern pt_t gLoadMngInitPt[ 4 ];
47
48
49 /******************************************************************************/
50 #endif