/[gcl]/gcl/o/gbc.c
ViewVC logotype

Diff of /gcl/o/gbc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by camm, Wed Jul 24 16:16:24 2002 UTC revision 1.8 by camm, Wed Jul 31 03:13:52 2002 UTC
# Line 28  Line 28 
28    
29  #define IN_GBC  #define IN_GBC
30  #define NEED_MP_H  #define NEED_MP_H
31    #include <string.h>
32  #include <stdlib.h>  #include <stdlib.h>
33  #include "include.h"  #include "include.h"
34    
# Line 764  mark_phase(void) { Line 765  mark_phase(void) {
765        
766  }  }
767    
768    #if defined(__ia64__)
769            asm("        .text");
770            asm("        .psr abi64");
771            asm("        .psr lsb");
772            asm("        .lsb");
773            asm("");
774            asm("        .text");
775            asm("        .align 16");
776            asm("        .global GC_save_regs_in_stack");
777            asm("        .proc GC_save_regs_in_stack");
778            asm("GC_save_regs_in_stack:");
779            asm("        .body");
780            asm("        flushrs");
781            asm("        ;;");
782            asm("        mov r8=ar.bsp");
783            asm("        br.ret.sptk.few rp");
784            asm("        .endp GC_save_regs_in_stack");
785    
786    void * GC_save_regs_in_stack();
787    #endif
788    
789    
790  void  void
791  mark_c_stack(jmp_buf env1, int n, void (*fn)(void *,void *,int)) {  mark_c_stack(jmp_buf env1, int n, void (*fn)(void *,void *,int)) {
792    
# Line 789  mark_c_stack(jmp_buf env1, int n, void ( Line 812  mark_c_stack(jmp_buf env1, int n, void (
812      else      else
813        (*fn)(cs_org,0,C_GC_OFFSET);}        (*fn)(cs_org,0,C_GC_OFFSET);}
814        
815    #if defined(__ia64__)
816        {
817           extern void * __libc_ia64_register_backing_store_base;
818           void * bst=GC_save_regs_in_stack();
819           void * bsb=__libc_ia64_register_backing_store_base;
820    
821           if (bsb>bst)
822              (*fn)(bsb,bst,C_GC_OFFSET);
823           else
824              (*fn)(bst,bsb,C_GC_OFFSET);
825          
826        }
827    #endif
828    
829  }  }
830    
831  void  void

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26