diff -uNr ATLAS.orig/CONFIG/src/backend/archinfo_linux.c ATLAS/CONFIG/src/backend/archinfo_linux.c --- ATLAS.orig/CONFIG/src/backend/archinfo_linux.c 2010-02-01 23:28:58.000000000 +0000 +++ ATLAS/CONFIG/src/backend/archinfo_linux.c 2010-02-02 22:38:31.000000000 +0000 @@ -145,14 +145,12 @@ * Add these back if we get machine access and can test */ case AFSPARC: /* don't know here anymore */ - #if 0 if ( !CmndOneLine(NULL, "fgrep cpu /proc/cpuinfo", res) ) { - if (strstr(res, "UltraSparc II")) mach = SunUS2; - else if (strstr(res, "UltraSparc I")) mach = SunUS1; - else if (strstr(res, "UltraSparc")) mach = SunUSX; + if (strstr(res, "UltraSparc II")) mach = SunUSII; + else if (strstr(res, "UltraSparc I")) mach = SunUSI; + else if (strstr(res, "UltraSparc")) mach = SunUSII; } - #endif break; case AFALPHA: #if 0 @@ -196,6 +194,11 @@ reslns = CmndResults(NULL, "grep '^processor' /proc/cpuinfo"); if (reslns) ncpu = fNumLines(reslns); } + if (__sparc__) + { + reslns = CmndResults(NULL, "grep '^CPU.*online' /proc/cpuinfo"); + if (reslns) ncpu = fNumLines(reslns); + } return(ncpu); } diff -uNr ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x2_US.c ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x2_US.c --- ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x2_US.c 2010-02-01 23:29:23.000000000 +0000 +++ ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x2_US.c 2010-02-01 23:30:07.000000000 +0000 @@ -95,6 +95,11 @@ #define incBm %g3 #define incBn %g4 +#if defined(__sparc__) && defined(__arch64__) + .register %g2, #scratch + .register %g3, #scratch +#endif + #ifdef DCPLX #define incCm 64 #define CSH 4 diff -uNr ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c --- ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c 2010-02-01 23:29:24.000000000 +0000 +++ ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c 2010-02-01 23:30:08.000000000 +0000 @@ -135,6 +135,11 @@ #define pfB %i2 /* aliased with ldab */ #endif +#if defined(__sparc__) && defined(__arch64__) + .register %g2, #scratch + .register %g3, #scratch +#endif + #ifdef DCPLX #define CMUL(arg_) ((arg_)*2) #define incCm 64 diff -uNr ATLAS.orig/tune/blas/gemm/CASES/ATL_smm4x4x2_US.c ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x2_US.c --- ATLAS.orig/tune/blas/gemm/CASES/ATL_smm4x4x2_US.c 2010-02-01 23:29:25.000000000 +0000 +++ ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x2_US.c 2010-02-01 23:30:09.000000000 +0000 @@ -93,6 +93,12 @@ #define rC23 %f30 #define rC33 %f31 #define FSIZE 64 + +#if defined(__sparc__) && defined(__arch64__) + .register %g2, #scratch + .register %g3, #scratch +#endif + #ifdef SCPLX #define CSH 3 #define CMUL(arg_) ((arg_)*2) diff -uNr ATLAS.orig/tune/blas/gemm/CASES/ATL_smm4x4x72_US.c ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x72_US.c --- ATLAS.orig/tune/blas/gemm/CASES/ATL_smm4x4x72_US.c 2010-02-01 23:29:25.000000000 +0000 +++ ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x72_US.c 2010-02-01 23:30:09.000000000 +0000 @@ -108,6 +108,12 @@ #define rC23 %f30 #define rC33 %f31 #define FSIZE 64 + +#if defined(__sparc__) && defined(__arch64__) + .register %g2, #scratch + .register %g3, #scratch +#endif + #ifdef SCPLX #define CSH 3 #define CMUL(arg_) ((arg_)*2)