]> Zhao Yanbai Git Server - minix.git/commitdiff
Added sendnb and senda, removed echo and _ipcnew.s.
authorPhilip Homburg <philip@cs.vu.nl>
Mon, 23 Apr 2007 12:11:03 +0000 (12:11 +0000)
committerPhilip Homburg <philip@cs.vu.nl>
Mon, 23 Apr 2007 12:11:03 +0000 (12:11 +0000)
lib/i386/rts/Makefile.in
lib/i386/rts/_ipc.s
lib/i386/rts/_ipcnew.s [deleted file]

index fbe62872cc30ee4c8d41f01eca73db787912685a..979dc8faa05beed2d50294afa4cce18f2a22a039 100644 (file)
@@ -7,7 +7,6 @@ LIBRARIES=libc
 libc_FILES=" \
        __sigreturn.s \
        _ipc.s \
-       _ipcnew.s \
        brksize.s"
        
 STARTFILES="\
index 80a32bcd9d096c2e79448c83dbf8dc57121989a0..4c60c7451bf2c0b3a8cd5765c02b4f94fbb511b7 100755 (executable)
@@ -1,23 +1,24 @@
 .sect .text; .sect .rom; .sect .data; .sect .bss
-.define __echo, __notify, __send, __receive, __sendrec 
+.define __notify, __send, __senda, __sendnb, __receive, __sendrec 
 
 ! See src/kernel/ipc.h for C definitions
 SEND = 1
 RECEIVE = 2
 SENDREC = 3 
 NOTIFY = 4
-ECHO = 8
+SENDNB = 5
+SENDA = 16
 SYSVEC = 33                    ! trap to kernel 
 
 SRC_DST = 8                    ! source/ destination process 
-ECHO_MESS = 8                  ! echo doesn't have SRC_DST 
+MSGTAB = 8                     ! message table
 MESSAGE = 12                   ! message pointer 
+TABCOUNT = 12                  ! number of entries in message table
 
 !*========================================================================*
 !                           IPC assembly routines                        *
 !*========================================================================*
 ! all message passing routines save ebp, but destroy eax and ecx.
-.define __echo, __notify, __send, __receive, __sendrec 
 .sect .text
 __send:
        push    ebp
@@ -66,14 +67,26 @@ __notify:
        pop     ebp
        ret
 
-__echo:
+__sendnb:
        push    ebp
        mov     ebp, esp
        push    ebx
-       mov     ebx, ECHO_MESS(ebp)     ! ebx = message pointer
-       mov     ecx, ECHO               ! _echo(srcdest, ptr)
+       mov     eax, SRC_DST(ebp)       ! eax = dest-src
+       mov     ebx, MESSAGE(ebp)       ! ebx = message pointer
+       mov     ecx, SENDNB             ! _sendnb(dest, ptr)
        int     SYSVEC                  ! trap to the kernel
        pop     ebx
        pop     ebp
        ret
 
+__senda:
+       push    ebp
+       mov     ebp, esp
+       push    ebx
+       mov     eax, TABCOUNT(ebp)      ! eax = count
+       mov     ebx, MSGTAB(ebp)        ! ebx = table
+       mov     ecx, SENDA              ! _senda(table, count)
+       int     SYSVEC                  ! trap to the kernel
+       pop     ebx
+       pop     ebp
+       ret
diff --git a/lib/i386/rts/_ipcnew.s b/lib/i386/rts/_ipcnew.s
deleted file mode 100755 (executable)
index 33d89a4..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-.sect .text; .sect .rom; .sect .data; .sect .bss
-.define __ipc_request, __ipc_reply, __ipc_notify, __ipc_receive
-
-! See src/kernel/ipc.h for C definitions.
-IPC_REQUEST = 16               ! each gets a distinct bit
-IPC_REPLY = 32
-IPC_NOTIFY = 64
-IPC_RECEIVE = 128
-
-SYSVEC = 33                    ! trap to kernel 
-
-! Offsets of arguments relative to stack pointer.
-SRC_DST = 8                    ! source/ destination process 
-SEND_MSG = 12                  ! message pointer for sending 
-EVENT_SET = 12                 ! notification event set 
-RECV_MSG = 16                  ! message pointer for receiving 
-
-
-!*========================================================================*
-!                           IPC assembly routines                        *
-!*========================================================================*
-! all message passing routines save ebp, but destroy eax, ecx, and edx.
-.define __ipc_request, __ipc_reply, __ipc_notify, __ipc_receive
-.sect .text
-
-__ipc_request:
-       push    ebp
-       mov     ebp, esp
-       push    ebx
-       mov     eax, SRC_DST(ebp)       ! eax = destination
-       mov     ebx, SEND_MSG(ebp)      ! ebx = message pointer
-       mov     ecx, IPC_REQUEST        ! _ipc_request(dst, ptr)
-       int     SYSVEC                  ! trap to the kernel
-       pop     ebx
-       pop     ebp
-       ret
-
-__ipc_reply:
-       push    ebp
-       mov     ebp, esp
-       push    ebx
-       mov     eax, SRC_DST(ebp)       ! eax = destination
-       mov     ebx, SEND_MSG(ebp)      ! ebx = message pointer
-       mov     ecx, IPC_REPLY          ! _ipc_reply(dst, ptr)
-       int     SYSVEC                  ! trap to the kernel
-       pop     ebx
-       pop     ebp
-       ret
-
-__ipc_receive:
-       push    ebp
-       mov     ebp, esp
-       push    ebx
-       mov     eax, SRC_DST(ebp)       ! eax = source
-       mov     edx, EVENT_SET(ebp)     ! ebx = event set
-       mov     ebx, RCV_MSG(ebp)       ! ebx = message pointer
-       mov     ecx, IPC_RECEIVE        ! _ipc_receive(src, events, ptr)
-       int     SYSVEC                  ! trap to the kernel
-       pop     ebx
-       pop     ebp
-       ret
-
-__ipc_notify:
-       push    ebp
-       mov     ebp, esp
-       push    ebx
-       mov     eax, SRC_DST(ebp)       ! ebx = destination 
-       mov     edx, EVENT_SET(ebp)     ! edx = event set 
-       mov     ecx, IPC_NOTIFY         ! _ipc_notify(dst, events)
-       int     SYSVEC                  ! trap to the kernel
-       pop     ebx
-       pop     ebp
-       ret
-
-