diff --git a/lisp/alloc.c b/lisp/alloc.c index 658541e1df11ac9eb7439e740ab1fd6614547cf5..3973b38db960d55565b0bb6c28f0c072ae86efa7 100644 --- a/lisp/alloc.c +++ b/lisp/alloc.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alloc.c,v 1.1 1992/07/28 20:14:02 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alloc.c,v 1.2 1994/03/27 15:19:55 hallgren Exp $ */ #include "lisp.h" #include "internals.h" @@ -108,8 +108,11 @@ lispobj alloc_string(char *str) lispobj alloc_sap(void *ptr) { +#ifndef alpha struct sap *sap = (struct sap *)alloc_unboxed(type_Sap, 1); - +#else + struct sap *sap = (struct sap *)alloc_unboxed(type_Sap, 3); +#endif sap->pointer = ptr; return (lispobj) sap | type_OtherPointer; diff --git a/lisp/backtrace.c b/lisp/backtrace.c index 7d3e24086d30e0f33a18bbb188ba1a5601510527..9a3cf45c607595856f2e00e380014f2980baa84a 100644 --- a/lisp/backtrace.c +++ b/lisp/backtrace.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/backtrace.c,v 1.2 1993/01/10 17:22:33 wlott Exp $ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/backtrace.c,v 1.3 1994/03/27 15:19:14 hallgren Exp $ * * Simple backtrace facility. More or less from Rob's lisp version. */ @@ -17,16 +17,28 @@ better not change. */ struct call_frame { +#ifndef alpha struct call_frame *old_cont; +#else + u32 old_cont; +#endif lispobj saved_lra; lispobj code; lispobj other_state[5]; }; struct call_info { +#ifndef alpha struct call_frame *frame; +#else + u32 frame; +#endif int interrupted; +#ifndef alpha struct code *code; +#else + u32 code; +#endif lispobj lra; int pc; /* Note: this is the trace file offset, not the actual pc. */ }; @@ -104,7 +116,11 @@ info_from_sigcontext(struct call_info *info, struct sigcontext *csp) } if (info->code != NULL) info->pc = pc - (unsigned long) info->code - +#ifndef alpha (HEADER_LENGTH(info->code->header) * sizeof(lispobj)); +#else + (HEADER_LENGTH(((struct code *)info->code)->header) * sizeof(lispobj)); +#endif else info->pc = 0; } @@ -145,7 +161,11 @@ previous_info(struct call_info *info) if (info->code != NULL) info->pc = (unsigned long)PTR(info->lra) - (unsigned long)info->code - +#ifndef alpha (HEADER_LENGTH(info->code->header) * sizeof(lispobj)); +#else + (HEADER_LENGTH(((struct code *)info->code)->header) * sizeof(lispobj)); +#endif else info->pc = 0; } @@ -169,7 +189,11 @@ backtrace(int nframes) printf("CODE: 0x%08X, ", (unsigned long) info.code | type_OtherPointer); +#ifndef alpha function = info.code->entry_points; +#else + function = ((struct code *)info.code)->entry_points; +#endif while (function != NIL) { struct function *header; lispobj name; diff --git a/lisp/core.h b/lisp/core.h index 8a98cf6c86b1dc569731c911dd09a670596ebde8..3fd6f5ba7d8a35727ee2a982a018f0d59d33f0c1 100644 --- a/lisp/core.h +++ b/lisp/core.h @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/core.h,v 1.2 1993/04/28 01:58:30 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/core.h,v 1.3 1994/03/27 15:17:54 hallgren Exp $ */ #ifndef _CORE_H_ #define _CORE_H_ @@ -19,11 +19,19 @@ #define READ_ONLY_SPACE_ID (3) struct ndir_entry { +#ifndef alpha long identifier; long nwords; long data_page; long address; long page_count; +#else + u32 identifier; + u32 nwords; + u32 data_page; + u32 address; + u32 page_count; +#endif }; extern lispobj load_core_file(char *file); diff --git a/lisp/coreparse.c b/lisp/coreparse.c index e9418e4d60e171e4c24fbf60852c23fbd3a8e996..3029c6b15c8579607efb17ae6da5aebc3f7cbada 100644 --- a/lisp/coreparse.c +++ b/lisp/coreparse.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/coreparse.c,v 1.2 1993/04/28 01:58:31 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/coreparse.c,v 1.3 1994/03/27 15:26:25 hallgren Exp $ */ #include <stdio.h> #include <sys/types.h> #include <sys/file.h> @@ -40,7 +40,7 @@ static void process_directory(int fd, long *ptr, int count) addr); } -#if 0 +#ifdef 0 printf("Space ID = %d, free pointer = 0x%08x.\n", id, free_pointer); #endif @@ -73,7 +73,11 @@ static void process_directory(int fd, long *ptr, int count) lispobj load_core_file(char *file) { int fd = open(file, O_RDONLY), count; +#ifndef alpha long header[CORE_PAGESIZE / sizeof(long)], val, len, *ptr; +#else + u32 header[CORE_PAGESIZE / sizeof(u32)], val, len, *ptr; +#endif lispobj initial_function = NIL; if (fd < 0) { @@ -121,7 +125,11 @@ lispobj load_core_file(char *file) case CORE_NDIRECTORY: process_directory(fd, ptr, +#ifndef alpha (len-2) / (sizeof(struct ndir_entry) / sizeof(long))); +#else + (len-2) / (sizeof(struct ndir_entry) / sizeof(u32))); +#endif break; case CORE_INITIAL_FUNCTION: diff --git a/lisp/gc.c b/lisp/gc.c index 191dc19eee9dac6dc9a156e2c11cc94eb07c4c79..856390f55152fb3ba32e5e50af73f2d06286d7da 100644 --- a/lisp/gc.c +++ b/lisp/gc.c @@ -1,7 +1,7 @@ /* * Stop and Copy GC based on Cheney's algorithm. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.6 1993/07/27 15:00:59 hallgren Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.7 1994/03/27 15:17:01 hallgren Exp $ * * Written by Christopher Hoover. */ @@ -143,20 +143,31 @@ static double tv_diff(struct timeval *x, struct timeval *y) static void zero_stack(void) { +#ifndef alpha unsigned long *ptr = (unsigned long *)current_control_stack_pointer; - +#else + u32 *ptr = (u32 *)current_control_stack_pointer; +#endif search: do { if (*ptr) goto fill; ptr++; +#ifndef alpha } while (((unsigned long)ptr) & (BYTES_ZERO_BEFORE_END-1)); +#else + } while (((u32)ptr) & (BYTES_ZERO_BEFORE_END-1)); +#endif return; fill: do { *ptr++ = 0; +#ifndef alpha } while (((unsigned long)ptr) & (BYTES_ZERO_BEFORE_END-1)); +#else + } while (((u32)ptr) & (BYTES_ZERO_BEFORE_END-1)); +#endif goto search; } diff --git a/lisp/interrupt.c b/lisp/interrupt.c index dc698c1cfceca785e9e3b8f7e65034fa598d8563..28738babd995fda508feed65f9ed1235dd1236a8 100644 --- a/lisp/interrupt.c +++ b/lisp/interrupt.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.2 1992/09/08 20:25:46 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.3 1994/03/27 15:32:03 hallgren Exp $ */ /* Interrupt handing magic. */ @@ -47,6 +47,12 @@ void fake_foreign_function_call(struct sigcontext *context) /* Get current LISP state from context */ #ifdef reg_ALLOC current_dynamic_space_free_pointer = (lispobj *)SC_REG(context, reg_ALLOC); +#ifdef alpha + if((long) current_dynamic_space_free_pointer & 1) { + printf("Dead in fake_foriegn_function-call, context = %x\n",context); + lose(""); + } +#endif #endif #ifdef reg_BSP current_binding_stack_pointer = (lispobj *)SC_REG(context, reg_BSP); diff --git a/lisp/lisp.h b/lisp/lisp.h index 2ea27b4f251965daf83625448097273cebb49ab1..a30b9b8c737c96949c61bcc611b487ccdd7d67c5 100644 --- a/lisp/lisp.h +++ b/lisp/lisp.h @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lisp.h,v 1.1 1992/07/28 20:14:40 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lisp.h,v 1.2 1994/03/27 15:27:35 hallgren Exp $ */ #ifndef _LISP_H_ #define _LISP_H_ @@ -18,7 +18,13 @@ #define SYMBOL(obj) ((struct symbol *)((obj)-type_OtherPointer)) #define FDEFN(obj) ((struct fdefn *)((obj)-type_OtherPointer)) +#ifndef alpha typedef unsigned long lispobj; +#else +typedef unsigned int u32; +typedef signed int s32; +typedef u32 lispobj; +#endif #define make_fixnum(n) ((lispobj)((n)<<2)) #define fixnum_value(n) (((long)n)>>2) diff --git a/lisp/lispregs.h b/lisp/lispregs.h index 956f072244b1ae104c88475e5f49aff18e54c852..e7071dfc89916fa90f4ba3e19a12760c0f3c3ae0 100644 --- a/lisp/lispregs.h +++ b/lisp/lispregs.h @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lispregs.h,v 1.1 1992/07/28 20:14:41 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lispregs.h,v 1.2 1994/03/27 15:20:39 hallgren Exp $ */ #ifdef mips #include "mips-lispregs.h" @@ -20,6 +20,10 @@ #include "hppa-lispregs.h" #endif +#ifdef alpha +#include "alpha-lispregs.h" +#endif + #ifndef LANGUAGE_ASSEMBLY extern char *lisp_register_names[]; #endif diff --git a/lisp/monitor.c b/lisp/monitor.c index e752f9cfb1bdd2eebd090a0ef5130866841d51f9..dea2b598e5cf36774170431f6d6d6e46ecef8c24 100644 --- a/lisp/monitor.c +++ b/lisp/monitor.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/monitor.c,v 1.3 1993/04/28 01:59:00 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/monitor.c,v 1.4 1994/03/27 15:21:16 hallgren Exp $ */ #include <stdio.h> #include <sys/types.h> @@ -101,9 +101,17 @@ static void dump_cmd(char **ptr) } while (count-- > 0) { - printf("0x%08X: ", (unsigned long)addr); +#ifndef alpha + printf("0x%08X: ", (unsigned long) addr); +#else + printf("0x%08X: ", (u32) addr); +#endif if (valid_addr((os_vm_address_t)addr)) { +#ifndef alpha unsigned long *lptr = (unsigned long *)addr; +#else + u32 *lptr = (unsigned long *)addr; +#endif unsigned short *sptr = (unsigned short *)addr; unsigned char *cptr = (unsigned char *)addr; diff --git a/lisp/os.h b/lisp/os.h index d0d16c69341a5cc75cacb50a86608077cbdcc357..cca772966fba46a00b1f97ced4d677559db0fa93 100644 --- a/lisp/os.h +++ b/lisp/os.h @@ -1,5 +1,5 @@ /* - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os.h,v 1.2 1993/07/27 15:40:17 hallgren Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os.h,v 1.3 1994/03/27 15:22:39 hallgren Exp $ * * Common interface for os-dependent functions. * @@ -19,6 +19,10 @@ #else #ifdef hpux #include "hpux-os.h" +#else +#ifdef osf1 +#include "osf1-os.h" +#endif #endif #endif #endif diff --git a/lisp/print.c b/lisp/print.c index c330171925a1a19f24bbfe2ccc9f3760eed100dd..5cb9211da5c600072ea396e0dd75d0d6fd0ecd63 100644 --- a/lisp/print.c +++ b/lisp/print.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.2 1993/02/26 09:02:05 ram Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.3 1994/03/27 15:18:07 hallgren Exp $ */ #include <stdio.h> #include "print.h" @@ -124,12 +124,20 @@ static void newline(char *label) static void brief_fixnum(lispobj obj) { +#ifndef alpha printf("%d", ((long)obj)>>2); +#else + printf("%d", ((s32)obj)>>2); +#endif } static void print_fixnum(lispobj obj) { +#ifndef alpha printf(": %d", ((long)obj)>>2); +#else + printf(": %d", ((s32)obj)>>2); +#endif } static void brief_otherimm(lispobj obj) @@ -348,9 +356,15 @@ static void print_otherptr(lispobj obj) if (!valid_addr(obj)) printf("(invalid address)"); else { +#ifndef alpha unsigned long *ptr; unsigned long header; unsigned long length; +#else + u32 *ptr; + u32 header; + u32 length; +#endif int count, type, index; char *cptr, buffer[16]; @@ -458,7 +472,11 @@ static void print_otherptr(lispobj obj) case type_Sap: NEWLINE; +#ifndef alpha printf("0x%08x", *ptr); +#else + printf("0x%016lx", *(long*)(ptr+1)); +#endif break; case type_WeakPointer: diff --git a/lisp/undefineds.h b/lisp/undefineds.h index c6fab8e2f149f88c89f7534618573352f6d78ccf..3d2c59e70dd4db3215e3ac9bced00952615b845a 100644 --- a/lisp/undefineds.h +++ b/lisp/undefineds.h @@ -1,5 +1,5 @@ /* Routines that must be linked into the core for lisp to work. */ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/undefineds.h,v 1.2 1993/07/27 15:11:19 hallgren Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/undefineds.h,v 1.3 1994/03/27 15:24:12 hallgren Exp $ */ /* Pick up all the syscalls. */ accept, @@ -71,7 +71,7 @@ open, pipe, profil, ptrace, -#if !defined(SUNOS) && !defined(parisc) +#if !defined(SUNOS) && !defined(parisc) && !defined(osf1) quota, #endif read, @@ -96,7 +96,7 @@ sethostname, setitimer, setpgrp, setpriority, -#if !defined(SUNOS) && !defined(parisc) +#if !defined(SUNOS) && !defined(parisc) && !defined(osf1) setquota, #endif #ifndef hpux @@ -139,7 +139,9 @@ unlink, utimes, #endif vfork, +#ifndef osf1 vhangup, +#endif wait, wait3, write, @@ -184,3 +186,4 @@ gethostbyaddr, /* Other random things. */ getwd, ttyname + diff --git a/lisp/validate.h b/lisp/validate.h index b01d8f59e7be5d80cfc0bd2f99985eb1e58a5050..60567c8256bbf99fafa3cd7e9d4025d8eedf3956 100644 --- a/lisp/validate.h +++ b/lisp/validate.h @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.h,v 1.1 1992/07/28 20:15:37 wlott Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.h,v 1.2 1994/03/27 15:22:16 hallgren Exp $ */ #if !defined(_INCLUDE_VALIDATE_H_) #define _INCLUDE_VALIDATE_H_ @@ -23,6 +23,10 @@ #include "x86-validate.h" #endif +#ifdef alpha +#include "alpha-validate.h" +#endif + extern void validate(void); #endif