|
|
1.1 ! root 1: /* ! 2: * This is the co-expression context switch for the Sun Workstation ! 3: * operating under Berkley 4.2bsd UNIX. ! 4: */ ! 5: ! 6: /* ! 7: * coswitch ! 8: */ ! 9: coswitch(old_cs, new_cs, first) ! 10: int *old_cs, *new_cs; ! 11: int first; ! 12: { ! 13: asm(" movl a6@(8),a0"); /* a0 = old */ ! 14: asm(" movl a6@(12),a1"); /* a1 = new */ ! 15: asm(" movl a7,a0@"); /* save sp in cstate[0] */ ! 16: asm(" movl a6,a0@(4)"); /* save a6 (fp) in cstate[0] */ ! 17: asm(" moveml #0x3cfc,a0@(8)"); /* store d2-d7, a2-a6 in old->cstate */ ! 18: if (first == 0) { /* this is first activation */ ! 19: asm(" movl a1@,a7"); ! 20: asm(" movl #0,a6"); ! 21: interp(0, 0); ! 22: syserr("interp() returned in coswitch"); ! 23: } ! 24: else { ! 25: asm(" movl a1@,a7"); /* restore sp */ ! 26: asm(" movl a1@(4),a6"); /* restore fp */ ! 27: asm(" moveml a1@(8),#0x3cfc"); /* restore d2-d7, a2-a6 */ ! 28: } ! 29: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.