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