4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// IPF specific control register reading functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//---------------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// AsmReadControlRegister
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Reads a 64-bit control register.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Reads and returns the control register specified by Index.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// If Index is invalid then 0xFFFFFFFFFFFFFFFF is returned. This function is only available on IPF.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Arguments :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// On Entry : The index of the control register to read.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Return Value: The control register specified by Index.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//----------------------------------------------------------------------------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // CRs are defined in the ranges 0-25 and 64-81 (with some holes).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Compact this list by subtracting 32 from the top range.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // 0-25, 64-81 -> 0-25, 32-49
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // At this point the predicates contain a bit field of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // CR desired. (The bit is the CR+1, since pr0 is always 1.)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync .pred.rel "mutex",p1,p2,p3,p9,p17,p18,p20,p21,p22,p23,p24,p25,p26,\
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p49,p50
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // This is the translated (-32) range.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Restore predicates and return.