summaryrefslogtreecommitdiff
path: root/mit-pthreads/machdep/syscall-m68000-netbsd.S
blob: f36286770a2d677d2fda06f7232c32d90e060de5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

#ifndef lint
    .text
    .asciz "$Id$";
#endif

#include <machine/asm.h>
#include <sys/syscall.h>

#ifdef __STDC__
#define IMM	#
#define SYSCALL(x)      .even; ENTRY(machdep_sys_ ## x); \
                        movl IMM SYS_ ## x,d0; trap IMM 0; jcs err; rts
#else /* !__STDC__ */
#define SYSCALL(x)      .even; ENTRY(machdep_sys_/**/x); \
                        movl #SYS_/**/x,d0; trap #0; jcs err; rts
#endif /* !__STDC__ */

/*
 * Initial asm stuff for all functions.
 */
        .text
        .even


/* ==========================================================================
 * error code for all syscalls. The error value is returned as the negative
 * of the errno value.
 */

err:
        negl            d0
        rts

/* ==========================================================================
 * machdep_sys_pipe
 */
	.even
ENTRY(machdep_sys_pipe);
	movl #SYS_pipe,d0
	trap #0
	jcs 	err
	movl	sp@(4),a0
	movl	d0,a0@+
	movl	d1,a0@
	clrl	d0
	rts

#ifndef SYS___sigsuspend14
	.even
ENTRY(machdep_sys_sigsuspend)
	movl	sp@(4),a0
	movl	a0@,sp@(4)
	movl	#SYS_compat_13_sigsuspend13,d0
	trap	#0
	jcs	err
	clrl	d0
	rts
#endif

#ifndef SYS___sigprocmask14
	.even
ENTRY(machdep_sys_sigprocmask)
	tstl	sp@(8)
	jne	gotptr
/*	movl	#0,sp@(8)	/* null mask pointer; block empty set */
	movl	#1,sp@(4)	
	jra	doit
gotptr:
	movl	sp@(8),a0
	movl	a0@,sp@(8)
doit:
	movl	#SYS_compat_13_sigprocmask13,d0
	trap	#0
	jcs	err
	tstl	sp@(12)
	jeq	out
	movl	sp@(12),a0
	movl	d0,a0@
out:
	clrl	d0
	rts
#endif