1
0
mirror of https://github.com/PDP-10/klh10.git synced 2026-02-06 00:15:26 +00:00
Files
PDP-10.klh10/src/kn10mac.h
2015-04-27 22:54:12 +02:00

60 lines
1.8 KiB
C

/* KLH10 Macro Miscellany
*/
/* $Id: kn10mac.h,v 2.3 2001/11/10 21:28:59 klh Exp $
*/
/* Copyright © 1992, 1993, 2001 Kenneth L. Harrenstien
** All Rights Reserved
**
** This file is part of the KLH10 Distribution. Use, modification, and
** re-distribution is permitted subject to the terms in the file
** named "LICENSE", which contains the full text of the legal notices
** and should always accompany this Distribution.
**
** This software is provided "AS IS" with NO WARRANTY OF ANY KIND.
**
** This notice (including the copyright and warranty disclaimer)
** must be included in all copies or derivations of this software.
*/
/*
* $Log: kn10mac.h,v $
* Revision 2.3 2001/11/10 21:28:59 klh
* Final 2.0 distribution checkin
*
*/
/* Miscellaneous macro stuff that's sometimes useful */
#ifndef KN10MAC_INCLUDED
#define KN10MAC_INCLUDED 1
#ifdef RCSID
RCSID(kn10mac_h,"$Id: kn10mac.h,v 2.3 2001/11/10 21:28:59 klh Exp $")
#endif
/* These field-hacking macros rely on twos-complement arithmetic
** properties such that given a value M, the expression (M & -M) will
** isolate the rightmost ones-bit of M, which will be a simple power
** of 2. This still isn't log2, but if M is a constant then
** a decent compiler should turn multiply and divide of this power-of-2
** into logical shifts.
*/
/* FLD(uval,mask)
** Make integer field value from right-justified unsigned value
** (same as MACSYM's FLD(v,m) macro)
*/
#define FLD(uval,mask) (((uval)*((mask)&(-(mask))))&(mask))
/* FLDGET(ui,mask)
** Get right-justified value from field in unsigned integer
*/
#define FLDGET(ui,mask) (((ui)&(mask))/((mask)&(-(mask))))
/* FLDPUT(ui,mask,uval)
** Put right-justified unsigned value into field in integer
*/
#define FLDPUT(ui,mask,uval) (((ui)&(~(mask)))|FLD(uval,mask))
#endif /* ifndef KN10MAC_INCLUDED */