-- $Source: /home/harp/1/proto/monoBANK/winnt/stdarg-machine-i386.ads,v $
-- $Revision: 1.4 $ $Date: 95/11/18 18:55:23 $ $Author: jj $
with Interfaces.C;
package Stdarg.Machine is
-- **********************************************************
-- This package describes the differences in machine
-- architectures that need to be known by Stdarg.
--
-- I386 is Intel 386/486/Pentium PC's
-- Sparc is Sun-4 Sparcstation and Sparcserver
-- HP is Hewlett-Packard HP-9000 series 700 and 800
-- Mips is machines based on the MIPS chip, such as SGI
-- PowerPC is Apple-IBM-Motorola Power PC, and IBM RS/6000
-- Alpha is the Digital Equipment Corporation chip.
--
-- To build these packages for a different architecture,
-- change the constant This_Arch to one of the allowed values
-- and recompile.
-- **********************************************************
type Arch is (I386, Sparc, HP, Mips, Alpha, PowerPC);
This_Arch: constant Arch := I386;
type Stack_Growth_Direction is (
Up, -- toward address 0
Down); -- toward high numbered addresses
type Arch_Description_Rec is record
Int_Param_Alignment,
Float_Param_Alignment: Positive;
Stack_Growth: Stack_Growth_Direction;
end record;
SU: constant := System.Storage_Unit;
Arch_Description: constant array (Arch) of Arch_Description_Rec := (
I386 => (
Int_Param_Alignment => C_Param'Size/SU,
Float_Param_Alignment => C_Param'Size/SU,
Stack_Growth => Up)
, Sparc => (
Int_Param_Alignment => C_Param'Size/SU,
Float_Param_Alignment => C_Param'Size/SU,
Stack_Growth => Up)
, HP => (
Int_Param_Alignment => C_Param'Size/SU,
Float_Param_Alignment => Interfaces.C.Double'Size/SU,
Stack_Growth => Down)
, Mips => (
Int_Param_Alignment => C_Param'Size/SU,
Float_Param_Alignment => Interfaces.C.Double'Size/SU,
Stack_Growth => Up)
, Alpha => (
Int_Param_Alignment => C_Param'Size/SU,
Float_Param_Alignment => Interfaces.C.Double'Size/SU,
Stack_Growth => Up)
, PowerPC => (
Int_Param_Alignment => C_Param'Size/SU,
Float_Param_Alignment => C_Param'Size/SU,
Stack_Growth => Up)
);
Desc : Arch_Description_Rec renames
Arch_Description(This_Arch);
Int_Param_Alignment : Positive renames Desc.Int_Param_Alignment;
Float_Param_Alignment: Positive renames Desc.Float_Param_Alignment;
Stack_Growth : Stack_Growth_Direction renames Desc.Stack_Growth;
Param_Size : constant Positive := C_Param'Size/SU;
-------------------------------------------------------------------------------
--
-- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS FURNISHED "AS IS" WITHOUT
-- WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-- TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
-- PURPOSE. The user assumes the entire risk as to the accuracy and the
-- use of this file.
--
-- Copyright (c) Intermetrics, Inc. 1995
-- Royalty-free, unlimited, worldwide, non-exclusive use, modification,
-- reproduction and further distribution of this file is permitted.
--
-------------------------------------------------------------------------------
end Stdarg.Machine;