github.com/jlmucb/cloudproxy@v0.0.0-20170830161738-b5aa0b619bc4/cpvmm/vmm/utils/math_utils.c (about)

     1  /*
     2   * Copyright (c) 2013 Intel Corporation
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *     http://www.apache.org/licenses/LICENSE-2.0
     8   * Unless required by applicable law or agreed to in writing, software
     9   * distributed under the License is distributed on an "AS IS" BASIS,
    10   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11   * See the License for the specific language governing permissions and
    12   * limitations under the License.
    13   */
    14  
    15  #include "vmm_defs.h"
    16  #include "hw_utils.h"
    17  
    18  UINT32 align_forward_to_power_of_2(UINT64 number)
    19  {
    20      UINT32 msb_index = 0;
    21  
    22      if(0 == number) {
    23          return 1;
    24      }
    25      hw_scan_bit_backward64((UINT32 *)&msb_index, number);
    26      if(! IS_POW_OF_2(number)) {
    27          msb_index++;
    28      }
    29      return (1 << msb_index);
    30  }
    31