diff --git a/include/minix/ipc.h b/include/minix/ipc.h index c703ad925..019e12ffc 100644 --- a/include/minix/ipc.h +++ b/include/minix/ipc.h @@ -12,8 +12,8 @@ #define M1 1 #define M3 3 #define M4 4 -#define M3_STRING 16 /* legacy m3_ca1 size (must not be changed) */ -#define M3_LONG_STRING 16 /* current m3_ca1 size (may be increased) */ +#define M3_STRING 44 /* legacy m3_ca1 size (must not be changed) */ +#define M3_LONG_STRING 44 /* current m3_ca1 size (may be increased) */ typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3, *m1p4;} mess_1; typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1; @@ -57,8 +57,6 @@ typedef struct { typedef struct { u8_t flags; void *addr; } mess_vmmcp_reply; typedef struct { - endpoint_t m_source; /* who sent the message */ - int m_type; /* what kind of message is it */ union { mess_1 m_m1; mess_2 m_m2; @@ -74,7 +72,10 @@ typedef struct { mess_vmmcp m_vmmcp; mess_vmmcp_reply m_vmmcp_reply; mess_vm_vfs_mmap m_vm_vfs; + u32_t size[14]; /* message payload may have 14 longs at most */ } m_u; + int m_type; /* what kind of message is it */ + endpoint_t m_source; /* who sent the message */ } message __aligned(16); /* The following defines provide names for useful members. */ diff --git a/kernel/arch/i386/klib.S b/kernel/arch/i386/klib.S index 83663a759..b17e91a1d 100644 --- a/kernel/arch/i386/klib.S +++ b/kernel/arch/i386/klib.S @@ -239,8 +239,8 @@ ENTRY(copy_msg_from_user) /* load the destination pointer */ mov 8(%esp), %edx -/* mov 0*4(%ecx), %eax - mov %eax, 0*4(%edx) */ + mov 0*4(%ecx), %eax + mov %eax, 0*4(%edx) mov 1*4(%ecx), %eax mov %eax, 1*4(%edx) mov 2*4(%ecx), %eax @@ -258,6 +258,21 @@ ENTRY(copy_msg_from_user) mov 8*4(%ecx), %eax mov %eax, 8*4(%edx) + mov 9*4(%ecx), %eax + mov %eax, 9*4(%edx) + mov 10*4(%ecx), %eax + mov %eax, 10*4(%edx) + mov 11*4(%ecx), %eax + mov %eax, 11*4(%edx) + mov 12*4(%ecx), %eax + mov %eax, 12*4(%edx) + mov 13*4(%ecx), %eax + mov %eax, 13*4(%edx) + mov 14*4(%ecx), %eax + mov %eax, 14*4(%edx) + mov 15*4(%ecx), %eax + mov %eax, 15*4(%edx) + LABEL(__copy_msg_from_user_end) movl $0, %eax ret @@ -297,6 +312,22 @@ ENTRY(copy_msg_to_user) mov 8*4(%ecx), %eax mov %eax, 8*4(%edx) + + mov 9*4(%ecx), %eax + mov %eax, 9*4(%edx) + mov 10*4(%ecx), %eax + mov %eax, 10*4(%edx) + mov 11*4(%ecx), %eax + mov %eax, 11*4(%edx) + mov 12*4(%ecx), %eax + mov %eax, 12*4(%edx) + mov 13*4(%ecx), %eax + mov %eax, 13*4(%edx) + mov 14*4(%ecx), %eax + mov %eax, 14*4(%edx) + mov 15*4(%ecx), %eax + mov %eax, 15*4(%edx) + LABEL(__copy_msg_to_user_end) movl $0, %eax ret diff --git a/lib/libminc/Makefile b/lib/libminc/Makefile index d5491009a..750815acc 100644 --- a/lib/libminc/Makefile +++ b/lib/libminc/Makefile @@ -135,6 +135,10 @@ SRCS+= ${i} SRCS += __aeabi_ldivmod.S __aeabi_uldivmod.S .endif +.if (${MACHINE_ARCH} == "i386") +SRCS += setjmp.S +.endif + # Import from locale .for i in _def_time.c .PATH.c: ${LIBCDIR}/locale diff --git a/servers/vm/vfs.c b/servers/vm/vfs.c index 92b2fb6ff..d6a0be2f0 100644 --- a/servers/vm/vfs.c +++ b/servers/vm/vfs.c @@ -29,7 +29,7 @@ #include "region.h" #include "sanitycheck.h" -#define STATELEN 50 +#define STATELEN 70 static struct vfs_request_node { message reqmsg; diff --git a/sys/arch/i386/include/stackframe.h b/sys/arch/i386/include/stackframe.h index 73f26d9b6..d8c1179ee 120000 --- a/sys/arch/i386/include/stackframe.h +++ b/sys/arch/i386/include/stackframe.h @@ -1 +1 @@ -/home/minix/minix/330/src/include/arch/i386/include/stackframe.h \ No newline at end of file +/minix/src/include/arch/i386/include/stackframe.h \ No newline at end of file