/// @file
///  This is set of useful macros.
///
/// Copyright (c) 2006, Intel Corporation
/// All rights reserved. This program and the accompanying materials
/// are licensed and made available under the terms and conditions of the BSD License
/// which accompanies this distribution.  The full text of the license may be found at
/// http://opensource.org/licenses/bsd-license.php
///
/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
///
/// Module Name: Common.i
///
///


#define NESTED_SETUP(i,l,o,r)               \
         alloc loc1=ar##.##pfs,i,l,o,r ;    \
         mov loc0=b0 ;;


#define NESTED_RETURN                       \
         mov b0=loc0 ;                      \
         mov ar##.##pfs=loc1 ;;             \
         br##.##ret##.##dpnt  b0 ;;

#define MASK(bp,value)  (value << bp)

