home *** CD-ROM | disk | FTP | other *** search
- /*
- * $Log: osbind.h,v $
- * Revision 1.2 89/03/08 22:18:03 bammi
- * Many hacks etc. Version as distributed with gcc V1.34
- *
- *
- */
-
- /*
- * OSBIND.H Mnemonic names for operating system calls
- *
- * Adapted from Dale Schumacher's version to Mark Johnson C by Eric Gisin.
- */
-
- /* hacked by jrd for GNU */
-
- /*
- * more hacks
- * inline the traps
- *
- * ++jrb bammi@dsrgsun.ces.cwru.edu
- */
- #ifdef __STDC__
- #ifndef __NO_PROTO__
- static long trap_1_w(short);
- static long trap_1_ww(short, short);
- static long trap_1_wl(short, long);
- static long trap_1_wlw(short, long, short);
- static long trap_1_wwll(short, short, long, long);
- static long trap_1_wlww(short, long, short, short);
- static long trap_1_www(short, short, short);
- static long trap_1_wll(short, long, long);
- static long trap_1_wwlll(short, short, long, long, long);
- static long trap_13_wl(short, long);
- static long trap_13_w(short);
- static long trap_13_ww(short, short);
- static long trap_13_www(short, short, short);
- static long trap_13_wwlwww(short, short, long, short, short, short);
- static long trap_13_wwl(short, short, long);
- static long trap_14_wwll(short, short, long, long);
- static long trap_14_ww(short, short);
- static long trap_14_w(short);
- static long trap_14_wllw(short, long, long, short);
- static long trap_14_wl(short, long);
- static long trap_14_www(short, short, short);
- static long trap_14_wllwwwww(short, long, long, short, short, short, short, short);
- static long trap_14_wllwwwwlw(short, long, long, short, short, short, short, long, short);
- static long trap_14_wwwwwww(short, short, short, short, short, short, short);
- static long trap_14_wlll(short, long, long, long);
- static long trap_14_wllww(short, long, long, short, short);
- static long trap_14_wwwwl(short, short, short, short, long);
- #endif
- #endif
-
- /*
- * GEMDOS (trap1)
- */
- #define Pterm0() \
- (void)trap_1_w((short)(0x00))
- #define Cconin() \
- (long)trap_1_w((short)(0x01))
- #define Cconout(c) \
- (void)trap_1_ww((short)(0x02),(short)(c))
- #define Cauxin() \
- (short)trap_1_w((short)(0x03))
- #define Cauxout(c) \
- (void)trap_1_ww((short)(0x04),(short)(c))
- #define Cprnout(c) \
- (void)trap_1_ww((short)(0x05),(short)(c))
- #define Crawio(data) \
- (long)trap_1_ww((short)(0x06),(short)(data))
- #define Crawcin() \
- (long)trap_1_w((short)(0x07))
- #define Cnecin() \
- (long)trap_1_w((short)(0x08))
- #define Cconws(s) \
- (void)trap_1_wl((short)(0x09),(char *)(s))
- #define Cconrs(buf) \
- (void)trap_1_wl((short)(0x0A),(char *)(buf))
- #define Cconis() \
- (short)trap_1_w((short)(0x0B))
- #define Dsetdrv(d) \
- (long)trap_1_ww((short)(0x0E),(short)(d))
- #define Cconos() \
- (short)trap_1_w((short)(0x10))
- #define Cprnos() \
- (short)trap_1_w((short)(0x11))
- #define Cauxis() \
- (short)trap_1_w((short)(0x12))
- #define Cauxos() \
- (short)trap_1_w((short)(0x13))
- #define Dgetdrv() \
- (short)trap_1_w((short)(0x19))
- #define Fsetdta(dta) \
- (void)trap_1_wl((short)(0x1A),(void *)(dta))
- #define Super(ptr) \
- (long)trap_1_wl((short)(0x20),(void *)(ptr))
- #define Tgetdate() \
- (short)trap_1_w((short)(0x2A))
- #define Tsetdate(date) \
- (short)trap_1_ww((short)(0x2B),(short)(date))
- #define Tgettime() \
- (short)trap_1_w((short)(0x2C))
- #define Tsettime(time) \
- (short)trap_1_ww((short)(0x2D),(short)(time))
- #define Fgetdta() \
- (long)trap_1_w((short)(0x2F))
- #define Sversion() \
- (short)trap_1_w((short)(0x30))
- #define Ptermres(save,rv) \
- (void)trap_1_wlw((short)(0x31),(long)(save),(short)(rv))
- #define Dfree(buf,d) \
- (void)trap_1_wlw((short)(0x36),(void *)(buf),(short)(d))
- #define Dcreate(path) \
- (short)trap_1_wl((short)(0x39),(char *)(path))
- #define Ddelete(path) \
- (short)trap_1_wl((short)(0x3A),(char *)(path))
- #define Dsetpath(path) \
- (short)trap_1_wl((short)(0x3B),(char *)(path))
- #define Fcreate(fn,mode) \
- (short)trap_1_wlw((short)(0x3C),(char *)(fn),(short)(mode))
- #define Fopen(fn,mode) \
- (short)trap_1_wlw((short)(0x3D),(char *)(fn),(short)(mode))
- #define Fclose(handle) \
- (short)trap_1_ww((short)(0x3E),(short)(handle))
- #define Fread(handle,cnt,buf) \
- (long)trap_1_wwll((short)(0x3F),(short)(handle), \
- (long)(cnt),(char *)(buf))
- #define Fwrite(handle,cnt,buf) \
- (long)trap_1_wwll((short)(0x40),(short)(handle), \
- (long)(cnt),(char *)(buf))
- #define Fdelete(fn) \
- (short)trap_1_wl((short)(0x41),(char *)(fn))
- #define Fseek(where,handle,how) \
- (long)trap_1_wlww((short)(0x42),(long)(where), \
- (short)(handle),(short)(how))
- #define Fattrib(fn,rwflag,attr) \
- (short)trap_1_wlww((short)(0x43),(char *)(fn), \
- (short)(rwflag),(short)(attr))
- #define Fdup(handle) \
- (short)trap_1_ww((short)(0x45),(short)(handle))
- #define Fforce(Hstd,Hnew) \
- (short)trap_1_www((short)(0x46),(short)(Hstd),(short)(Hnew))
- #define Dgetpath(buf,d) \
- (void)trap_1_wlw((short)(0x47),(char *)(buf),(short)(d))
- #define Malloc(size) \
- (long)trap_1_wl((short)(0x48),(long)(size))
- #define Mfree(ptr) \
- (short)trap_1_wl((short)(0x49),(void *)(ptr))
- #define Mshrink(ptr,size) \
- (short)trap_1_wll((short)(0x4A),(short)0,(void *)(ptr),(long)(size))
- #define Pexec(mode,prog,tail,env) \
- (short)trap_1_wwlll((short)(0x4B),(short)(mode),(char *)(prog), \
- (char *)(tail),(char *)(env))
- #define Pterm(rv) \
- (void)trap_1_ww((short)(0x4C),(short)(rv))
- #define Fsfirst(filespec,attr) \
- (short)trap_1_wlw((short)(0x4E),(char *)(filespec),(short)(attr))
- #define Fsnext() \
- (short)trap_1_w((short)(0x4F))
- #define Frename(zero,old,new) \
- (short)trap_1_wwll((short)(0x56),(short)(zero), \
- (char *)(old),(char *)(new))
- #define Fdatime(timeptr,handle,rwflag) \
- (void)trap_1_wlww((short)(0x57),(long)(timeptr), \
- (short)(handle),(short)(rwflag))
-
-
- /* codes for Pexec */
-
- #define PE_LOADGO 0 /* load & go */
- #define PE_LOAD 1 /* just load */
- #define PE_CBASEPAGE 2 /* just create basepage */
- #define PE_GO 3 /* just go */
-
-
- /*
- * BIOS (trap13)
- */
- #define Getmpb(ptr) \
- (void)trap_13_wl((short)(0x00),(void *)(ptr))
- #define Bconstat(dev) \
- (short)trap_13_ww((short)(0x01),(short)(dev))
- #define Bconin(dev) \
- (long)trap_13_ww((short)(0x02),(short)(dev))
- #define Bconout(dev,c) \
- (void)trap_13_www((short)(0x03),(short)(dev),(short)((c) & 0xFF))
- #define Rwabs(rwflag,buf,n,sector,d) \
- (short)trap_13_wwlwww((short)(0x04),(short)(rwflag),(void *)(buf), \
- (short)(n),(short)(sector),(short)(d))
- #define Setexc(vnum,vptr) \
- (void (*)())trap_13_wwl((short)(0x05),(short)(vnum),(void (*)())(vptr))
- #define Tickcal() \
- (long)trap_13_w((short)(0x06))
- #define Getbpb(d) \
- (void *)trap_13_w((short)(0x07),(short)(d))
- #define Bcostat(dev) \
- (short)trap_13_ww((short)(0x08),(short)(dev))
- #define Mediach(dev) \
- (short)trap_13_ww((short)(0x09),(short)(dev))
- #define Drvmap() \
- (long)trap_13_w((short)(0x0A))
- #define Getshift() \
- (short)trap_13_w((short)(0x0B))
-
- #if 0 /* huh ? */
- #define Kbshift(data) \
- trap_13_ww((short)(0x0B),(short)(data))
- #endif
-
-
- /*
- * XBIOS (trap14)
- */
-
- #define Initmous(type,param,vptr) \
- (void)trap_14_wwll((short)(0x00),(short)(type), \
- (void *)(param),(void *)(vptr))
- #define Ssbrk(size) \
- (void *)trap_14_ww((short)(0x01),(short)(size))
- #define Physbase() \
- (void *)trap_14_w((short)(0x02))
- #define Logbase() \
- (void *)trap_14_w((short)(0x03))
- #define Getrez() \
- (short)trap_14_w((short)(0x04))
- #define Setscreen(lscrn,pscrn,rez) \
- (void)trap_14_wllw((short)(0x05),(void *)(lscrn),(void *)(pscrn), \
- (short)(rez))
- #define Setpallete(palptr) \
- (void)trap_14_wl((short)(0x06),(void *)(palptr))
- #define Setcolor(colornum,mixture) \
- (short)trap_14_www((short)(0x07),(short)(colornum),(short)(mixture))
- #define Floprd(buf,x,d,sect,trk,side,n) \
- (short)trap_14_wllwwwww((short)(0x08),(void *)(buf),(long)(x), \
- (short)(d),(short)(sect),(short)(trk),(short)(side),(short)(n))
- #define Flopwr(buf,x,d,sect,trk,side,n) \
- (short)trap_14_wllwwwww((short)(0x09),(void *)(buf),(long)(x), \
- (short)(d),(short)(sect),(short)(trk),(short)(side),(short)(n))
- #define Flopfmt(buf,x,d,spt,sd,i,m,v) \
- (void *)trap_14_wllwwwwlw((short)(0x0A),(void *)(buf),(long)(x), \
- (short)(d),(short)(spt),(short)(sd),(short)(i),(long)(m),(short)(v))
- #define Midiws(cnt,ptr) \
- (void)trap_14_wwl((short)(0x0C),(short)(cnt),(void *)(ptr))
- #define Mfpint(vnum,vptr) \
- (void)trap_14_wwl((short)(0x0D),(short)(vnum),(void (*)())(vptr))
- #define Iorec(ioDEV) \
- (void *)trap_14_ww((short)(0x0E),(short)(ioDEV))
- #define Rsconf(baud,flow,uc,rs,ts,sc) \
- (void)trap_14_wwwwwww((short)(0x0F),(short)(baud),(short)(flow), \
- (short)(uc),(short)(rs),(short)(ts),(short)(sc))
- #define Keytbl(nrml,shft,caps) \
- (void *)trap_14_wlll((short)(0x10),(void *)(nrml), \
- (void *)(shft),(void *)(caps))
- #define Random() \
- (long)trap_14_w((short)(0x11))
- #define Protobt(buf,serial,dsktyp,exec) \
- (void)trap_14_wllww((short)(0x12),(void *)(buf),(long)(serial), \
- (short)(dsktyp),(short)(exec))
- #define Flopver(buf,x,d,sect,trk,sd,n) \
- (void)trap_wllwwwww((short)(0x13),(void *)(buf),(long)(x),(short)(d), \
- (short)(sect),(short)(trk),(short)(sd),(short)(n))
- #define Scrdmp() \
- (void)trap_14_w((short)(0x14))
- #define Cursconf(rate,attr) \
- (short)trap_14_www((short)(0x15),(short)(rate),(short)(attr))
- #define Settime(time) \
- (void)trap_14_wl((short)(0x16),(long)(time))
- #define Gettime() \
- (long)trap_14_w((short)(0x17))
- #define Bioskeys() \
- (void)trap_14_w((short)(0x18))
- #define Ikbdws(len_minus1,ptr) \
- (void)trap_14_wwl((short)(0x19),(short)(len_minus1),(void *)(ptr))
- #define Jdisint(vnum) \
- (void)trap_14_ww((short)(0x1A),(short)(vnum))
- #define Jenabint(vnum) \
- (void)trap_14_ww((short)(0x1B),(short)(vnum))
- #define Giaccess(data,reg) \
- (short)trap_14_www((short)(0x1C),(short)(data),(short)(reg))
- #define Offgibit(ormask) \
- (void)trap_14_ww((short)(0x1D),(short)(ormask))
- #define Ongibit(andmask) \
- (void)trap_14_ww((short)(0x1E),(short)(andmask))
- #define Xbtimer(timer,ctrl,data,vptr) \
- (void)trap_14_wwwwl((short)(0x1E),(short)(timer),(short)(ctrl), \
- (short)(data),(void (*)())(vptr))
- #define Dosound(ptr) \
- (void)trap_14_wl((short)(0x20),(void *)(ptr))
- #define Setprt(config) \
- (short)trap_14_ww((short)(0x21),(short)(config))
- #define Kbdvbase() \
- (void (**)())trap_14_w((short)(0x22))
- #define Kbrate(delay,reprate) \
- (short)trap_14_www((short)(0x23),(short)(delay),(short)(reprate))
- #define Prtblk(pblkptr) \
- (void)trap_14_wl((short)(0x24),(void *)(pblkptr)) /* obsolete ? */
- #define Vsync() \
- (void)trap_14_w((short)(0x25))
- #define Supexec(funcptr) \
- (void)trap_14_wl((short)(0x26),(void (*)())(funcptr))
-
- /*
- * functions
- *
- */
- static inline long trap_1_w(short n)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %1,sp@-; \
- trap #1; \
- addqw #2,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_1_ww(short n, short a)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #1; \
- addqw #4,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
- static inline long trap_1_wl(short n, long a)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #1; \
- addqw #6,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_1_wlw(short n, long a, short b)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #1; \
- addqw #8,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_1_wwll(short n, short a, long b, long c)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %4,sp@-; \
- movl %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #1; \
- addw #12,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b), "g"(c) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_1_wlww(short n, long a, short b, short c)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %4,sp@-; \
- movw %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #1; \
- addw #10,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b), "g"(c) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_1_www(short n, short a, short b)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #1; \
- addqw #6,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_1_wll(short n, long a, long b)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #1; \
- addw #10,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_1_wwlll(short n, short a, long b, long c, long d)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %4,sp@-; \
- movl %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- movw %0,sp@-; "
- : /* outputs */
- : "g"(n), "g"(a), "g"(b), "g"(c), "g"(d) /* inputs */
- );
- /* no more than 5 operand allowed in asm() -- therefore the split */
-
- asm volatile
- ("\
- trap #1; \
- addw #16,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_13_wl(short n, long a)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #13; \
- addqw #6,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
- static inline long trap_13_w(short n)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %1,sp@-; \
- trap #13; \
- addqw #2,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_13_ww(short n, short a)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #13; \
- addqw #4,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_13_www(short n, short a, short c)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #13; \
- addqw #6,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(c) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
- static inline long trap_13_wwlwww(short n, short a, long c, short d,
- short e, short f)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %4,sp@-; \
- movw %3,sp@-; \
- movw %2,sp@-; \
- movl %1,sp@-; \
- movw %0,sp@- "
- : /* outputs */
- : "g"(a), "g"(c), "g"(d), "g"(e), "g"(f) /* inputs */
- );
-
- asm volatile
- ("\
- movw %1,sp@-; \
- trap #13; \
- addw #14,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
-
- return retvalue;
- }
-
- static inline long trap_13_wwl(short n, short a, long c)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #13; \
- addqw #8,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(c) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wwll(short n, short a, long c, long d)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %4,sp@-; \
- movl %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addw #12,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(c), "g"(d) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
- static inline long trap_14_ww(short n, short a)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addqw #4,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
- static inline long trap_14_w(short n)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %1,sp@-; \
- trap #14; \
- addqw #2,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wllw(short n, long a, long c, short d)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %4,sp@-; \
- movl %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addw #12,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(c), "g"(d) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wl(short n, long a)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addqw #6,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_www(short n, short a, short c)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addqw #6,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(c) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wllwwwww(short n, long a, long b, short c,
- short d, short e, short f, short g)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %4,sp@-; \
- movw %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- movw %0,sp@- "
- : /* outputs */
- : "g"(c), "g"(d), "g"(e), "g"(f), "g"(g) /* inputs */
- );
-
- asm volatile
- ("\
- movl %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addw #20,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wllwwwwlw(short n, long a, long b, short c,
- short d, short e, short f, long g,
- short h)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %4,sp@-; \
- movl %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- movw %0,sp@-; "
- : /* outputs */
- : "g"(d), "g"(e), "g"(f), "g"(g), "g"(h) /* inputs */
- );
-
- asm volatile
- ("\
- movw %4,sp@-; \
- movl %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addw #24,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b), "g"(c) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wwwwwww(short n, short a, short b, short c,
- short d, short e, short f)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %4,sp@-; \
- movw %3,sp@-; \
- movw %2,sp@-; \
- movw %1,sp@-; \
- movw %0,sp@-; "
- : /* outputs */
- : "g"(b), "g"(c),
- "g"(d), "g"(e), "g"(f) /* inputs */
- );
-
- asm volatile
- ("\
- movw %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addw #14,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
- static inline long trap_14_wlll(short n, long a, long b, long c)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %4,sp@-; \
- movl %3,sp@-; \
- movl %2,sp@-; \
- movw %1,sp@-; \
- trap #14; \
- addw #14,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n), "g"(a), "g"(b), "g"(c) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wllww(short n, long a, long b, short c,
- short d)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movw %3,sp@-; \
- movw %2,sp@-; \
- movl %1,sp@-; \
- movl %0,sp@-; "
- : /* outputs */
- : "g"(a), "g"(b), "g"(c), "g"(d) /* inputs */
- );
-
- asm volatile
- ("\
- movw %1,sp@-; \
- trap #14; \
- addw #14,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-
-
- static inline long trap_14_wwwwl(short n, short a, short b, short c,
- long d)
- {
- register long retvalue;
-
- asm volatile
- ("\
- movl %5,sp@-; \
- movw %4,sp@-; \
- movw %3,sp@-; \
- movw %2,sp@-; "
- : /* outputs */
- : "g"(a), "g"(b), "g"(c), "g"(d) /* inputs */
- );
-
- asm volatile
- ("\
- movw %1,sp@-; \
- trap #14; \
- addw #12,sp; \
- movl d0,%0"
- : "=r"(retvalue) /* outputs */
- : "g"(n) /* inputs */
- : "d0", "d1", "d2", "a0", "a1", "a2" /* clobbered regs */
- );
- return retvalue;
- }
-