;
;  TOPPERS/JSP Kernel
;      Toyohashi Open Platform for Embedded Real-Time Systems/
;      Just Standard Profile Kernel
;
;  Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory
;                              Toyohashi Univ. of Technology, JAPAN
;  Copyright (C) 2001-2007 by Industrial Technology Institute,
;                              Miyagi Prefectural Government, JAPAN
;  Copyright (C) 2001-2004 by Dep. of Computer Science and Engineering
;                   Tomakomai National College of Technology, JAPAN
;
;  上記著作権者は，以下の (1)〜(4) の条件か，Free Software Foundation
;  によって公表されている GNU General Public License の Version 2 に記
;  述されている条件を満たす場合に限り，本ソフトウェア（本ソフトウェア
;  を改変したものを含む．以下同じ）を使用・複製・改変・再配布（以下，
;  利用と呼ぶ）することを無償で許諾する．
;  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
;      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
;      スコード中に含まれていること．
;  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
;      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
;      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
;      の無保証規定を掲載すること．
;  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
;      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
;      と．
;    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
;        作権表示，この利用条件および下記の無保証規定を掲載すること．
;    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
;        報告すること．
;  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
;      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
;
;  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
;  よびTOPPERSプロジェクトは，本ソフトウェアに関して，その適用可能性も
;  含めて，いかなる保証も行わない．また，本ソフトウェアの利用により直
;  接的または間接的に生じたいかなる損害に関しても，その責任を負わない．
;
;  @(#) $Id: sys_support.src,v 1.7 2007/03/23 07:58:33 honda Exp $
;

;       ターゲットシステム依存モジュール アセンブリ言語部
;       （北斗電子 HSB8F3048BF25用）

        .CPU 300HA
        .SECTION P, CODE, ALIGN=2

        .INCLUDE "sys_config_asm.inc"
        .INCLUDE "cpu_config_asm.inc"

;
;　　このボートの場合は内蔵RAMをスタックにして、
;　　_hardware_init_hookが呼び出される。
;
        .GLOBAL _hardware_init_hook
_hardware_init_hook:

 .AIFDEF RAM
        ;　デバッグ時にRAM上にダウンロードする場合は
        ;　バス・ステート・コントローラの設定を行わない。
 .AELSE

;
;　バス・ステート・コントローラの設定
;　　　モード６
;　　　　エリア１にSRAMを接続
;　　　　　・アドレスバス：A0-A21
;　　　　　・データバス：16ビット幅
;　　　　　・ノンウェート
;
;　　　内蔵メモリについては設定不要
;

        ;　enable A0-A7
        ;　　P1DDR←0xff
        mov.b   #H'ff, r1l
        mov.l   #H8P1DDR, er0
        mov.b   r1l, @er0

        ;　enable A8-A15
        ;　　P2DDR←0xff
        mov.b   r1l, @((H8P2DDR-H8P1DDR), er0)

        ;　enable A16-A19
        ;　　P5DDR[3-0]←0xf
        mov.b   #H'0f, r1l
        mov.b   r1l, @((H8P5DDR-H8P1DDR), er0)

        ;　A20：モード6では常にenable

        ;　enable A21
        ;　　BRCR.A21E←0
        mov.l   #H8BRCR, er2
        bclr    #H8BRCR_A21E_BIT, @er2

        ;　D15-D8：モード6ではポート3が常にデータバスになる
        ;　D7 -D0：16ビットバスモードにするとポート4がデータバスになる

        ;　エリア１を16ビットアクセス空間に設定
        ;　　ABWCR.ABW1←0
        ;　　この設定でポート4がデータバスD7-D0になる
        mov.l   #H8ABWCR, er2
        bclr    #H8ABWCR_ABW1_BIT, @er2

        ;　エリア１を2ステートアクセスに設定
        ;　　ASTCR.AST1←0
        mov.l   #H8ASTCR, er2
        bclr    #H8ASTCR_AST1_BIT, @er2

        ;　enable CS1（P83をCS1に設定）
        ;　　P8DDR.P83DDR←1
        ;　　　P8DDRは読み出しても値が不定なので、ビット演算を行わず、
        ;　　　単なる上書きをする
        mov.b   #H8P8DDR_CS1, r1l
        mov.b   r1l, @((H8P8DDR-H8P1DDR), er0)

 .AENDI ;  RAM

        rts

        .END
