1*f7aae1f1Szrj /* 2*f7aae1f1Szrj * Copyright (c) 2019 The DragonFly Project. All rights reserved. 3*f7aae1f1Szrj * 4*f7aae1f1Szrj * Redistribution and use in source and binary forms, with or without 5*f7aae1f1Szrj * modification, are permitted provided that the following conditions 6*f7aae1f1Szrj * are met: 7*f7aae1f1Szrj * 1. Redistributions of source code must retain the above copyright 8*f7aae1f1Szrj * notice, this list of conditions and the following disclaimer. 9*f7aae1f1Szrj * 2. Redistributions in binary form must reproduce the above copyright 10*f7aae1f1Szrj * notice, this list of conditions and the following disclaimer in the 11*f7aae1f1Szrj * documentation and/or other materials provided with the distribution. 12*f7aae1f1Szrj * 13*f7aae1f1Szrj * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 14*f7aae1f1Szrj * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 15*f7aae1f1Szrj * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 16*f7aae1f1Szrj * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 17*f7aae1f1Szrj * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 18*f7aae1f1Szrj * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 19*f7aae1f1Szrj * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20*f7aae1f1Szrj * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 21*f7aae1f1Szrj * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22*f7aae1f1Szrj * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 23*f7aae1f1Szrj * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*f7aae1f1Szrj * SUCH DAMAGE. 25*f7aae1f1Szrj */ 26*f7aae1f1Szrj 27*f7aae1f1Szrj #ifndef _CPU_ALIGNBYTES_H_ 28*f7aae1f1Szrj #define _CPU_ALIGNBYTES_H_ 29*f7aae1f1Szrj 30*f7aae1f1Szrj /* 31*f7aae1f1Szrj * __ALIGNPTR(p) rounds p (pointer or byte index) up to a correctly-aligned 32*f7aae1f1Szrj * value for all data types (int, long, ...). The result is an 33*f7aae1f1Szrj * unsigned long and must be cast to any desired pointer type. 34*f7aae1f1Szrj */ 35*f7aae1f1Szrj #define __ALIGNBYTES (sizeof(long) - 1) 36*f7aae1f1Szrj #define __ALIGNPTR(p) (((unsigned long)(p) + __ALIGNBYTES) & ~__ALIGNBYTES) 37*f7aae1f1Szrj 38*f7aae1f1Szrj #endif /* !_CPU_ALIGNBYTES_H_ */ 39