Problems with Dec Alpha's OSF/1 V3.0 ...
Daniel.Veillard at imag.fr
Daniel.Veillard at imag.fr
Wed Mar 12 08:58:38 PST 1997
I'm having problems with the machine dependant file for these platform.
The system is OSF1 V3.0 358.78 alpha .
file alpha/osf/md.c
init_md(void)
{
/* Set the bits in the hw fpcr for cpu's that implement
all the bits. */
__asm__ __volatile__(
"excb\n\t"
"mt_fpcr %0\n\t"
"excb"
: : "f"(FPCR_INED | FPCR_UNFD | FPCR_DYN_NORMAL
| FPCR_OVFD | FPCR_DZED));
/* Set the software emulation bits in the kernel for
those that don't. */
ieee_set_fp_control(IEEE_TRAP_ENABLE_INV);
}
The assembly instruction set bits in the FPU Control register,
but these bits definitions are not defined in the corresponding
/usr/include/machine/fpu.h :
~/opera/osf1 -> grep FPCR /usr/include/machine/*
/usr/include/machine/fpu.h:#define FPCR_INV 0x0010000000000000UL /*
inval
/usr/include/machine/fpu.h:#define FPCR_DZE 0x0020000000000000UL /*
divid
/usr/include/machine/fpu.h:#define FPCR_OVF 0x0040000000000000UL /*
overf
/usr/include/machine/fpu.h:#define FPCR_UNF 0x0080000000000000UL /*
undef
/usr/include/machine/fpu.h:#define FPCR_INE 0x0100000000000000UL /*
inexa
/usr/include/machine/fpu.h:#define FPCR_IOV 0x0200000000000000UL /*
integ
/usr/include/machine/fpu.h:#define FPCR_DYN_MASK 0x0c00000000000000UL
/
/usr/include/machine/fpu.h:#define FPCR_DYN_SHIFT 58
/
/usr/include/machine/fpu.h:#define FPCR_DYN_CHOPPED 0x0000000000000000UL/*
chopp
/usr/include/machine/fpu.h:#define FPCR_DYN_MINUS 0x0400000000000000UL
/
/usr/include/machine/fpu.h:#define FPCR_DYN_NORMAL 0x0800000000000000UL
/
/usr/include/machine/fpu.h:#define FPCR_DYN_PLUS 0x0c00000000000000UL
/
/usr/include/machine/fpu.h:#define FPCR_SUM 0x8000000000000000UL /*
summa
/usr/include/machine/fpu.h:#define FPCR_DYN_RM_MASK FPCR_DYN_MASK
/usr/include/machine/fpu.h:#define FPCR_DYN_RM_SHIFT FPCR_DYN_SHIFT
/usr/include/machine/fpu.h:#define FPCR_DYN_RM_CHOPPED FPCR_DYN_CHOPPED
/usr/include/machine/fpu.h:#define FPCR_DYN_RM_MINUS FPCR_DYN_MINUS
/usr/include/machine/fpu.h:#define FPCR_DYN_RM_NORMAL FPCR_DYN_NORMAL
/usr/include/machine/fpu.h:#define FPCR_DYN_RM_PLUS FPCR_DYN_PLUS
~/opera/osf1 ->
And these name matches the names in my "Alpha Architecture Handbook"
I suggest to use the following patch
--------------------------------- patch1 --------------------------------
Index: kaffe-0.8.2//config/alpha/osf/md.c
===================================================================
RCS file: /sources/cvsroot/opera/kaffe-0.8.2/config/alpha/osf/md.c,v
retrieving revision 1.1.1.1
diff -p -r1.1.1.1 md.c
*** md.c 1997/03/07 10:52:37 1.1.1.1
--- md.c 1997/03/12 16:09:10
***************
*** 15,20 ****
--- 15,32 ----
#include <machine/hal_sysinfo.h>
#include <sys/proc.h>
+ #ifndef FPCR_INED
+ #define FPCR_INED FPCR_INE
+ #endif
+ #ifndef FPCR_UNFD
+ #define FPCR_UNFD FPCR_UNF
+ #endif
+ #ifndef FPCR_OVFD
+ #define FPCR_OVFD FPCR_OVF
+ #endif
+ #ifndef FPCR_DZED
+ #define FPCR_DZED FPCR_DZE
+ #endif
void
init_md(void)
----------------------------- patch1 ---------------------------------
There was also a problem with Object to KaffeObject renaming I forgot
and should only be a problem for Tim :
----------------------------- patch2 ---------------------------------
Index: kaffe-0.8.2/config/alpha/jit-alpha.def
===================================================================
RCS file: /sources/cvsroot/opera/kaffe-0.8.2/config/alpha/jit-alpha.def,v
retrieving revision 1.1.1.1
diff -p -r1.1.1.1 jit-alpha.def
*** jit-alpha.def 1997/03/07 10:52:37 1.1.1.1
--- jit-alpha.def 1997/03/12 16:31:01
*************** $$3: ldq $9,2*8($30)
*** 2934,2940 ****
jword
! alpha_call_kaffe_function_varargs(Method *meth, Object *obj, va_list argptr)
{
struct {
long iargs[6];
--- 2934,2940 ----
jword
! alpha_call_kaffe_function_varargs(Method *meth, KaffeObject *obj, va_list
argptr)
{
struct {
long iargs[6];
*************** alpha_call_kaffe_function_varargs(Method
*** 3009,3015 ****
}
jword
! alpha_call_kaffe_function(Method *meth, Object *obj)
{
struct {
long iargs[6];
--- 3009,3015 ----
}
jword
! alpha_call_kaffe_function(Method *meth, KaffeObject *obj)
{
struct {
long iargs[6];
------------------------------- patch2 -------------------------
But I'm still struggling with kaffe on this platform:
gcc -g -O -DNO_SHARED_LIBRARIES -I. -I/home/hermine/veillard/opera/kaffe-0.8.2/
kaffe/kaffevm -I/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/../../co
nfig -I../../config -I../../include -DTRANSLATOR -I/home/hermine/veillard/opera
/kaffe-0.8.2/kaffe/kaffevm/jit -DKVER=\"0.82\" -c
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c: In
function `rem_double':
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c:927:
`pusharg_long_idx_inc' undeclared (first use this function)
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c:927: (Each
undeclared identifier is reported only once
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c:927: for
each function it appears in.)
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c: In
function `pusharg_double':
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c:1657:
`pusharg_long_idx_inc' undeclared (first use this function)
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c: In
function `pusharg_long':
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c:1666:
`pusharg_long_idx_inc' undeclared (first use this function)
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c: In
function `cmpl_double':
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c:2131:
`pusharg_long_idx_inc' undeclared (first use this function)
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c: In
function `cmpg_double':
/home/hermine/veillard/opera/kaffe-0.8.2/kaffe/kaffevm/jit/icode.c:2163:
`pusharg_long_idx_inc' undeclared (first use this function)
make[2]: *** [icode.o] Error 1
make[2]: Leaving directory `/home/hermine/veillard/opera/osf1/kaffe-0.8.2/kaffe
/kaffevm'
Looking for the pusharg_long_idx_inc identifier :
~/opera/javalib -> cherche pusharg_long_idx_inc
../kaffe-0.8.2/config/i386/jit-icode.h:#define pusharg_long_idx_inc
2
../kaffe-0.8.2/config/m68k/jit-icode.h:#define pusharg_long_idx_inc
2
../kaffe-0.8.2/config/sparc/jit-icode.h:#define pusharg_long_idx_inc 2
../kaffe-0.8.2/kaffe/kaffevm/jit/icode.c: pusharg_long(src2,
pusharg_long_
[more references in kaffe-0.8.2/kaffe/kaffevm/jit/icode.c]
~/opera/javalib ->
It seems to be defined in the i386, m68k and sparc JIT headers but not
on the Alpha ...
Any hint on what's happening ?
Daniel
--
Daniel Veillard at w3.org | W3C / INRIA Rhone-Alpes | Today's Bookmarks :
Daniel.Veillard at inrialpes.fr| 655 av de l'Europe | Linux, WWW, Java,
Tel : +33 04 76 61 53 85 | 38330 Montbonnot | badminton, Kaffe,
Fax : +33 04 76 54 76 15 | France | Amaya and CSS.
Home: +33 04 76 63 05 86 | http://opera.inrialpes.fr/veillard
More information about the kaffe
mailing list