/* This C language subroutine clears a specified interrupt in the IRPTL register. The Run Time Library for the C Language. Gordon A. Sterling (617) 461 - 3076 DSP Development Tools Engineering Created on 1/2/93 Updated by AS in 8/94 to save/restore mode1 #include
int clear_interrupt(int sig); */ #include "lib_glob.h" #include "sig_glob.h" .SEGMENT/CODE Code_Space_Name; .FILE RTL_FILENAME; .GLOBAL ___clear_interrupt020; ___clear_interrupt020: R0=___SIG_FIRST_INTERRUPT; /* Lowest supported interrupt*/ COMP(R4,R0), R2=MODE1; /*Hold initial state */ IF LT JUMP (PC, error_return); /* Bad interrupt number! */ R0=___SIG_LAST_HARDWARE_INT-1; /* Total number of hard ints */ COMP(R4,R0); IF GT JUMP (PC, error_return); /* Bad interrupt number! */ R12=1; R12=LSHIFT R12 BY R4; /* Place '1' at int number */ JUMP (PC, stop_ints_real) (DB); BIT CLR MODE1 0x1000; /* Disable all interrupts */ R4=NOT R12; /* Determine mask for IRPTL */ stop_ints_real: R8=IRPTL; /* Get latch register */ R0=R8 AND R12; /* Set return value */ R8=R8 AND R4, FETCH_RETURN /* Clear interrupt */ JUMP (PC, restore_state) (DB); IRPTL=R8; /* Restore IRPTL */ MODE1=R2; restore_state: RETURN (DB); RESTORE_STACK RESTORE_FRAME error_return: JUMP (PC, restore_state) (DB); R0=SIG_ERR; FETCH_RETURN .ENDSEG;