1083a11a3SMarcus Overhagen /* 2083a11a3SMarcus Overhagen * Copyright (c) 2004-2007 Marcus Overhagen <marcus@overhagen.de> 3083a11a3SMarcus Overhagen * 4083a11a3SMarcus Overhagen * Permission is hereby granted, free of charge, to any person 5083a11a3SMarcus Overhagen * obtaining a copy of this software and associated documentation 6083a11a3SMarcus Overhagen * files (the "Software"), to deal in the Software without restriction, 7083a11a3SMarcus Overhagen * including without limitation the rights to use, copy, modify, 8083a11a3SMarcus Overhagen * merge, publish, distribute, sublicense, and/or sell copies of 9083a11a3SMarcus Overhagen * the Software, and to permit persons to whom the Software is 10083a11a3SMarcus Overhagen * furnished to do so, subject to the following conditions: 11083a11a3SMarcus Overhagen * 12083a11a3SMarcus Overhagen * The above copyright notice and this permission notice shall be 13083a11a3SMarcus Overhagen * included in all copies or substantial portions of the Software. 14083a11a3SMarcus Overhagen * 15083a11a3SMarcus Overhagen * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16083a11a3SMarcus Overhagen * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17083a11a3SMarcus Overhagen * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18083a11a3SMarcus Overhagen * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19083a11a3SMarcus Overhagen * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20083a11a3SMarcus Overhagen * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21083a11a3SMarcus Overhagen * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22083a11a3SMarcus Overhagen * OTHER DEALINGS IN THE SOFTWARE. 23083a11a3SMarcus Overhagen */ 24083a11a3SMarcus Overhagen 25083a11a3SMarcus Overhagen #ifndef __UTIL_H 26083a11a3SMarcus Overhagen #define __UTIL_H 27083a11a3SMarcus Overhagen 28083a11a3SMarcus Overhagen #include <OS.h> 29083a11a3SMarcus Overhagen 30*6849e7ccSJérôme Duval area_id map_mem(void **virt, phys_addr_t phy, size_t size, uint32 protection, 31*6849e7ccSJérôme Duval const char *name); 32*6849e7ccSJérôme Duval area_id alloc_mem(void **virt, phys_addr_t *phy, size_t size, uint32 protection, 33*6849e7ccSJérôme Duval const char *name); 34083a11a3SMarcus Overhagen 35083a11a3SMarcus Overhagen // generic macro for rounding, can only be used for power of 2 blocksize 36083a11a3SMarcus Overhagen #define ROUNDUP(size, blocksize) (((size) + (blocksize) - 1) & ~((blocksize) - 1)) 37083a11a3SMarcus Overhagen 38083a11a3SMarcus Overhagen #define atomic_read(a) atomic_or(a, 0) 39083a11a3SMarcus Overhagen 40083a11a3SMarcus Overhagen #endif 41