eef570b
#! /bin/sh /usr/share/dpatch/dpatch-run
eef570b
## 211-support-digital-alpha.dpatch by  <kmccarty@debian.org>
eef570b
##
eef570b
## All lines beginning with `## DP:' are a description of the patch.
eef570b
## DP: Try to also support alpha architecture in chkloc()
eef570b
eef570b
@DPATCH@
eef570b
diff -urNad cernlib-2005.dfsg~/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c cernlib-2005.dfsg/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c
eef570b
--- cernlib-2005.dfsg~/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c	2006-09-06 20:48:39.151588934 -0400
eef570b
+++ cernlib-2005.dfsg/src/packlib/kernlib/kerngen/ccgen/lp64gs/chkloc.c	2006-09-06 20:53:30.206708584 -0400
eef570b
@@ -35,13 +35,20 @@
eef570b
      data segments upwards. All addresses here are expected to be in
eef570b
      the data segment area.                                                   */
eef570b
 
eef570b
+  /* K. McCarty: On Alpha, on the other hand, I couldn't find any docs for the
eef570b
+     Linux segmentation for virtual memory.  Judging by a test machine
eef570b
+     (escher.debian.org), the data section starts slightly above 0x120010000.
eef570b
+     On the other hand the stack grows downward from 0x120000000. */
eef570b
+
eef570b
    const unsigned long mask=0xffffffff00000000;
eef570b
    static unsigned long limit=0x00000000ffffffff;
eef570b
    unsigned long jadr=((unsigned long) iadr & mask);
eef570b
-#if !defined (__ia64__)
eef570b
-    if ( jadr != 0x0000000000000000) {
eef570b
-#else
eef570b
+#if defined (__ia64__)
eef570b
     if ( jadr != 0x6000000000000000) {
eef570b
+#elif defined (__alpha__)
eef570b
+    if ( jadr != 0x0000000100000000) {
b7adf43
+#else  /* amd64 or ppc64 */
eef570b
+    if ( jadr != 0) {
eef570b
 #endif
24be4e6
       fprintf(stderr, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
24be4e6
       fprintf(stderr, "LOCB/LOCF: address %p exceeds the 32 bit address space\n", iadr);