static DWORD Psp_IRQ_SystemTimer(PVOID StartContext) { while(1) { _asm cli m_TickCount++; /* increase tick count */ PspSetupTaskSWEnv(); /* task-switching */ WRITE_PORT_UCHAR((PUCHAR)0x20, 0x20); /* send EOI */ _asm iretd } return 0; }
//타이머 인터럽트 핸들러 함수 static DWORD Psp_IRQ_SystemTimer(PVOID StartContext) { while(1) { _asm cli m_TickCount++; PspSetupTaskSWEnv(); WRITE_PORT_UCHAR((PUCHAR)0x20, 0x20); _asm iretd } return 0; }
static DWORD PspSoftTaskSW(PVOID StartContext) { int cnt=0, pos=0; char *addr=(char *)TS_WATCHDOG_CLOCK_POS, status[] = {'-', '\\', '|', '/', '-', '\\', '|', '/'}; while(1) { _asm cli /* draw alalog watch-dog clock */ if(cnt++ >= TIMEOUT_PER_SECOND) { if(++pos > 7) pos = 0; cnt = 0; if(m_bShowTSWatchdogClock) *addr = status[pos]; } PspSetupTaskSWEnv(); _asm iretd } return 0; }