summaryrefslogtreecommitdiff
path: root/lang/compaq-cc
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>2001-01-11 02:55:55 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>2001-01-11 02:55:55 +0000
commit8c1558cbbcf6467974d62401669ebe03de7c70c4 (patch)
treef54a727e775bc23ea65d01d77a575a4a9dc68671 /lang/compaq-cc
parentFix argument order of FreeBSD specific configuration. (diff)
Install fixed up BSD headers that are palatable to the Compaq CC.
Make the include directory search path match what exists. Make the lib directory search path match what exists. Submitted by: gallatin (partially)
Notes
Notes: svn path=/head/; revision=37087
Diffstat (limited to 'lang/compaq-cc')
-rw-r--r--lang/compaq-cc/Makefile40
-rw-r--r--lang/compaq-cc/files/comp.config1
-rw-r--r--lang/compaq-cc/files/include/c_asm.h203
-rw-r--r--lang/compaq-cc/files/include/machine/alpha_cpu.h558
-rw-r--r--lang/compaq-cc/files/include/machine/ansi.h129
-rw-r--r--lang/compaq-cc/files/include/machine/stdarg.h48
-rw-r--r--lang/compaq-cc/files/include/malloc.h34
-rw-r--r--lang/compaq-cc/files/include/stddef.h32
-rw-r--r--lang/compaq-cc/files/include/stdio.h29
-rw-r--r--lang/compaq-cc/files/include/sys/cdefs.h45
-rw-r--r--lang/compaq-cc/files/include/sys/types.h37
-rw-r--r--lang/compaq-cc/pkg-plist8
12 files changed, 1160 insertions, 4 deletions
diff --git a/lang/compaq-cc/Makefile b/lang/compaq-cc/Makefile
index 5c2037ff0b7b..af26877c20a2 100644
--- a/lang/compaq-cc/Makefile
+++ b/lang/compaq-cc/Makefile
@@ -8,6 +8,7 @@
PORTNAME= compaq-cc
PORTVERSION= 6.2.9.504
+PORTREVISION= 1
CATEGORIES= lang
MASTER_SITES= ftp://ftp.compaq.com/pub/products/C-CXX/linux/compaq_c_v62/
DISTFILES= ccc-6.2.9.504-2.alpha.rpm libots-2.2.7-2.alpha.rpm
@@ -26,6 +27,7 @@ BUILD_DEPENDS= rpm:${PORTSDIR}/misc/rpm
ONLY_FOR_ARCHS= alpha
PREFIX= /
+CCC_ROOT= ${PREFIX}/usr/lib/compaq/ccc-6.2.9.504-2
EXTRACT_CMD= rpm2cpio
EXTRACT_BEFORE_ARGS=
EXTRACT_AFTER_ARGS= |cpio -idum
@@ -49,15 +51,15 @@ do-install:
.for F in ${DISTFILES}
cd ${PREFIX} ; rpm2cpio ${DISTDIR}/$F |cpio -idum
.endfor
-.for F in /usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/lnxcc \
- /usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/lnxcc_driver
+.for F in ${CCC_ROOT}/alpha-linux/bin/lnxcc \
+ ${CCC_ROOT}/alpha-linux/bin/lnxcc_driver
brandelf -t Linux ${PREFIX}$F
.endfor
- cd ${PREFIX}/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin \
+ cd ${CCC_ROOT}/alpha-linux/bin \
; ${MV} cpp cpp.Linux-bad ; ${LN} -s /usr/bin/cpp . \
; ${MV} ld ld.Linux-bad ; ${LN} -s /usr/bin/ld .
# "-g" is totally ignored by GNU ld, so we can use it for a benign space holder
- cd ${PREFIX}/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin \
+ cd ${CCC_ROOT}/alpha-linux/bin \
; ${MV} lnxcc_driver lnxcc_driver.Linux \
; ${SED} -e 's/-dynamic-linker/-g /g' \
-e 's|/lib/ld-linux.so.2|-g |g' \
@@ -75,5 +77,35 @@ do-install:
; ar vq /usr/lib/compaq/cpml-5.1.0/libcpml_ev5.a *.o
# cpio creates directories with stupid permissions
find ${PREFIX}/usr/lib/compaq -type d | xargs ${CHMOD} 755
+# tweaks to compile FreeBSD bits better
+ ${MV} ${CCC_ROOT}/alpha-linux/bin/comp.config \
+ ${CCC_ROOT}/alpha-linux/bin/comp.config.ORIG
+ ${SED} -e 's|!!CCC_ROOT!!|${CCC_ROOT}|g' ${FILESDIR}/comp.config \
+ > ${WRKDIR}/comp.config
+ ${INSTALL_DATA} ${WRKDIR}/comp.config \
+ ${CCC_ROOT}/alpha-linux/bin
+ ${MKDIR} ${CCC_ROOT}/alpha-freebsd/include
+ ${MKDIR} ${CCC_ROOT}/alpha-freebsd/lib
+ cd ${FILESDIR}/include ; \
+ tar --exclude CVS -cf - . \
+ |(cd ${CCC_ROOT}/alpha-freebsd/include ; tar xpBf -)
+ cd ${CCC_ROOT}/alpha-freebsd/include ; ${LN} -sf machine/stdarg.h .
+
+post-install:
+# fixup PLIST for the FreeBSD bits
+ cd ${PREFIX} ;\
+ find ${CCC_ROOT}/alpha-freebsd -type f -o -type l \
+ >${WRKDIR}/PLIST.alpha-freebsd
+ cd ${PREFIX} ;\
+ find ${CCC_ROOT}/alpha-freebsd -type d \
+ | sed -e 's/^/@dirrm /g' \
+ | sort -r >>${WRKDIR}/PLIST.alpha-freebsd
+ ${ECHO} "r ${TMPPLIST}" > ${WRKDIR}/ex.script
+ ${ECHO} "/Insert PLIST.alpha-freebsd" >> ${WRKDIR}/ex.script
+ ${ECHO} "d" >> ${WRKDIR}/ex.script
+ ${ECHO} "r ${WRKDIR}/PLIST.alpha-freebsd" >> ${WRKDIR}/ex.script
+ ${ECHO} "x!" >> ${WRKDIR}/ex.script
+ ${CP} -p ${TMPPLIST} ${TMPPLIST}.pre-alpha-freebsd
+ cd ${WRKDIR} ; ex < ex.script
.include <bsd.port.mk>
diff --git a/lang/compaq-cc/files/comp.config b/lang/compaq-cc/files/comp.config
new file mode 100644
index 000000000000..ccbd4647bad0
--- /dev/null
+++ b/lang/compaq-cc/files/comp.config
@@ -0,0 +1 @@
+ | -SysIncDir !!CCC_ROOT!!/alpha-freebsd/include -SysIncDir /usr/local/include -L!!CCC_ROOT!!/alpha-freebsd/lib -L/usr/local/lib
diff --git a/lang/compaq-cc/files/include/c_asm.h b/lang/compaq-cc/files/include/c_asm.h
new file mode 100644
index 000000000000..894344d986b6
--- /dev/null
+++ b/lang/compaq-cc/files/include/c_asm.h
@@ -0,0 +1,203 @@
+/*
+ * *****************************************************************
+ * * *
+ * * Copyright (c) Compaq Computer Corporation, 1991, 1999 *
+ * * *
+ * * All Rights Reserved. Unpublished rights reserved under *
+ * * the copyright laws of the United States. *
+ * * *
+ * * The software contained on this media is proprietary to *
+ * * and embodies the confidential technology of Compaq *
+ * * Computer Corporation. Possession, use, duplication or *
+ * * dissemination of the software and media is authorized only *
+ * * pursuant to a valid written license from Compaq Computer *
+ * * Corporation. *
+ * * *
+ * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
+ * * by the U.S. Government is subject to restrictions as set *
+ * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
+ * * or in FAR 52.227-19, as applicable. *
+ * * *
+ * *****************************************************************
+ */
+/*
+ * HISTORY
+ */
+/*
+ * @(#)$RCSfile: c_asm.h,v $ $Revision: 1.1.8.3 $ (DEC) $Date: 1996/01/11 20:56:45 $
+ */
+#ifndef __C_ASM_H
+#define __C_ASM_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*** #include <c_asm.h>
+ *
+ * Synopsis: This header file is used to control the functionality
+ * of the asm in-line assembly language generator
+ * functions. Users include this header file to get
+ * the special compiler-defined behavior. Not defining
+ * it causes asm and friends to default to normal function
+ * call behavior.
+ *
+ *** Usage information:
+ *
+ * asm, dasm, and fasm all have function semantics in terms of how
+ * they are viewed by the compiler. The following restrictions apply:
+ *
+ * 1. The first parameter must be a constant character string
+ * (that is, it may not be a complex reference into a table,
+ * and it may not be something which requires runtime evaluation.
+ *
+ * 2. asm returns integral values, fasm returns floating values,
+ * and dasm returns double values. It is the responsibility
+ * of the user to insure that the result value is placed into
+ * the proper return register (that is, v0 for asm, f0 for
+ * fasm/dasm).
+ *
+ * 3. A return value is optional; that is, backward compatibility
+ * with the "old" asm is maintained.asm, dasm, or fasm can be seen as
+ * void functions at the user's option.
+ *
+ *
+ *** Usage Examples:
+ *
+ * 1. In this example, asms are used to execute a particular
+ * machine instruction and return a value. Note that the
+ * second asm must also be expressed with arguments to load
+ * a0 and a1. There are no guarantees that the values in
+ * a0 and a1 are preserved from the first to the second
+ * asm, or even that the compiler chose to use a0 and a1
+ * (it could have "inlined" the asm). Similarly, there must
+ * be an explicit return of the value of the second asm.
+ * Putting a value in %v0 is not sufficient to return a
+ * value from domath.
+ *
+ * #include <c_asm.h>
+ *
+ * long domath(pl)
+ * long *pl;
+ * {
+ * long op1, op2;
+ *
+ * op1 = 0xffffffffffffffff;
+ * op2 = 0xfff;
+ *
+ * *pl = asm("umulh %a0, %a1, %v0", op1, op2);
+ * return asm("mulq %a0, %a1, %v0", op1, op2);
+ *
+ * }
+ *
+ * main()
+ * {
+ * long results[2];
+ *
+ * results[1] = domath(results);
+ *
+ * printf("%d %d\n", results[0], results[1]);
+ * }
+* *
+ *
+ * 2. In this example we have an asm used to call PAL calls.
+ * Note the use of C preprocessor capabilities to allow
+ * substitutions within the asm string, which must be a
+ * compile-time string constant:
+ *
+ * #include <c_asm.h>
+ * #include <machine/pal.h>
+ *
+ * #define QUOTE(s) #s
+ * #define STR(s) QUOTE(s)
+ * #define WRUNIQ(uniq) asm("call_pal " STR(PAL_wruniq), (uniq))
+ * #define RDUNIQ() asm("call_pal " STR(PAL_rduniq))
+ *
+ * main()
+ * {
+ * int i = 123456;
+ * int j;
+ *
+ * WRUNIQ(i);
+ *
+ * j = RDUNIQ();
+ *
+ * printf("i=%d; j=%d\n", i, j);
+ * }
+ *
+ * 3. In this example we have an asm used to perform a locking
+ * primitive. This asm contains labels and branches. All labels
+ * and branches must be in the same
+ *
+ * Note that the DEC C _TESTBITSSI builtin function gives similar
+ * functionality, and may produce a slightly better code sequence
+ * in some cases.**
+ *
+ * #include <c_asm.h>
+ * #include <stdio.h>
+ *
+ * # define pthread_mutex_lock_prim(_m_) asm (" \
+ * ldah %t2,0x10(%r31) ;\
+ * 10: ldl_l %v0,(%a0) ;\
+ * bne %v0,30f ;\
+ * or %v0,%t2,%t0 ;\
+ * stl_c %t0,(%a0) ;\
+ * beq %t0,20f ;\
+ * mb ; \
+ * br %r31,30f ;\
+ * 20: br %r31,10b ;\
+ * 30:", (_m_))
+ *
+ * int main () {
+ * unsigned int lock = 0;
+ * pthread_mutex_lock_prim (&lock);
+ * printf ("lock is %#x\n", lock);
+ * return 0;
+ * }
+ *
+ * 4. In this example we have the one supported violation
+ * of function call semantics for asms -- using an asm
+ * to get the return address.
+ *
+ * #include <c_asm.h>
+ *
+ * main()
+ * {
+ * long retaddr;
+ *
+ * retaddr = asm("mov %ra, %v0");
+ *
+ * printf("%x\n", retaddr);
+ * }
+ *
+ *
+ * **While inline assembly code is usually convenient and efficient
+ * for coding simple sequences of machine instructions and PAL calls,
+ * the DEC C compiler also supports a number of specialized "builtin
+ * functions" that reliably and efficiently implement a collection of
+ * more complex load-locked/store-conditional instruction sequences
+ * that perform atomic updates to memory locations. See
+ * machine/builtins.h and the Programmers Guide for more information.
+ *
+ * C++ users:
+ *
+ * DEC C++ versions prior to V5.3 DO NOT support the intrinsic routines
+ * below. If using a pre-V5.3 versions of DEC C++, this header and these
+ * routines SHOULD NOT be used. The result would be a compilation warning
+ * regarding the #pragma intrinsics below. However, there are no alternate
+ * versions of these routines in the standard C library, so there is no
+ * suitable workaround for pre-V5.3 DEC C++ users. Please do not use this
+ * header under pre-V5.3 versions of the DEC C++ compiler.
+ */
+
+ float fasm( const char *,... );
+ long asm( const char *,...);
+ double dasm( const char *,... );
+
+#pragma intrinsic( fasm )
+#pragma intrinsic( asm )
+#pragma intrinsic( dasm )
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __C_ASM_H */
diff --git a/lang/compaq-cc/files/include/machine/alpha_cpu.h b/lang/compaq-cc/files/include/machine/alpha_cpu.h
new file mode 100644
index 000000000000..d0aa91fe66f8
--- /dev/null
+++ b/lang/compaq-cc/files/include/machine/alpha_cpu.h
@@ -0,0 +1,558 @@
+/* $FreeBSD: /tmp/pcvs/ports/lang/compaq-cc/files/include/machine/Attic/alpha_cpu.h,v 1.1 2001-01-11 02:55:55 obrien Exp $ */
+/* From: NetBSD: alpha_cpu.h,v 1.15 1997/09/20 19:02:34 mjacob Exp */
+
+/*
+ * Copyright (c) 1996 Carnegie-Mellon University.
+ * All rights reserved.
+ *
+ * Author: Chris G. Demetriou
+ *
+ * Permission to use, copy, modify and distribute this software and
+ * its documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
+ * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie the
+ * rights to redistribute these changes.
+ */
+
+#ifndef __ALPHA_ALPHA_CPU_H__
+#define __ALPHA_ALPHA_CPU_H__
+
+/*
+ * Alpha CPU + OSF/1 PALcode definitions for use by the kernel.
+ *
+ * Definitions for:
+ *
+ * Process Control Block
+ * Interrupt/Exception/Syscall Stack Frame
+ * Processor Status Register
+ * Machine Check Error Summary Register
+ * Machine Check Logout Area
+ * Virtual Memory Management
+ * Kernel Entry Vectors
+ * MMCSR Fault Type Codes
+ * Translation Buffer Invalidation
+ *
+ * and miscellaneous PALcode operations.
+ */
+
+
+/*
+ * Process Control Block definitions [OSF/1 PALcode Specific]
+ */
+
+struct alpha_pcb {
+ unsigned long apcb_ksp; /* kernel stack ptr */
+ unsigned long apcb_usp; /* user stack ptr */
+ unsigned long apcb_ptbr; /* page table base reg */
+ unsigned int apcb_cpc; /* charged process cycles */
+ unsigned int apcb_asn; /* address space number */
+ unsigned long apcb_unique; /* process unique value */
+ unsigned long apcb_flags; /* flags; see below */
+ unsigned long apcb_decrsv0; /* DEC reserved */
+ unsigned long apcb_decrsv1; /* DEC reserved */
+};
+
+#define ALPHA_PCB_FLAGS_FEN 0x0000000000000001
+#define ALPHA_PCB_FLAGS_PME 0x4000000000000000
+
+/*
+ * Interrupt/Exception/Syscall "Hardware" (really PALcode)
+ * Stack Frame definitions
+ *
+ * These are quadword offsets from the sp on kernel entry, i.e.
+ * to get to the value in question you access (sp + (offset * 8)).
+ *
+ * On syscall entry, A0-A2 aren't written to memory but space
+ * _is_ reserved for them.
+ */
+
+#define ALPHA_HWFRAME_PS 0 /* processor status register */
+#define ALPHA_HWFRAME_PC 1 /* program counter */
+#define ALPHA_HWFRAME_GP 2 /* global pointer */
+#define ALPHA_HWFRAME_A0 3 /* a0 */
+#define ALPHA_HWFRAME_A1 4 /* a1 */
+#define ALPHA_HWFRAME_A2 5 /* a2 */
+
+#define ALPHA_HWFRAME_SIZE 6 /* 6 8-byte words */
+
+/*
+ * Processor Status Register [OSF/1 PALcode Specific]
+ *
+ * Includes user/kernel mode bit, interrupt priority levels, etc.
+ */
+
+#define ALPHA_PSL_USERMODE 0x0008 /* set -> user mode */
+#define ALPHA_PSL_IPL_MASK 0x0007 /* interrupt level mask */
+
+#define ALPHA_PSL_IPL_0 0x0000 /* all interrupts enabled */
+#define ALPHA_PSL_IPL_SOFT 0x0001 /* software ints disabled */
+#define ALPHA_PSL_IPL_IO 0x0004 /* I/O dev ints disabled */
+#define ALPHA_PSL_IPL_CLOCK 0x0005 /* clock ints disabled */
+#define ALPHA_PSL_IPL_HIGH 0x0006 /* all but mchecks disabled */
+
+#define ALPHA_PSL_MUST_BE_ZERO 0xfffffffffffffff0
+
+/* Convenience constants: what must be set/clear in user mode */
+#define ALPHA_PSL_USERSET ALPHA_PSL_USERMODE
+#define ALPHA_PSL_USERCLR (ALPHA_PSL_MUST_BE_ZERO | ALPHA_PSL_IPL_MASK)
+
+/*
+ * Interrupt Type Code Definitions [OSF/1 PALcode Specific]
+ */
+
+#define ALPHA_INTR_XPROC 0 /* interprocessor interrupt */
+#define ALPHA_INTR_CLOCK 1 /* clock interrupt */
+#define ALPHA_INTR_ERROR 2 /* correctable error or mcheck */
+#define ALPHA_INTR_DEVICE 3 /* device interrupt */
+#define ALPHA_INTR_PERF 4 /* performance counter */
+#define ALPHA_INTR_PASSIVE 5 /* passive release */
+
+/*
+ * Machine Check Error Summary Register definitions [OSF/1 PALcode Specific]
+ *
+ * The following bits are values as read. On write, _PCE, _SCE, and
+ * _MIP are "write 1 to clear."
+ */
+
+#define ALPHA_MCES_IMP \
+ 0xffffffff00000000 /* impl. dependent */
+#define ALPHA_MCES_RSVD \
+ 0x00000000ffffffe0 /* reserved */
+#define ALPHA_MCES_DSC \
+ 0x0000000000000010 /* disable system correctable error reporting */
+#define ALPHA_MCES_DPC \
+ 0x0000000000000008 /* disable processor correctable error reporting */
+#define ALPHA_MCES_PCE \
+ 0x0000000000000004 /* processor correctable error in progress */
+#define ALPHA_MCES_SCE \
+ 0x0000000000000002 /* system correctable error in progress */
+#define ALPHA_MCES_MIP \
+ 0x0000000000000001 /* machine check in progress */
+
+/*
+ * Machine Check Error Summary Register definitions [OSF/1 PALcode Specific]
+ */
+
+struct alpha_logout_area {
+ unsigned int la_frame_size; /* frame size */
+ unsigned int la_flags; /* flags; see below */
+ unsigned int la_cpu_offset; /* offset to cpu area */
+ unsigned int la_system_offset; /* offset to system area */
+};
+
+#define ALPHA_LOGOUT_FLAGS_RETRY 0x80000000 /* OK to continue */
+#define ALPHA_LOGOUT_FLAGS_SE 0x40000000 /* second error */
+#define ALPHA_LOGOUT_FLAGS_SBZ 0x3fffffff /* should be zero */
+
+#define ALPHA_LOGOUT_NOT_BUILT \
+ (struct alpha_logout_area *)0xffffffffffffffff)
+
+#define ALPHA_LOGOUT_PAL_AREA(lap) \
+ (unsigned long *)((unsigned char *)(lap) + 16)
+#define ALPHA_LOGOUT_PAL_SIZE(lap) \
+ ((lap)->la_cpu_offset - 16)
+#define ALPHA_LOGOUT_CPU_AREA(lap) \
+ (unsigned long *)((unsigned char *)(lap) + (lap)->la_cpu_offset)
+#define ALPHA_LOGOUT_CPU_SIZE(lap) \
+ ((lap)->la_system_offset - (lap)->la_cpu_offset)
+#define ALPHA_LOGOUT_SYSTEM_AREA(lap) \
+ (unsigned long *)((unsigned char *)(lap) + (lap)->la_system_offset)
+#define ALPHA_LOGOUT_SYSTEM_SIZE(lap) \
+ ((lap)->la_frame_size - (lap)->la_system_offset)
+
+/*
+ * Virtual Memory Management definitions [OSF/1 PALcode Specific]
+ *
+ * Includes user and kernel space addresses and information,
+ * page table entry definitions, etc.
+ *
+ * NOTE THAT THESE DEFINITIONS MAY CHANGE IN FUTURE ALPHA CPUS!
+ */
+
+#define ALPHA_PGSHIFT 13 /* bits that index within page */
+#define ALPHA_PTSHIFT 10 /* bits that index within page tables */
+#define ALPHA_PGBYTES (1 << ALPHA_PGSHIFT)
+#define ALPHA_L3SHIFT ALPHA_PGSHIFT
+#define ALPHA_L2SHIFT (ALPHA_L3SHIFT+ALPHA_PTSHIFT)
+#define ALPHA_L1SHIFT (ALPHA_L2SHIFT+ALPHA_PTSHIFT)
+
+#define ALPHA_USEG_BASE 0 /* virtual */
+#define ALPHA_USEG_END 0x000003ffffffffffLL
+
+#define ALPHA_K0SEG_BASE 0xfffffc0000000000LL /* direct-mapped */
+#define ALPHA_K0SEG_END 0xfffffdffffffffffLL
+#define ALPHA_K1SEG_BASE 0xfffffe0000000000LL /* virtual */
+#define ALPHA_K1SEG_END 0xffffffffffffffffLL
+
+#define ALPHA_K0SEG_TO_PHYS(x) ((x) & ~ALPHA_K0SEG_BASE)
+#define ALPHA_PHYS_TO_K0SEG(x) ((x) | ALPHA_K0SEG_BASE)
+
+#define ALPHA_PTE_VALID 0x0001
+
+#define ALPHA_PTE_FAULT_ON_READ 0x0002
+#define ALPHA_PTE_FAULT_ON_WRITE 0x0004
+#define ALPHA_PTE_FAULT_ON_EXECUTE 0x0008
+
+#define ALPHA_PTE_ASM 0x0010 /* addr. space match */
+#define ALPHA_PTE_GRANULARITY 0x0060 /* granularity hint */
+
+#define ALPHA_PTE_PROT 0xff00
+#define ALPHA_PTE_KR 0x0100
+#define ALPHA_PTE_UR 0x0200
+#define ALPHA_PTE_KW 0x1000
+#define ALPHA_PTE_UW 0x2000
+
+#define ALPHA_PTE_WRITE (ALPHA_PTE_KW | ALPHA_PTE_UW)
+
+#define ALPHA_PTE_SOFTWARE 0xffff0000
+
+#define ALPHA_PTE_PFN 0xffffffff00000000
+
+#define ALPHA_PTE_TO_PFN(pte) ((u_long)(pte) >> 32)
+#define ALPHA_PTE_FROM_PFN(pfn) ((u_long)(pfn) << 32)
+
+typedef unsigned long alpha_pt_entry_t;
+
+/*
+ * Kernel Entry Vectors. [OSF/1 PALcode Specific]
+ */
+
+#define ALPHA_KENTRY_INT 0
+#define ALPHA_KENTRY_ARITH 1
+#define ALPHA_KENTRY_MM 2
+#define ALPHA_KENTRY_IF 3
+#define ALPHA_KENTRY_UNA 4
+#define ALPHA_KENTRY_SYS 5
+
+/*
+ * MMCSR Fault Type Codes. [OSF/1 PALcode Specific]
+ */
+
+#define ALPHA_MMCSR_INVALTRANS 0
+#define ALPHA_MMCSR_ACCESS 1
+#define ALPHA_MMCSR_FOR 2
+#define ALPHA_MMCSR_FOE 3
+#define ALPHA_MMCSR_FOW 4
+
+/*
+ * Instruction Fault Type Codes. [OSF/1 PALcode Specific]
+ */
+
+#define ALPHA_IF_CODE_BPT 0
+#define ALPHA_IF_CODE_BUGCHK 1
+#define ALPHA_IF_CODE_GENTRAP 2
+#define ALPHA_IF_CODE_FEN 3
+#define ALPHA_IF_CODE_OPDEC 4
+
+/*
+ * Translation Buffer Invalidation definitions [OSF/1 PALcode Specific]
+ */
+
+#define ALPHA_TBIA() alpha_pal_tbi(-2, 0) /* all TB entries */
+#define ALPHA_TBIAP() alpha_pal_tbi(-1, 0) /* all per-process */
+#define ALPHA_TBISI(va) alpha_pal_tbi(1, (va)) /* ITB entry for va */
+#define ALPHA_TBISD(va) alpha_pal_tbi(2, (va)) /* DTB entry for va */
+#define ALPHA_TBIS(va) alpha_pal_tbi(3, (va)) /* all for va */
+
+/*
+ * Bits used in the amask instruction [EV56 and later]
+ */
+
+#define ALPHA_AMASK_BWX 0x0001 /* byte/word extension */
+#define ALPHA_AMASK_FIX 0x0002 /* sqrt and f <-> i conversion extension */
+#define ALPHA_AMASK_CIX 0x0004 /* count extension */
+#define ALPHA_AMASK_MVI 0x0100 /* multimedia extension */
+#define ALPHA_AMASK_PRECISE 0x0200 /* Precise arithmetic traps */
+
+/*
+ * Chip family IDs returned by implver instruction
+ */
+
+#define ALPHA_IMPLVER_EV4 0 /* LCA/EV4/EV45 */
+#define ALPHA_IMPLVER_EV5 1 /* EV5/EV56/PCA56 */
+#define ALPHA_IMPLVER_EV6 2 /* EV6 */
+
+
+/*
+ * Inlines for Alpha instructions normally inaccessible from C.
+ */
+#include <c_asm.h>
+
+static __inline u_int64_t
+alpha_amask(u_int64_t mask)
+{
+ u_int64_t result;
+ result = asm("amask %a0, %v0", mask);
+ return result;
+}
+
+static __inline unsigned long
+alpha_implver(void)
+{
+ u_int64_t result;
+ result = asm("implver %v0");
+ return result;
+}
+
+static __inline unsigned long
+alpha_rpcc(void)
+{
+ u_int64_t result;
+ result = asm("rpcc %v0");
+ return result;
+}
+
+static __inline void
+alpha_mb(void)
+{
+ asm("mb");
+}
+
+static __inline void
+alpha_wmb(void)
+{
+ /*
+ * XXX dfr: NetBSD originally had mb instead of wmb for
+ * alpha_wmb(). I'm not sure why so I'm leaving it alone. I
+ * think it should be safe to use wmb though.
+ */
+ asm("mb");
+}
+/*
+ * Inlines for OSF/1 PALcode operations.
+ */
+#ifdef notyet
+static __inline void
+alpha_pal_halt(void)
+{
+ __asm__ __volatile__ ("call_pal 0x0 #PAL_halt");
+}
+
+static __inline void
+alpha_pal_cflush(u_int64_t pfn)
+{
+ register u_int64_t a0 __asm__("$16") = pfn;
+ __asm__ __volatile__ (
+ "call_pal 0x1 #PAL_cflush"
+ :
+ : "r" (a0));
+}
+
+static __inline void
+alpha_pal_draina(void)
+{
+ __asm__ __volatile__ ("call_pal 0x2 #PAL_draina" : : : "memory");
+}
+
+static __inline void
+alpha_pal_wripir(u_int64_t ipir)
+{
+ register u_int64_t a0 __asm__("$16") = ipir;
+ __asm__ __volatile__ (
+ "call_pal 0xd #PAL_ipir"
+ : "=r" (a0)
+ : "0" (a0)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline u_int64_t
+alpha_pal_rdmces(void)
+{
+ register u_int64_t v0 __asm__("$0");
+ __asm__ __volatile__ (
+ "call_pal 0x10 #PAL_OSF1_rdmces"
+ : "=r" (v0)
+ :
+ : "$1", "$22", "$23", "$24", "$25");
+ return v0;
+}
+
+static __inline void
+alpha_pal_wrmces(u_int64_t mces)
+{
+ register u_int64_t a0 __asm__("$16") = mces;
+ __asm__ __volatile__ (
+ "call_pal 0x11 #PAL_wrmces"
+ : "=r" (a0)
+ : "0" (a0)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline void
+alpha_pal_wrfen(u_int64_t fen)
+{
+ register u_int64_t a0 __asm__("$16") = fen;
+ __asm__ __volatile__ (
+ "call_pal 0x2b #PAL_wrfen"
+ : "=r" (a0)
+ : "0" (a0)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline void
+alpha_pal_wrvptptr(u_int64_t vptptr)
+{
+ register u_int64_t a0 __asm__("$16") = vptptr;
+ __asm__ __volatile__ (
+ "call_pal 0x2d #PAL_wrvptptr"
+ : "=r" (a0)
+ : "0" (a0)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline u_int64_t
+alpha_pal_swpctx(u_int64_t pcb)
+{
+ register u_int64_t a0 __asm__("$16") = pcb;
+ register u_int64_t v0 __asm__("$0");
+ __asm__ __volatile__ (
+ "call_pal 0x30 #PAL_OSF1_swpctx"
+ : "=r" (v0), "=r" (a0)
+ : "1" (a0)
+ : "$1", "$22", "$23", "$24", "$25", "memory");
+ return v0;
+}
+
+static __inline void
+alpha_pal_wrval(u_int64_t sysvalue)
+{
+ register u_int64_t a0 __asm__("$16") = sysvalue;
+ __asm__ __volatile__ (
+ "call_pal 0x31 #PAL_wrval"
+ : "=r" (a0)
+ : "0" (a0)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline u_int64_t
+alpha_pal_rdval(void)
+{
+ register u_int64_t v0 __asm__("$0");
+ __asm__ __volatile__ (
+ "call_pal 0x32 #PAL_OSF1_rdval"
+ : "=r" (v0)
+ :
+ : "$1", "$22", "$23", "$24", "$25");
+ return v0;
+}
+
+static __inline void
+alpha_pal_tbi(u_int64_t op, u_int64_t va)
+{
+ register u_int64_t a0 __asm__("$16") = op;
+ register u_int64_t a1 __asm__("$17") = va;
+ __asm__ __volatile__ (
+ "call_pal 0x33 #PAL_OSF1_tbi"
+ : "=r" (a0), "=r" (a1)
+ : "0" (a0), "1" (a1)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline void
+alpha_pal_wrent(void *ent, u_int64_t which)
+{
+ register u_int64_t a0 __asm__("$16") = (u_int64_t) ent;
+ register u_int64_t a1 __asm__("$17") = which;
+ __asm__ __volatile__ (
+ "call_pal 0x34 #PAL_OSF1_wrent"
+ : "=r" (a0), "=r" (a1)
+ : "0" (a0), "1" (a1)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline u_int64_t
+alpha_pal_swpipl(u_int64_t newipl)
+{
+ register u_int64_t a0 __asm__("$16") = newipl;
+ register u_int64_t v0 __asm__("$0");
+ __asm__ __volatile__ (
+ "call_pal 0x35 #PAL_OSF1_swpipl"
+ : "=r" (v0), "=r" (a0)
+ : "1" (a0)
+ : "$1", "$22", "$23", "$24", "$25");
+ return v0;
+}
+
+static __inline u_int64_t
+alpha_pal_rdps(void)
+{
+ register u_int64_t v0 __asm__("$0");
+ __asm__ __volatile__ (
+ "call_pal 0x36 #PAL_OSF1_rdps"
+ : "=r" (v0)
+ :
+ : "$1", "$22", "$23", "$24", "$25");
+ return v0;
+}
+
+static __inline void
+alpha_pal_wrusp(u_int64_t usp)
+{
+ register u_int64_t a0 __asm__("$16") = usp;
+ __asm__ __volatile__ (
+ "call_pal 0x38 #PAL_wrusp"
+ : "=r" (a0)
+ : "0" (a0)
+ : "$1", "$22", "$23", "$24", "$25");
+}
+
+static __inline u_int64_t
+alpha_pal_wrperfmon(u_int64_t arg0, u_int64_t arg1)
+{
+ register u_int64_t v0 __asm__("$0");
+ register u_int64_t a0 __asm__("$16") = arg0;
+ register u_int64_t a1 __asm__("$17") = arg1;
+ __asm__ __volatile__ (
+ "call_pal 0x39 #PAL_OSF1_wrperfmon"
+ : "=r" (a0), "=r" (a1), "=r" (v0)
+ : "0" (a0), "1" (a1)
+ : "$1", "$22", "$23", "$24", "$25");
+ return v0;
+}
+
+static __inline u_int64_t
+alpha_pal_rdusp(void)
+{
+ register u_int64_t v0 __asm__("$0");
+ __asm__ __volatile__ (
+ "call_pal 0x3a #PAL_OSF1_rdusp"
+ : "=r" (v0)
+ :
+ : "$1", "$22", "$23", "$24", "$25");
+ return v0;
+}
+
+static __inline u_int64_t
+alpha_pal_whami(void)
+{
+ register u_int64_t v0 __asm__("$0");
+ __asm__ __volatile__ (
+ "call_pal 0x3c #PAL_OSF1_whami"
+ : "=r" (v0)
+ :
+ : "$1", "$22", "$23", "$24", "$25");
+ return v0;
+}
+
+static __inline void
+alpha_pal_imb(void)
+{
+ __asm__ __volatile__ ("call_pal 0x86 #PAL_imb");
+}
+#endif /* notyet */
+
+#endif /* __ALPHA_ALPHA_CPU_H__ */
diff --git a/lang/compaq-cc/files/include/machine/ansi.h b/lang/compaq-cc/files/include/machine/ansi.h
new file mode 100644
index 000000000000..27484d8d7049
--- /dev/null
+++ b/lang/compaq-cc/files/include/machine/ansi.h
@@ -0,0 +1,129 @@
+/* $FreeBSD: /tmp/pcvs/ports/lang/compaq-cc/files/include/machine/Attic/ansi.h,v 1.1 2001-01-11 02:55:55 obrien Exp $ */
+/* From: NetBSD: ansi.h,v 1.9 1997/11/23 20:20:53 kleink Exp */
+
+/*-
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)ansi.h 8.2 (Berkeley) 1/4/94
+ */
+
+#ifndef _ANSI_H_
+#define _ANSI_H_
+
+/*
+ * Types which are fundamental to the implementation and may appear in
+ * more than one standard header are defined here. Standard headers
+ * then use:
+ * #ifdef _BSD_SIZE_T_
+ * typedef _BSD_SIZE_T_ size_t;
+ * #undef _BSD_SIZE_T_
+ * #endif
+ */
+#define _BSD_CLOCK_T_ int /* clock() */
+#define _BSD_PTRDIFF_T_ long /* ptr1 - ptr2 */
+#define _BSD_SIZE_T_ unsigned long /* sizeof() */
+#define _BSD_SSIZE_T_ long /* byte count or error */
+#define _BSD_TIME_T_ int /* time() */
+typedef struct {
+ char *__base;
+ int __offset;
+ int __pad;
+} __va_list;
+#define _BSD_VA_LIST_ __va_list /* va_list */
+#define _BSD_CLOCKID_T_ int /* clockid_t */
+#define _BSD_TIMER_T_ int /* timer_t */
+#define _BSD_SUSECONDS_T_ int /* suseconds_t */
+#define _BSD_USECONDS_T_ unsigned int /* useconds_t */
+
+/*
+ * Types which are fundamental to the implementation and must be used
+ * in more than one standard header although they are only declared in
+ * one (perhaps nonstandard) header are defined here. Standard headers
+ * use _BSD_XXX_T_ without undef'ing it.
+ */
+#define _BSD_CT_RUNE_T_ int /* arg type for ctype funcs */
+#define _BSD_OFF_T_ long /* file offset */
+#define _BSD_PID_T_ int /* process [group] */
+
+/*
+ * Runes (wchar_t) is declared to be an ``int'' instead of the more natural
+ * ``unsigned long'' or ``long''. Two things are happening here. It is not
+ * unsigned so that EOF (-1) can be naturally assigned to it and used. Also,
+ * it looks like 10646 will be a 31 bit standard. This means that if your
+ * ints cannot hold 32 bits, you will be in trouble. The reason an int was
+ * chosen over a long is that the is*() and to*() routines take ints (says
+ * ANSI C), but they use _RUNE_T_ instead of int. By changing it here, you
+ * lose a bit of ANSI conformance, but your programs will still work.
+ *
+ * Note that _WCHAR_T_ and _RUNE_T_ must be of the same type. When wchar_t
+ * and rune_t are typedef'd, _WCHAR_T_ will be undef'd, but _RUNE_T remains
+ * defined for ctype.h.
+ */
+#define _BSD_WCHAR_T_ int /* wchar_t */
+#define _BSD_WINT_T_ int /* wint_t */
+#define _BSD_RUNE_T_ int /* rune_t */
+
+/*
+ * Frequencies of the clock ticks reported by clock() and times(). They
+ * are the same as stathz for bogus historical reasons. They should be
+ * 1e6 because clock() and times() are implemented using getrusage() and
+ * there is no good reason why they should be less accurate. There is
+ * the bad reason that (broken) programs might not like clock_t or
+ * CLOCKS_PER_SEC being ``double'' (``unsigned long'' is not large enough
+ * to hold the required 24 hours worth of ticks if the frequency is
+ * 1000000ul, and ``unsigned long long'' would be nonstandard).
+ */
+#define _BSD_CLK_TCK_ 100
+#define _BSD_CLOCKS_PER_SEC_ 100
+
+/*
+ * We define this here since both <stddef.h> and <sys/types.h> needs it.
+ */
+#define __offsetof(type, field) ((size_t)(&((type *)0)->field))
+
+/*
+ * Internal names for basic integral types. Omit the typedef if
+ * not possible for a machine/compiler combination.
+ */
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef short __int16_t;
+typedef unsigned short __uint16_t;
+typedef int __int32_t;
+typedef unsigned int __uint32_t;
+typedef long __int64_t;
+typedef unsigned long __uint64_t;
+
+typedef long __intptr_t;
+typedef unsigned long __uintptr_t;
+
+#endif /* _ANSI_H_ */
diff --git a/lang/compaq-cc/files/include/machine/stdarg.h b/lang/compaq-cc/files/include/machine/stdarg.h
new file mode 100644
index 000000000000..ff69eab89cc6
--- /dev/null
+++ b/lang/compaq-cc/files/include/machine/stdarg.h
@@ -0,0 +1,48 @@
+/*
+ * *****************************************************************
+ * * *
+ * * Copyright (c) Compaq Computer Corporation, 1999 *
+ * * *
+ * * All Rights Reserved. Unpublished rights reserved under *
+ * * the copyright laws of the United States. *
+ * * *
+ * * The software contained on this media is proprietary to *
+ * * and embodies the confidential technology of Compaq *
+ * * Computer Corporation. Possession, use, duplication or *
+ * * dissemination of the software and media is authorized only *
+ * * pursuant to a valid written license from Compaq Computer *
+ * * Corporation. *
+ * * *
+ * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
+ * * by the U.S. Government is subject to restrictions as set *
+ * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
+ * * or in FAR 52.227-19, as applicable. *
+ * * *
+ * *****************************************************************
+ */
+
+#ifndef _ALPHA_STDARG_H_
+#define _ALPHA_STDARG_H_
+
+#include <machine/ansi.h>
+
+#ifdef __lint__
+#define __builtin_saveregs() (0)
+#define __builtin_classify_type(t) (0)
+#endif
+
+typedef _BSD_VA_LIST_ va_list;
+
+#define va_start(list, parmN) __builtin_va_start(list, parmN, 1)
+#define va_end(list)
+#define va_arg(list, mode) \
+ (*((__builtin_isfloat(mode) && sizeof(mode) > sizeof(double)) ? \
+ *(((list).__offset += ((int)sizeof(mode *) + 7) & -8), \
+ (mode **)( ((char *)(list).__base) + (list).__offset - \
+ (((int)sizeof(mode *) + 7) & -8))) : \
+ (((list).__offset += ((int)sizeof(mode) + 7) & -8), \
+ (mode *)( ((char *)(list).__base) + (list).__offset - \
+ ((__builtin_isfloat(mode) && (list).__offset <= (6 * 8)) ? \
+ (6 * 8) + 8 : ((int)sizeof(mode) + 7) & -8)))))
+
+#endif /* !_ALPHA_STDARG_H_ */
diff --git a/lang/compaq-cc/files/include/malloc.h b/lang/compaq-cc/files/include/malloc.h
new file mode 100644
index 000000000000..bece04607404
--- /dev/null
+++ b/lang/compaq-cc/files/include/malloc.h
@@ -0,0 +1,34 @@
+/*
+ * *****************************************************************
+ * * *
+ * * Copyright (c) Compaq Computer Corporation, 1999, 2000 *
+ * * *
+ * * All Rights Reserved. Unpublished rights reserved under *
+ * * the copyright laws of the United States. *
+ * * *
+ * * The software contained on this media is proprietary to *
+ * * and embodies the confidential technology of Compaq *
+ * * Computer Corporation. Possession, use, duplication or *
+ * * dissemination of the software and media is authorized only *
+ * * pursuant to a valid written license from Compaq Computer *
+ * * Corporation. *
+ * * *
+ * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
+ * * by the U.S. Government is subject to restrictions as set *
+ * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
+ * * or in FAR 52.227-19, as applicable. *
+ * * *
+ * *****************************************************************
+ */
+#ifndef _CCC_MALLOC_H_
+#define _CCC_MALLOC_H_
+
+#include_next <malloc.h>
+#undef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL 0L
+#endif
+
+#endif /* _CCC_MALLOC_H_ */
diff --git a/lang/compaq-cc/files/include/stddef.h b/lang/compaq-cc/files/include/stddef.h
new file mode 100644
index 000000000000..e27d5da4eb84
--- /dev/null
+++ b/lang/compaq-cc/files/include/stddef.h
@@ -0,0 +1,32 @@
+/*
+ * *****************************************************************
+ * * *
+ * * Copyright (c) Compaq Computer Corporation, 1999 *
+ * * *
+ * * All Rights Reserved. Unpublished rights reserved under *
+ * * the copyright laws of the United States. *
+ * * *
+ * * The software contained on this media is proprietary to *
+ * * and embodies the confidential technology of Compaq *
+ * * Computer Corporation. Possession, use, duplication or *
+ * * dissemination of the software and media is authorized only *
+ * * pursuant to a valid written license from Compaq Computer *
+ * * Corporation. *
+ * * *
+ * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
+ * * by the U.S. Government is subject to restrictions as set *
+ * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
+ * * or in FAR 52.227-19, as applicable. *
+ * * *
+ * *****************************************************************
+ */
+#include_next <stddef.h>
+
+#ifdef NULL
+#undef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL 0L
+#endif
+#endif
diff --git a/lang/compaq-cc/files/include/stdio.h b/lang/compaq-cc/files/include/stdio.h
new file mode 100644
index 000000000000..c18700deed83
--- /dev/null
+++ b/lang/compaq-cc/files/include/stdio.h
@@ -0,0 +1,29 @@
+/*
+ * *****************************************************************
+ * * *
+ * * Copyright (c) Compaq Computer Corporation, 1999, 2000 *
+ * * *
+ * * All Rights Reserved. Unpublished rights reserved under *
+ * * the copyright laws of the United States. *
+ * * *
+ * * The software contained on this media is proprietary to *
+ * * and embodies the confidential technology of Compaq *
+ * * Computer Corporation. Possession, use, duplication or *
+ * * dissemination of the software and media is authorized only *
+ * * pursuant to a valid written license from Compaq Computer *
+ * * Corporation. *
+ * * *
+ * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
+ * * by the U.S. Government is subject to restrictions as set *
+ * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
+ * * or in FAR 52.227-19, as applicable. *
+ * * *
+ * *****************************************************************
+ */
+#include_next <stdio.h>
+#undef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL 0L
+#endif
diff --git a/lang/compaq-cc/files/include/sys/cdefs.h b/lang/compaq-cc/files/include/sys/cdefs.h
new file mode 100644
index 000000000000..1b3a79577fba
--- /dev/null
+++ b/lang/compaq-cc/files/include/sys/cdefs.h
@@ -0,0 +1,45 @@
+/*
+ * *****************************************************************
+ * * *
+ * * Copyright (c) Compaq Computer Corporation, 1999, 2000 *
+ * * *
+ * * All Rights Reserved. Unpublished rights reserved under *
+ * * the copyright laws of the United States. *
+ * * *
+ * * The software contained on this media is proprietary to *
+ * * and embodies the confidential technology of Compaq *
+ * * Computer Corporation. Possession, use, duplication or *
+ * * dissemination of the software and media is authorized only *
+ * * pursuant to a valid written license from Compaq Computer *
+ * * Corporation. *
+ * * *
+ * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
+ * * by the U.S. Government is subject to restrictions as set *
+ * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
+ * * or in FAR 52.227-19, as applicable. *
+ * * *
+ * *****************************************************************
+ */
+#ifndef _CCC_SYS_CDEFS_H_
+#define _CCC_SYS_CDEFS_H_
+
+#include_next <sys/cdefs.h>
+
+/*
+** ccc recognizes const, signed, and volatile in all modes.
+*/
+#undef const
+#undef signed
+#undef volatile
+
+#undef __const
+#undef __signed
+#undef __volatile
+
+#define __const const
+#define __signed signed
+#define __volatile volatile
+
+#undef __inline
+
+#endif /* _CCC_SYS_CDEFS_H_ */
diff --git a/lang/compaq-cc/files/include/sys/types.h b/lang/compaq-cc/files/include/sys/types.h
new file mode 100644
index 000000000000..bd9b2e421100
--- /dev/null
+++ b/lang/compaq-cc/files/include/sys/types.h
@@ -0,0 +1,37 @@
+/*
+ * *****************************************************************
+ * * *
+ * * Copyright (c) Compaq Computer Corporation, 1999, 2000 *
+ * * *
+ * * All Rights Reserved. Unpublished rights reserved under *
+ * * the copyright laws of the United States. *
+ * * *
+ * * The software contained on this media is proprietary to *
+ * * and embodies the confidential technology of Compaq *
+ * * Computer Corporation. Possession, use, duplication or *
+ * * dissemination of the software and media is authorized only *
+ * * pursuant to a valid written license from Compaq Computer *
+ * * Corporation. *
+ * * *
+ * * RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure *
+ * * by the U.S. Government is subject to restrictions as set *
+ * * forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, *
+ * * or in FAR 52.227-19, as applicable. *
+ * * *
+ * *****************************************************************
+ */
+#ifndef _CCC_SYS_TYPES_H_
+#define _CCC_SYS_TYPES_H_
+
+#ifndef __int8_t_defined
+typedef long int int64_t;
+typedef unsigned long int u_int64_t;
+#endif
+
+#include_next <sys/types.h>
+
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__ 1
+#endif
+
+#endif /* _CCC_SYS_TYPES_H_ */
diff --git a/lang/compaq-cc/pkg-plist b/lang/compaq-cc/pkg-plist
index fe5e5157b3b4..e56e4032207c 100644
--- a/lang/compaq-cc/pkg-plist
+++ b/lang/compaq-cc/pkg-plist
@@ -118,6 +118,7 @@ usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/__DECC_include_prologue.h
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/as
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/ccc
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/comp.config
+usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/comp.config.ORIG
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/cpp.Linux-bad
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/cpp
usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/create-comp-config.sh
@@ -162,6 +163,13 @@ usr/man/man1/ccc.1
usr/man/man8/protect_headers_setup.8
usr/man/rsml
usr/man/sml
+@comment Insert PLIST.alpha-freebsd here
+@comment -=[ begin PLIST.alpha-freebsd ]=-
+@comment -=[ end PLIST.alpha-freebsd ]=-
+@unexec rm -f %D/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/as
+@unexec rm -f %D/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/cpp
+@unexec rm -f %D/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/bin/ld
+@unexec rm -f %D/usr/lib/compaq/ccc-6.2.9.504-2/alpha-linux/include/machine
@dirrm usr/doc/ccc-6.2.9.504/Language_Reference
@dirrm usr/doc/ccc-6.2.9.504/Programmers_Guide
@dirrm usr/doc/ccc-6.2.9.504