/* @(#)asm_sprt.h 2.0 5/31/94 */ #ifndef __ASM_SPRT_DEFINED #define __ASM_SPRT_DEFINED #define entry /* nothing */ #define leaf_entry /* nothing */ #ifdef __ADSP21020__ #define ccall(x) r2=i6; i6=i7; jump (pc, x) (db); dm(i7,m7)=r2; dm(i7,m7)=PC #define leaf_exit i12=dm(m7,i6); jump (m14,i12) (db); i7=i6; i6=dm(0,I6) #define exit leaf_exit #else #define ccall(x) cjump (x) (DB); dm(i7,m7)=r2; dm(i7,m7)=PC #define leaf_exit i12=dm(m7,i6); jump (m14,i12) (db); nop; RFRAME #define exit leaf_exit #endif #define reads(x) dm(x, i6) #define puts dm(i7, m7) #define gets(x) dm(x, i7) #define alter(x) modify(i7, x) #define save_reg puts=r0;\ puts=r1;\ puts=r2;\ puts=r3;\ puts=r4;\ puts=r5;\ puts=r6;\ puts=r7;\ puts=r8;\ puts=r9;\ puts=r10;\ puts=r11;\ puts=r12;\ puts=r13;\ puts=r14;\ puts=r15 #define restore_reg r15=gets(1);\ r14=gets(2);\ r13=gets(3);\ r12=gets(4);\ r11=gets(5);\ r10=gets(6);\ r9 =gets(7);\ r8 =gets(8);\ r7 =gets(9);\ r6 =gets(10);\ r5 =gets(11);\ r4 =gets(12);\ r3 =gets(13);\ r2 =gets(14);\ r1 =gets(15);\ r0 =gets(16);\ alter(16) #endif