aboutsummaryrefslogtreecommitdiff
path: root/lang
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
parent832998939f6bb760d7f9cfbac1df4199082216f7 (diff)
downloadports-8c1558cbbcf6467974d62401669ebe03de7c70c4.tar.gz
ports-8c1558cbbcf6467974d62401669ebe03de7c70c4.zip
Notes
Diffstat (limited to 'lang')
-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