; getcr.module  02/07/23

; Copyright (c) 1991, 2002 Allegro Consultants, Inc.
; This source may be freely used only as part of the MIPSTEST program.
; For other uses, please contact info@allegro.com

      .SPACE  $TEXT$
      .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
      .SUBSPA $CODE$

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Procedure get_many_itmrs (int *p)

get_many_itmrs
      .PROC
      .ENTRY
      .EXPORT get_many_itmrs,ENTRY

      MFCTL       16, 21
      MFCTL       16, 20
      MFCTL       16, 19
      MFCTL       16, 1
      MFCTL       16, 31
      MFCTL       16, 28
      MFCTL       16, 25
      MFCTL       16, 24
      MFCTL       16, 23
      MFCTL       16, 22
      STWS,MA      21, 4 (26)
      STWS,MA      20, 4 (26)
      STWS,MA      19, 4 (26)
      STWS,MA      1, 4 (26)
      STWS,MA      31, 4 (26)
      STWS,MA      28, 4 (26)
      STWS,MA      25, 4 (26)
      STWS,MA      24, 4 (26)
      STWS,MA      23, 4 (26)
      STWS,MA      22, 4 (26)
      BV         0 (2)
      NOP
      .CALLINFO
      .EXIT
      .PROCEND

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  Function getcr14 : integer;

getcr14
      .PROC
      .ENTRY
      .EXPORT getcr14,ENTRY

      BV          0 (2)
      MFCTL       14, 28               ; IVA

      .CALLINFO
      .EXIT
      .PROCEND
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  Function getcr16 : integer;

getcr16
      .PROC
      .ENTRY
      .EXPORT getcr16,ENTRY

      BV          0 (2)
      MFCTL       16, 28

      .CALLINFO
      .EXIT
      .PROCEND
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  Function getcr_n (n : integer) : integer;

getcr_n
      .PROC
      .ENTRY
      .EXPORT getcr_n,ENTRY

      DEPI        0, 26, 27, 26        ; limit r26 to 0..31

      BLR         26, 0
      NOP

      MFCTL       0, 28                ; cr0
      BV,N        0 (2)

      MFCTL       1, 28                ; cr1
      BV,N        0 (2)

      MFCTL       2, 28                ; cr2
      BV,N        0 (2)

      MFCTL       3, 28                ; cr3
      BV,N        0 (2)

      MFCTL       4, 28                ; cr4
      BV,N        0 (2)

      MFCTL       5, 28                ; cr5
      BV,N        0 (2)

      MFCTL       6, 28                ; cr6
      BV,N        0 (2)

      MFCTL       7, 28                ; cr7
      BV,N        0 (2)

      MFCTL       8, 28                ; cr8
      BV,N        0 (2)

      MFCTL       9, 28                ; cr9
      BV,N        0 (2)

      MFCTL      10, 28                ; cr10
      BV,N        0 (2)

      MFCTL      11, 28                ; cr11
      BV,N        0 (2)

      MFCTL      12, 28                ; cr12
      BV,N        0 (2)

      MFCTL      13, 28                ; cr13
      BV,N        0 (2)

getcr_n_iva
      MFCTL      14, 28                ; cr14
      BV,N        0 (2)

      MFCTL      15, 28                ; cr15
      BV,N        0 (2)

      MFCTL      16, 28                ; cr16
      BV,N        0 (2)

      MFCTL      17, 28                ; cr17
      BV,N        0 (2)

      MFCTL      18, 28                ; cr18
      BV,N        0 (2)

      MFCTL      19, 28                ; cr19
      BV,N        0 (2)

      MFCTL      20, 28                ; cr20
      BV,N        0 (2)

      MFCTL      21, 28                ; cr21
      BV,N        0 (2)

      MFCTL      22, 28                ; cr22
      BV,N        0 (2)

      MFCTL      23, 28                ; cr23
      BV,N        0 (2)

      MFCTL      24, 28                ; cr24
      BV,N        0 (2)

      MFCTL      25, 28                ; cr25
      BV,N        0 (2)

      MFCTL      26, 28                ; cr26
      BV,N        0 (2)

      MFCTL      27, 28                ; cr27
      BV,N        0 (2)

      MFCTL      28, 28                ; cr28
      BV,N        0 (2)

      MFCTL      29, 28                ; cr29
      BV,N        0 (2)

      MFCTL      30, 28                ; cr30
      BV,N        0 (2)

      MFCTL      31, 28                ; cr31
      BV,N        0 (2)

      NOP

      .CALLINFO
      .EXIT
      .PROCEND
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      .END
