From 1947d15c4853c2c913fe047d92de51643e230c72 Mon Sep 17 00:00:00 2001 From: uz Date: Mon, 26 Dec 2011 22:38:06 +0000 Subject: [PATCH] New include file for address alignment. git-svn-id: svn://svn.cc65.org/cc65/trunk@5313 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/common/alignment.h | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/common/alignment.h diff --git a/src/common/alignment.h b/src/common/alignment.h new file mode 100644 index 000000000..795797ae8 --- /dev/null +++ b/src/common/alignment.h @@ -0,0 +1,71 @@ +/*****************************************************************************/ +/* */ +/* alignment.h */ +/* */ +/* Address aligment */ +/* */ +/* */ +/* */ +/* (C) 2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* 70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef ALIGNMENT_H +#define ALIGNMENT_H + + + +/* common */ +#include "inline.h" + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +#if defined(HAVE_INLINE) +INLINE unsigned long AlignAddr (unsigned long Addr, unsigned long Alignment) +/* Align an address to the given alignment */ +{ + return ((Addr + Alignment - 1) / Alignment) * Alignment; +} +#else +/* Beware: Evaluates the argument more than once! */ +# define AlignAddr(Addr, Alignment) \ + ((((Addr) + (Alignment) - 1) / (Alignment)) * (Alignment)) +#endif + + + +/* End of alignment.h */ + +#endif + + + -- 2.39.5