|
|
1.1 root 1: /* syscall.c 4.2 83/06/27 */
2:
3: #include "SYS.h"
4:
5: ENTRY(syscall)
1.1.1.2 ! root 6: pushl 4(fp) # syscall number
! 7: movl fp,r0 # point to the arg list
! 8: movl -4(fp),r1 # (arg_count + 1) (bytes) | mask
! 9: andl2 $0xFFFF,r1 # clear the mask bits
! 10: shrl $2,r1,r1 # convert to words
! 11: subl2 $2,r1 # don't count the first arg
! 12: 1:
! 13: addl2 $4,r0 # point to the next arg
! 14: movl 4(r0),(r0) # move an arg down
! 15: decl r1 # count it
! 16: jgtr 1b # any more?
! 17: movl (sp)+,r0 # no, get the syscall number back
1.1 root 18: kcall r0
19: jcs 1f
20: ret
21: 1:
22: jmp cerror
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.