cpu_config.c

#include "fdmp_kernel.h"
#include "check.h"
#include "task.h"
#include <nios2.h>

cpu_config.cのインクルード依存関係図

ソースコードを見る。

関数

void cpu_initialize ()
void cpu_terminate ()
SYSCALL ER ena_int (INTNO intno)
SYSCALL ER dis_int (INTNO intno)
void no_reg_interrupt (void)
void no_reg_exception (void)
void int_handler_call ()
void exc_handler_call (VP p_excinf)

変数

FP int_handler_table [MAX_INT_NUM]
 プロセッサ依存モジュール(Nios2用)
UW int_bit_table [MAX_INT_NUM]
FP exc_handler_table [MAX_EXC_NUM]
UW interrupt_count = 1


関数

void cpu_initialize void   ) 
 

cpu_config.c68 行で定義されています。

参照先 int_bit_tableint_handler_tableMAX_INT_NUMno_reg_interrupt().

00069 {
00070     int i;
00071     
00072     /*
00073      * int_handler_table[],int_plevel_table[]の初期化
00074      * 未登録の割込み発生時にcpu_interrup()が呼び出されるように
00075      * no_reg_interrup()を登録する
00076      */
00077     for(i = 0; i < MAX_INT_NUM; i++){
00078         int_handler_table[i] = no_reg_interrupt;
00079         int_bit_table[i]  = 1 << i; /* ビットパターンの生成 */
00080     }
00081 
00082     /*
00083      *  CPU例外ハンドラテーブル
00084      */
00085     for(i = 0; i < MAX_EXC_NUM; i++){
00086         exc_handler_table[i] = no_reg_exception; 
00087     }
00088 }

関数の呼び出しグラフ:

void cpu_terminate void   ) 
 

cpu_config.c95 行で定義されています。

参照先 disint().

00096 {
00097     disint();
00098 }

関数の呼び出しグラフ:

SYSCALL ER dis_int INTNO  intno  ) 
 

cpu_config.c111 行で定義されています。

参照先 current_ienable()E_OKset_ienable().

参照元 sio_cls_por().

00111                     {
00112     set_ienable(~(1 << intno) & current_ienable());
00113     return(E_OK);
00114 }

関数の呼び出しグラフ:

SYSCALL ER ena_int INTNO  intno  ) 
 

cpu_config.c105 行で定義されています。

参照先 current_ienable()E_OKset_ienable().

参照元 hw_ipi_initialize()hw_timer_initialize()sio_opn_por().

00105                     {
00106     set_ienable((1 << intno) | current_ienable());
00107     return(E_OK);
00108 }

関数の呼び出しグラフ:

void exc_handler_call VP  p_excinf  ) 
 

cpu_config.c169 行で定義されています。

参照先 disint()enaint()exc_handler_tableinterrupt_count.

00169                              {
00170     interrupt_count++;
00171 
00172     enaint();
00173     (exc_handler_table[0])(p_excinf);
00174     disint();
00175     
00176     interrupt_count--;
00177 }

関数の呼び出しグラフ:

void int_handler_call  ) 
 

cpu_config.c141 行で定義されています。

参照先 current_ienable()current_ipending()disint()enaint()int_bit_tableint_handler_tableinterrupt_countset_ienable().

00141                   {
00142     UW status;
00143     UW mask;
00144     int i;
00145     
00146     interrupt_count++;
00147     status = current_ipending();
00148     for(i = 0; i < 32; i++){
00149         if((status & (1 << i)) != 0x00){
00150             mask = current_ienable();
00151             set_ienable(~int_bit_table[i] & mask);
00152             
00153             enaint();
00154             (int_handler_table[i])();
00155             disint();
00156             
00157             set_ienable(mask);
00158             break;
00159         }
00160     }
00161     interrupt_count--;
00162 }

関数の呼び出しグラフ:

void no_reg_exception void   ) 
 

cpu_config.c131 行で定義されています。

参照先 LOG_EMERGsyslog().

00132 {
00133     syslog(LOG_EMERG, "Unregisted Exception Occur!");
00134     while(1);
00135 }

関数の呼び出しグラフ:

void no_reg_interrupt void   ) 
 

cpu_config.c121 行で定義されています。

参照先 LOG_EMERGsyslog().

参照元 cpu_initialize().

00122 {
00123     syslog(LOG_EMERG, "Unregisted Interrupt Occur!");
00124     while(1);
00125 }

関数の呼び出しグラフ:


変数

FP exc_handler_table[MAX_EXC_NUM]
 

cpu_config.c56 行で定義されています。

UW int_bit_table[MAX_INT_NUM]
 

cpu_config.c51 行で定義されています。

参照元 cpu_initialize()int_handler_call().

FP int_handler_table[MAX_INT_NUM]
 

プロセッサ依存モジュール(Nios2用)

cpu_config.c50 行で定義されています。

UW interrupt_count = 1
 

cpu_config.c62 行で定義されています。


Copyright © 2006 by TAKAGI Nobuhisa.
このページは Mon Apr 3 23:49:13 2006 に Doxygen によって生成されました。