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

Reply via email to