// $RCSfile: asm.s,v $Revision: 1.4 $Date: 2005/03/11 15:08:57 //! Contains all assembler functions #include "macro.h" #include "def21020.h" /*------------------------------------------------------------------------------------------------------------- isr0 (irq0) ---------------------------------------------------------------------------------------------------------------*/ .segment /pm seg_pmco; .extern _KArgsP; .extern _Hs_event; .global _isr0; /*--------------------------------------------------------------- Funct description: this ISR handles the incoming IRQ0 and sets the event 51 ---------------------------------------------------------------*/ _isr0: START_ISR; bit clr IMASK 0x0100; i4 = dm(_K_ArgsP); r2 = dm(_Hs_event); PRHI_STACK_PSH; ENDISR1; .endseg; /*------------------------------------------------------------------------------------------------------------- isr3 (irq3) VM ---------------------------------------------------------------------------------------------------------------*/ .segment /pm seg_pmco; .extern _KArgsP; .extern _send_HR_timer; .global _irq3; /*--------------------------------------------------------------- Funct description: this ISR handles the incoming IRQ3 and calls the VM routine ---------------------------------------------------------------*/ _irq3: START_ISR; // Da qui in poi: //----> save extra CFREE reg r0=m4; dm(i7,m7)=r0; dm(i7,m7)=m12; dm(i7,m7)=i13; //----> initialise argument list r4=123; //----> call C funct r2=i6; // hold old frame c tools man pg 4.9 i6=i7; jump (PC,_vm) (db); dm(i7,m7)=r2; dm(i7,m7)=PC; // ret value in r0 (ignored //----> pop extra CFREE reg i13=dm(1,i7); m12=dm(2,i7); m4=dm(3,i7); modify(i7,3); //----> end isr ENDISR1; ENDISR1; .endseg;