OSDN Git Service

MochiBooterのカーネルイメージ化対応
[mochi/master.git] / src / booter / LoadMng / LoadMngKernel.c
1 /******************************************************************************/
2 /* src/booter/LoadMng/LoadMngKernel.c                                         */
3 /*                                                                 2017/07/16 */
4 /* Copyright (C) 2017 Mochi.                                                  */
5 /******************************************************************************/
6 /******************************************************************************/
7 /* インクルード                                                               */
8 /******************************************************************************/
9 /* 共通ヘッダ */
10 #include <stdarg.h>
11 #include <kernel/MochiKernel.h>
12 #include <MLib/Basic/MLibBasic.h>
13
14 /* 外部モジュールヘッダ */
15 #include <Cmn.h>
16 #include <Debug.h>
17 #include <Driver.h>
18 #include <LoadMng.h>
19
20 /* 内部モジュールヘッダ */
21 #include "LoadMngInit.h"
22
23
24 /******************************************************************************/
25 /* 定義                                                                       */
26 /******************************************************************************/
27 /* デバッグトレースログ出力マクロ */
28 #ifdef DEBUG_LOG_ENABLE
29 #define DEBUG_LOG( ... )                       \
30     DebugLogOutput( CMN_MODULE_LOADMNG_KERNEL, \
31                     __LINE__,                  \
32                     __VA_ARGS__ )
33 #else
34 #define DEBUG_LOG( ... )
35 #endif
36
37
38 /******************************************************************************/
39 /* グローバル関数定義                                                         */
40 /******************************************************************************/
41 /******************************************************************************/
42 /**
43  * @brief       カーネル読込み
44  * @details     カーネルを読み込む
45  */
46 /******************************************************************************/
47 void LoadMngKernelLoad( void )
48 {
49     uint32_t            size;   /* LBAサイズ              */
50     MochiKernelImgHdr_t header; /* カーネルイメージヘッダ */
51     
52     /* トレースログ出力 */
53     DEBUG_LOG( "%s() start.", __func__ );
54     
55     /* 初期化 */
56     size = sizeof ( MochiKernelImgHdr_t ) / 512;
57     
58     /* カーネルイメージヘッダ読込み */
59     DriverAtaRead( &header,
60                    gLoadMngInitPt[ 1 ].lbaFirstAddr,
61                    size );
62     
63     /* カーネル読込み */
64     DriverAtaRead( ( void * ) MOCHIKERNEL_ADDR_ENTRY,
65                    gLoadMngInitPt[ 1 ].lbaFirstAddr + size,
66                    MLIB_BASIC_ALIGN( header.fileSize, 512 ) / 512);
67     
68     /* トレースログ出力 */
69     DEBUG_LOG( "%s() end.", __func__ );
70     
71     return;
72 }
73
74
75 /******************************************************************************/