xref: /minix/minix/lib/libc/arch/arm/sys/_ipc.S (revision 7f5f010b)
1#include <minix/ipcconst.h>
2#include <machine/asm.h>
3
4/**========================================================================* */
5/*                           IPC assembly routines			  * */
6/**========================================================================* */
7ENTRY(_ipc_send_intr)
8	push	{fp}
9	mov	fp, sp
10	mov	r2, r1       /* r2 = msg ptr */
11	mov	r1, r0       /* r1 = src_dest */
12	mov	r0, #SEND    /* _ipc_send(dest, ptr) */
13	mov	r3, #IPCVEC_INTR  /* r3 determines the SVC type */
14	svc	#0           /* trap to kernel */
15	pop	{fp}
16	bx	lr
17
18ENTRY(_ipc_receive_intr)
19	push	{fp}
20	mov	fp, sp
21	push	{r2}         /* save status ptr */
22	mov	r2, r1       /* r2 = msg ptr */
23	mov	r1, r0       /* r1 = src_dest */
24	mov	r0, #RECEIVE /* _ipc_receive(src, ptr) */
25	mov	r3, #IPCVEC_INTR  /* r3 determines the SVC type */
26	svc	#0           /* trap to kernel */
27	pop	{r2}         /* restore status ptr */
28	str	r1, [r2]
29	pop	{fp}
30	bx	lr
31
32ENTRY(_ipc_sendrec_intr)
33	push	{fp}
34	mov	fp, sp
35	mov	r2, r1       /* r2 = msg ptr */
36	mov	r1, r0       /* r1 = src_dest */
37	mov	r0, #SENDREC /* _ipc_sendrec(srcdest, ptr) */
38	mov	r3, #IPCVEC_INTR  /* r3 determines the SVC type */
39	svc	#0           /* trap to kernel */
40	pop	{fp}
41	bx	lr
42
43ENTRY(_ipc_notify_intr)
44	push	{fp}
45	mov	fp, sp
46	mov	r1, r0       /* r1 = src_dest */
47	mov	r0, #NOTIFY  /* _ipc_notify(srcdst) */
48	mov	r3, #IPCVEC_INTR  /* r3 determines the SVC type */
49	svc	#0           /* trap to kernel */
50	pop	{fp}
51	bx	lr
52
53ENTRY(_ipc_sendnb_intr)
54	push	{fp}
55	mov	fp, sp
56	mov	r2, r1       /* r2 = msg ptr */
57	mov	r1, r0       /* r1 = src_dest */
58	mov	r0, #SENDNB  /* _ipc_sendnb(dest, ptr) */
59	mov	r3, #IPCVEC_INTR  /* r3 determines the SVC type */
60	svc	#0           /* trap to kernel */
61	pop	{fp}
62	bx	lr
63
64ENTRY(_ipc_senda_intr)
65	push	{fp}
66	mov	fp, sp
67	mov	r2, r0       /* r2 = table */
68	/* r1 already holds count */
69	mov	r0, #SENDA   /* _ipc_senda(table, count) */
70	mov	r3, #IPCVEC_INTR  /* r3 determines the SVC type */
71	svc	#0           /* trap to kernel */
72	pop	{fp}
73	bx	lr
74
75