pkgsrc-wip/tendra/patches/patch-bl
Thomas Klausner 12732c7ca0 Initial import of (incomplete) tendra package, provided by
Alistair Crooks (agc@netbsd) -- help welcome.

tendra is a multi-targetted BSD-licensed C and C++ compiler.

Alistair says:
At the moment, it can't handle the RENAME()s in NetBSD's header files,
and I build things in a ${WRKSRC}/build directory, and these files need
to be moved to ${PREFIX} in the install stage. The files should also be
checked to see if there are any embedded hardcoded paths, which would
make this approach infeasible.
2003-04-29 09:22:27 +00:00

246 lines
5.6 KiB
Text

$NetBSD: patch-bl,v 1.1.1.1 2003/04/29 09:22:28 thomasklausner Exp $
--- /dev/null 2003-04-28 12:43:56.000000000 +0100
+++ src/lib/machines/netbsd/80x86/tokens/dep_toks.pl 1998-03-16 10:39:19.000000000 +0000
@@ -0,0 +1,241 @@
+/*
+ Crown Copyright (c) 1997
+
+ This TenDRA(r) Computer Program is subject to Copyright
+ owned by the United Kingdom Secretary of State for Defence
+ acting through the Defence Evaluation and Research Agency
+ (DERA). It is made available to Recipients with a
+ royalty-free licence for its use, reproduction, transfer
+ to other parties and amendment for any purpose not excluding
+ product development provided that any such use et cetera
+ shall be deemed to be acceptance of the following conditions:-
+
+ (1) Its Recipients shall ensure that this Notice is
+ reproduced upon any copies or amended versions of it;
+
+ (2) Any amended version of it shall be clearly marked to
+ show both the nature of and the organisation responsible
+ for the relevant amendment or amendments;
+
+ (3) Its onward transfer from a recipient to another
+ party shall be deemed to be that party's acceptance of
+ these conditions;
+
+ (4) DERA gives no warranty or assurance as to its
+ quality or suitability for any purpose and DERA accepts
+ no liability whatsoever in relation to any use to which
+ it may be put.
+*/
+ /* **************************************************** */
+ /* */
+ /* Target Dependency Token Definitions for trans386 */
+ /* */
+ /* **************************************************** */
+
+
+
+
+ /* LOCAL TOKENS */
+
+
+Tokdef REP_V = [] VARIETY
+ /* variety for integer widths and float_sequence */
+var_width (false, 16);
+
+
+Tokdef NATTEST = [a:NAT, comp:NTEST, b:NAT] EXP
+ /* comparison of nats, for static conditionals */
+? { ?(snat_from_nat(false,a)(REP_V) comp snat_from_nat(false,b)(REP_V));
+ 1(REP_V)
+ | 0(REP_V)
+};
+
+
+Tokdef PUN = [from_sh:SHAPE, to_sh:SHAPE, val:EXP] EXP
+ /* representation preserving conversion */
+component (to_sh,
+ Cons [ shape_offset(from_sh) .max. shape_offset(to_sh) ] (
+ offset_zero(alignment(from_sh)) : val
+ ),
+ offset_zero(alignment(to_sh))
+);
+
+
+Tokdef PTR_V = [] VARIETY
+ /* variety for converted pointers */
+var_width (true, 32);
+
+
+
+
+ /* INTEGER VARIETY REPRESENTATIONS */
+
+
+Tokdef .~rep_var_width = [w:NAT] NAT
+NAT ? ( NATTEST [w, <=, 8],
+ 8,
+ NAT ? ( NATTEST [w, <=, 16],
+ 16,
+ NAT ? ( NATTEST [w, <=, 32],
+ 32,
+ NAT ? ( NATTEST [w, <=, 64],
+ 64,
+ 0
+ )
+ )
+ )
+);
+
+
+Tokdef .~rep_atomic_width = [] NAT
+32;
+
+
+
+
+ /* FLOATING VARIETY REPRESENTATIONS */
+
+/* sequence: 1=single, 2=double, 3=extended */
+
+
+Tokdef .~rep_fv = [n:NAT] FLOATING_VARIETY
+FLOATING_VARIETY ? ( NATTEST [n, ==, 1],
+ flvar_parms (2, 24, 126, 127),
+ FLOATING_VARIETY ? ( NATTEST [n, ==, 2],
+ flvar_parms (2, 53, 1022, 1023),
+ flvar_parms (2, 64, 16382, 16383) /* n must be in range */
+ )
+);
+
+
+Tokdef .~rep_fv_width = [n:NAT] NAT
+NAT ? ( NATTEST [n, ==, 1],
+ 32,
+ NAT ? ( NATTEST [n, ==, 2],
+ 64,
+ NAT ? ( NATTEST [n, ==, 3],
+ 80, /* 80 bits memory, increased to 96 by ABI */
+ 0 /* provides test for end of range */
+ )
+ )
+);
+
+
+Tokdef .~rep_fv_radix = [n:NAT] NAT
+2;
+
+
+Tokdef .~rep_fv_mantissa = [n:NAT] NAT
+NAT ? ( NATTEST [n, ==, 1],
+ 24,
+ NAT ? ( NATTEST [n, ==, 2],
+ 53,
+ 64 /* n must be in range */
+ )
+);
+
+
+Tokdef .~rep_fv_min_exp = [n:NAT] NAT
+NAT ? ( NATTEST [n, ==, 1],
+ 149,
+ NAT ? ( NATTEST [n, ==, 2],
+ 1074,
+ 16445 /* n must be in range */
+ )
+);
+
+
+Tokdef .~rep_fv_max_exp = [n:NAT] NAT
+NAT ? ( NATTEST [n, ==, 1],
+ 127,
+ NAT ? ( NATTEST [n, ==, 2],
+ 1023,
+ 16383 /* n must be in range */
+ )
+);
+
+
+Tokdef .~rep_fv_epsilon = [n:NAT] EXP
+EXP ? ( NATTEST [n, ==, 1],
+ (2r1.0 E -23 (.~rep_fv[n])),
+ EXP ? ( NATTEST [n, ==, 2],
+ (2r1.0 E -52 (.~rep_fv[n])),
+ (2r1.0 E -63 (.~rep_fv[n])) /* n must be in range */
+ )
+);
+
+
+Tokdef .~rep_fv_min_val = [n:NAT] EXP
+EXP ? ( NATTEST [n, ==, 1],
+ (2r1.0 E -149 (.~rep_fv[n])),
+ EXP ? ( NATTEST [n, ==, 2],
+ (2r1.0 E -1074 (.~rep_fv[n])),
+ (2r1.0 E -16445 (.~rep_fv[n])) /* n must be in range */
+ )
+);
+
+
+Tokdef .~rep_fv_max_val = [n:NAT] EXP
+EXP ? ( NATTEST [n, ==, 1],
+ (8r3.77777774 E 42
+ (.~rep_fv[n])),
+ EXP ? ( NATTEST [n, ==, 2],
+ (8r1.777777777777777774 E 341
+ (.~rep_fv[n])),
+ (8r1.777777777777777777777 E 5461
+ (.~rep_fv[n])) /* n must be in range */
+ )
+);
+
+
+
+
+ /* NON-NUMERIC REPRESENTATIONS */
+
+
+Tokdef .~ptr_width = [] NAT
+32;
+
+
+Tokdef .~best_div = [] NAT
+2;
+
+
+Tokdef .~little_endian = [] BOOL
+true;
+
+
+
+
+ /* COMMON CONVERSION ROUTINES */
+
+
+Tokdef .~ptr_to_ptr = [a1:ALIGNMENT, a2:ALIGNMENT, p:EXP] EXP
+PUN [ pointer(a1), pointer(a2), p ];
+
+
+Tokdef .~ptr_to_int = [a:ALIGNMENT, v:VARIETY, p:EXP] EXP
+([v] PUN [ pointer(a), integer(PTR_V), p ]);
+
+
+Tokdef .~int_to_ptr = [v:VARIETY, a:ALIGNMENT, i:EXP] EXP
+PUN [ integer(PTR_V), pointer(a), [PTR_V] i ];
+
+
+Tokdef .~f_to_ptr = [a:ALIGNMENT, fn:EXP] EXP
+PUN [ proc, pointer(a), fn ];
+
+
+Tokdef .~ptr_to_f = [a:ALIGNMENT, p:EXP] EXP
+PUN [ pointer(a), proc, p ];
+
+
+
+
+Keep (
+.~rep_var_width, .~rep_atomic_width,
+.~rep_fv, .~rep_fv_width, .~rep_fv_radix, .~rep_fv_mantissa, .~rep_fv_min_exp,
+.~rep_fv_max_exp, .~rep_fv_epsilon, .~rep_fv_min_val, .~rep_fv_max_val,
+.~ptr_width, .~best_div, .~little_endian,
+.~ptr_to_ptr, .~ptr_to_int, .~int_to_ptr, .~f_to_ptr, .~ptr_to_f
+)