- 829AA035034216A965A6FDB18CC9039D873575B8F4CB592178928A830EE2F35AE58210349277ECEA5ECF70D1BA615F61F3443322FB7E650C5EA39954288358AC+
zfp/adainclude/system.ads(1 . 135)(0 . 0)
 499 ------------------------------------------------------------------------------
 500 ------------------------------------------------------------------------------
 501 -- You do not have, nor can you ever acquire the right to use, copy or      --
 502 -- distribute this software ; Should you use this software for any purpose, --
 503 -- or copy and distribute it to anyone or in any manner, you are breaking   --
 504 -- the laws of whatever soi-disant jurisdiction, and you promise to         --
 505 -- continue doing so for the indefinite future. In any case, please         --
 506 -- always : read and understand any software ; verify any PGP signatures    --
 507 -- that you use - for any purpose.                                          --
 508 --                                                                          --
 509 -- See also http://trilema.com/2015/a-new-software-licensing-paradigm .     --
 510 ------------------------------------------------------------------------------
 511 ------------------------------------------------------------------------------
 512 
 513 package System is
 514    pragma Pure;
 515    --  Note that we take advantage of the implementation permission to make
 516    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
 517    --  2005, this is Pure in any case (AI-362).
 518 
 519    pragma No_Elaboration_Code_All;
 520    --  Allow the use of that restriction in units that WITH this unit
 521 
 522    type Name is (SYSTEM_NAME_GNAT);
 523    System_Name : constant Name := SYSTEM_NAME_GNAT;
 524 
 525    --  System-Dependent Named Numbers
 526 
 527    Min_Int               : constant := Long_Long_Integer'First;
 528    Max_Int               : constant := Long_Long_Integer'Last;
 529 
 530    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
 531    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
 532 
 533    Max_Base_Digits       : constant := Long_Long_Float'Digits;
 534    Max_Digits            : constant := Long_Long_Float'Digits;
 535 
 536    Max_Mantissa          : constant := 63;
 537    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
 538 
 539    Tick                  : constant := 0.000_001;
 540 
 541    --  Storage-related Declarations
 542 
 543    type Address is private;
 544    pragma Preelaborable_Initialization (Address);
 545    Null_Address : constant Address;
 546 
 547    Storage_Unit : constant := 8;
 548    Word_Size    : constant := Standard'Word_Size;
 549    Memory_Size  : constant := 2 ** Word_Size;
 550 
 551    --  Address comparison
 552 
 553    function "<"  (Left, Right : Address) return Boolean;
 554    function "<=" (Left, Right : Address) return Boolean;
 555    function ">"  (Left, Right : Address) return Boolean;
 556    function ">=" (Left, Right : Address) return Boolean;
 557    function "="  (Left, Right : Address) return Boolean;
 558 
 559    pragma Import (Intrinsic, "<");
 560    pragma Import (Intrinsic, "<=");
 561    pragma Import (Intrinsic, ">");
 562    pragma Import (Intrinsic, ">=");
 563    pragma Import (Intrinsic, "=");
 564 
 565    --  Other System-Dependent Declarations
 566 
 567    type Bit_Order is (High_Order_First, Low_Order_First);
 568    Default_Bit_Order : constant Bit_Order := Low_Order_First;
 569    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
 570 
 571    --  Priority-related Declarations (RM D.1)
 572 
 573    --  0 .. 98 corresponds to the system priority range 1 .. 99.
 574    --
 575    --  If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use
 576    --  of the entire range provided by the system.
 577    --
 578    --  If the scheduling policy is SCHED_OTHER the only valid system priority
 579    --  is 1 and other values are simply ignored.
 580 
 581    Max_Priority           : constant Positive := 97;
 582    Max_Interrupt_Priority : constant Positive := 98;
 583 
 584    subtype Any_Priority       is Integer      range  0 .. 98;
 585    subtype Priority           is Any_Priority range  0 .. 97;
 586    subtype Interrupt_Priority is Any_Priority range 98 .. 98;
 587 
 588    Default_Priority : constant Priority := 48;
 589 
 590 private
 591 
 592    type Address is mod Memory_Size;
 593    Null_Address : constant Address := 0;
 594 
 595    --------------------------------------
 596    -- System Implementation Parameters --
 597    --------------------------------------
 598 
 599    --  These parameters provide information about the target that is used
 600    --  by the compiler. They are in the private part of System, where they
 601    --  can be accessed using the special circuitry in the Targparm unit
 602    --  whose source should be consulted for more detailed descriptions
 603    --  of the individual switch values.
 604 
 605    Backend_Divide_Checks     : constant Boolean := False;
 606    Backend_Overflow_Checks   : constant Boolean := True;
 607    Command_Line_Args         : constant Boolean := False;
 608    Configurable_Run_Time     : constant Boolean := True;
 609    Denorm                    : constant Boolean := True;
 610    Duration_32_Bits          : constant Boolean := False;
 611    Exit_Status_Supported     : constant Boolean := True;
 612    Fractional_Fixed_Ops      : constant Boolean := False;
 613    Frontend_Layout           : constant Boolean := False;
 614    Machine_Overflows         : constant Boolean := False;
 615    Machine_Rounds            : constant Boolean := True;
 616    Preallocated_Stacks       : constant Boolean := False;
 617    Signed_Zeros              : constant Boolean := True;
 618    Stack_Check_Default       : constant Boolean := False;
 619    Stack_Check_Probes        : constant Boolean := True;
 620    Stack_Check_Limits        : constant Boolean := False;
 621    Support_Aggregates        : constant Boolean := True;
 622    Support_Atomic_Primitives : constant Boolean := True;
 623    Support_Composite_Assign  : constant Boolean := True;
 624    Support_Composite_Compare : constant Boolean := True;
 625    Support_Long_Shifts       : constant Boolean := True;
 626    Always_Compatible_Rep     : constant Boolean := False;
 627    Suppress_Standard_Library : constant Boolean := True;
 628    Use_Ada_Main_Program_Name : constant Boolean := False;
 629    Frontend_Exceptions       : constant Boolean := False;
 630    ZCX_By_Default            : constant Boolean := True;
 631    Run_Time_Name : constant String := "FFA Run Time";
 632 
 633 end System;