ZIEGENBEIN, Kurt wrote:
> yesterday we had a little bit of success! We installed the gcc 3.1.1 to get
> around the sizeof(bool)-problem and then I did a "rpm -bb" on the SPEC file
> of Wolfgang and it worked! All RPMS were build!
Great.
> But there is still a bug in the kernel: something with the
> interprocess-locking is mixed up. It seems to me that the
> assembler-implemetation of the semaphores is not ported correctly. Things
> like creating databases and tables, inserting rows, selecting rows are
> working. One thing that fails is dropping tables. After a drop table the
> kernel-process dies and in the vserver.prot the following message appears:
Probably you want to give the following assember coding a try...
sys/src/SAPDB/RunTime/System/RTESys_Spinlock.c:
/*LINUX && S390X*/ bool RTESys_TestAndLock( RTE_Lock * lock )
/*LINUX && S390X*/ {
/*LINUX && S390X*/ int old;
/*LINUX && S390X*/ __asm__ __volatile__( "0:l 0,%1\n"
/*LINUX && S390X*/ " cs 0,%2,%1\n"
/*LINUX && S390X*/ " brc 4,0b\n"
/*LINUX && S390X*/ " lgr %0, 0\n"
/*LINUX && S390X*/ : "=r" (old), "+m" (*lock)
/*LINUX && S390X*/ : "r" (1)
/*LINUX && S390X*/ : "cc", "0");
/*LINUX && S390X*/ return (old != 0);
/*LINUX && S390X*/ }
sys/src/en/ven76c:
externC int e76_interlock( volatile ALONE_UKP_STRUCT addr ) {
int old_val;
__asm__ __volatile__( "0:l 0,%1\n"
" cs 0,%2,%1\n"
" brc 4,0b\n"
" lgr %0, 0\n"
: "=r" (old_val), "+m" (*addr)
: "r" (1)
: "cc", "0");
return ( old_val != 0 );
}
sys/src/eo/veo76.cpp:
#if defined LINUX && defined S390X
inline void
LINUX_AtomicSwap (tsp00_Int4 *val1, tsp00_Int4 *val2)
{
__asm__ __volatile__( "0:l 0, %1\n"
" cs 0,%2,%1\n"
" brc 4,0b\n"
" lgr %0, 0\n"
: "=r" (*val2), "+m" (*val1)
: "r" (*val2)
: "cc", "0");
}
#endif
Best regards,
Martin Strassburger
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general