⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ictrl.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
字号:
/* * mpc505/509 external interrupt controller management. */#include "ictrl.h"#include <rtems.h>#include <rtems/score/ppc.h>/* * Internal routines. */static unsigned long volatile *const IRQAND     =              (unsigned long volatile *const)0x8007EFA4;static void nullHandler(){}/* Interrupt dispatch table. */static ExtIsrHandler extIrqHandlers[NUM_IRQS] ={  nullHandler,  nullHandler,  nullHandler,  nullHandler,  nullHandler,  nullHandler,  nullHandler};/* RTEMS external interrupt handler. Calls installed external interrupt   handlers for every pending external interrupt in turn. */static rtems_isr extIsr_( rtems_vector_number i ){#define BIT_NUMBER(val, bit) \    asm volatile ( "cntlzw %0, %1; srawi %0, %0, 1": "=r" (bit) : "r" (val) );  int bit;  (void)i;  BIT_NUMBER(*IRQAND & IMASK_ALL, bit);  while ( bit < NUM_IRQS ) {    extIrqHandlers[bit]();    BIT_NUMBER(*IRQAND & IMASK_ALL, bit);  }}/* * Public routines */void extIrqSetHandler(ExtInt interrupt,ExtIsrHandler handler){  extIrqHandlers[interrupt] = handler;}void extIsrInit( void ){  int i = 0;  extIrqDisable(IMASK_ALL);  for( i = 0; i < NUM_IRQS; i++)    extIrqHandlers[i] = nullHandler;  set_vector(extIsr_,PPC_IRQ_EXTERNAL,1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -