Annotation of researchv10dc/cmd/icon/setup/ridge/rswitch.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * This is the co-expression context switch for the Ridge 32 operating
                      3:  * under ROS 3.
                      4:  */
                      5: 
                      6: 
                      7: /*
                      8:  * coswitch
                      9:  */
                     10: coswitch(old_cs, new_cs, first)
                     11: int *old_cs, *new_cs;
                     12: int first;
                     13: {
                     14:    asm("  load r0,r15,24");            /* r0 = old_cs */
                     15:    asm("  load r1,r15,32");            /* r1 = new_cs */
                     16:    asm("  store r14,r0,0");            /* save sp in cstate[0] */
                     17:    asm("  store r15,r0,4");            /* save r5 (fp) in cstate[1] */
                     18:    asm("  store r6,r0,8");             /* save r6-r13 */
                     19:    asm("  store r7,r0,12");
                     20:    asm("  store r8,r0,16");
                     21:    asm("  store r9,r0,20");
                     22:    asm("  store r10,r0,24");
                     23:    asm("  store r11,r0,28");
                     24:    asm("  store r12,r0,32");
                     25:    asm("  store r13,r0,36");
                     26:    if (first == 0) { /* this is first activation */
                     27:       asm("  load r14,r1,0");
                     28:       asm("  laddr r14,r14,-40");
                     29:       asm("  sub r15,r15");
                     30:       interp(0, 0);
                     31:       syserr("interp() returned in coswitch");
                     32:       }
                     33:    else {
                     34:       asm("  load r14,r1,0");
                     35:       asm("  load r15,r1,4");
                     36:       asm("  load r6,r1,8");
                     37:       asm("  load r7,r1,12");
                     38:       asm("  load r8,r1,16");
                     39:       asm("  load r9,r1,20");
                     40:       asm("  load r10,r1,24");
                     41:       asm("  load r11,r1,28");
                     42:       asm("  load r12,r1,32");
                     43:       asm("  load r13,r1,36");
                     44:       }
                     45: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.