Exemplo n.º 1
0
void
interrupt_initialize()
{
	UINT		i;
	const INHINIB	*inhinib;

	for (inhinib = inhinib_table, i = 0; i < tnum_inhno; inhinib++, i++) {
		define_inh(inhinib->inhno, inhinib->inthdr);
	}
}
Exemplo n.º 2
0
/*
 *  シリアルI/Oポートのオープン
 */
SIOPCB *sio_opn_por(ID siopid, VP_INT exinf)
{
    SIOPCB* siopcb ;
    UH uhBase ;
                                /*
                                 *  オープン出来るポートかのチェック
                                 */
    if ( siopid < 1 || siopid > TNUM_PORT ) return NULL ;
    siopcb = &siopcb_table[siopid-1] ;
    if ( siopcb->bNotExist ) return NULL ;
                                /*
                                 *  既にオープン済みの場合
                                 */
    if ( siopcb->bOpened ) {
        siopcb->vpiExinf = exinf ;
        return siopcb ;
    }
                                /*
                                 *  SIOの初期化と存在のチェック
                                 */
    uhBase = siopcb->uhBase ;
    __SFR(uhBase) = __UxCR_RUN|__UxCR_TXEMPTY ;
    if ( ( __SFR(uhBase) &
        ( __UxCR_RUN|__UxCR_BAUDRATE|__UxCR_PARITY|__UxCR_TXIE|
        __UxCR_RXIE) ) != __UxCR_RUN ) {
        siopcb->bNotExist = TRUE ;
        return NULL ;
    }
                                /*
                                 *  管理テーブルの初期化
                                 */
    siopcb->vpiExinf = exinf ;
    siopcb->bOpened = TRUE ;
    siopcb->bTxIe = FALSE ;
    siopcb->bRxIe = FALSE ;
    siopcb->bLastIsCr = FALSE ;
                                /*
                                 *  割り込みハンドラの登録と許可
                                 */
    define_inh( INHNO_SIO, sio_handler ) ;
    __UNLOCK_EXCP() ;
    __SFRW(__EXCPL) |= siopcb->uhExcpMask ;
    __LOCK_EXCP() ;
    return siopcb ;
}
Exemplo n.º 3
0
/*
 *  プロセッサ依存の初期化
 */
void
cpu_initialize()
{
    	INHNO i;
    	EXCNO j;

    	/* 
    	 * 割込み擬似ベクタテーブル初期化
    	 *
    	 *  0で初期化して未登録扱いにしているので、
    	 *  割込み処理のICU依存部分PROC_ICUでは、
    	 *  未登録の場合の処理を入れておくこと
         */
    	for( i = 0; i < TMAX_INTNO; i++ ) {
        	define_inh( i, (FP)0 );
    	}

    	/* CPU例外擬似ベクタテーブル初期化 */
    	for( j = 0; j < TMAX_EXCNO; j++ ) {
        	define_exc( j, (FP)&no_reg_exception );
    	}
}