/* Abkuerzungen und Aliases fuer FORK-Compilat */ /* (c) 1994 C.W. Kesser, last modified 940726  */ 

#define sr  0
#define R0  r0
#define pc  r1
/*      sp  r2   * system stackpointer */
#define fpp r3  /* framepointer, private*/
#define app r4  /* argument pointer, private*/
#define Ret r5  /* return values + multipurpose*/
#define spp r6    /* stackpointer, private*/
#define par1 r7   /*first parameter register*/
#define par2 r8   /*secnd parameter register*/
#define par3 r9   /*third parameter register*/
#define par4 r10  /* fourth parameter register*/
/*do not change numbers for par1,...,par4      *
 *without also changing the numbers in config.h*/
#define epp r11  /* end pointer, private*/
/*Registers r3,r5,r6,r7...r10,r11 are compatible*
 *with the register set used by pgcc.           */
#define sps r12 /* stackpointer, shared*/
#define fps r13 /* framepointer, shared*/
#define eps r14 /* end pointer, shared*/
#define gpp r15 /* group pointer, private*/
#define gps r16 /* group pointer, shared*/
#define aps r17 /* argument pointer, shared*/

/*Registers 18,...,31 are general-purpose    *
 *registers, allocatable by the FORK compiler*/

#define return popg spp,pc

#define SHADOW (1<<12)    /* Bit 12 im Statusregister ist SHADOW */

#define SYSCALL_READ 1    /* Codes in Ret bei SYSC */
#define SYSCALL_WRITE 2
#define SYSCALL_OPEN 0
#define SYSCALL_CLOSE 3
#define SYSCALL_EXIT 8

/* IBP - Debuggerbreakpoints, as required by J. Gierend, Univ. of SB: */
#define ibp0_0 getlo 1,R0    /* enter while loopgroup */
#define ibp0_1 getlo 2,R0    /* enter for loopgroup */
#define ibp0_2 getlo 3,R0    /* enter do loopgroup */
#define ibp0_true getlo 4,R0    /* iteration condition evaluated to true */
#define ibp1_true getlo 5,R0    /* begin true-branch of if statement */
#define ibp1_false getlo 6,R0    /* begin false-branch of if statement */
#define ibp2 getlo 7,R0    /* fork statement, group frames just completed */
#define ibp3 getlo 8,R0    /* start statement, parameter in *(spp-1) */
#define ibp_3 getlo 9,R0    /* start statement without parameter */
#define ibp4 getlo 10,R0    /* group exit just finished, frames removed */
#define ibp5 getlo 11,R0    /* --- (not used) */
#define ibp6 getlo 12,R0    /* return from function, frames removed */
#define ibp7 getlo 13,R0    /* begin of farm body */
#define ibp8 getlo 14,R0    /* end of farm body, after synchronization */
#define ibp9_0 getlo 15,R0    /* enter synchronous function, all frames completed */
#define ibp9_1 getlo 16,R0    /* enter asynchronous function, '' */
#define ibp10 getlo 17,R0    /* immediately before return from function,
                              * all frames removed (except for app/aps parameters)*/
#define ibp0_false getlo 18,R0 /*leaving the loop group*/
