diff options
Diffstat (limited to 'config/hurd/rswitch.c')
-rw-r--r-- | config/hurd/rswitch.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/config/hurd/rswitch.c b/config/hurd/rswitch.c new file mode 100644 index 0000000..4a9def0 --- /dev/null +++ b/config/hurd/rswitch.c @@ -0,0 +1,27 @@ +/* + * This is the co-expression context switch for the GNU system. + */ + +/* + * coswitch + */ + +coswitch(old_cs, new_cs, first) +int *old_cs, *new_cs; +int first; + { + asm(" movl 8(%ebp),%eax"); + asm(" movl %esp,0(%eax)"); + asm(" movl %ebp,4(%eax)"); + asm(" movl 12(%ebp),%eax"); + if (first == 0) { /* this is the first activation */ + asm(" movl 0(%eax),%esp"); + asm(" movl $0,%ebp"); + new_context(0, 0); + syserr("interp() returned in coswitch"); + } + else { + asm(" movl 0(%eax),%esp"); + asm(" movl 4(%eax),%ebp"); + } + } |