1/* 2 * Copyright (c) 2007, 2008, 2009, ETH Zurich. 3 * All rights reserved. 4 * 5 * This file is distributed under the terms in the attached LICENSE file. 6 * If you do not find this file, copies can be found by writing to: 7 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group. 8 */ 9 10#include <barrelfish/barrelfish.h> 11#include <barrelfish/caddr.h> 12#include <barrelfish/dispatch.h> 13 14#include <barrelfish/syscalls.h> 15#include <barrelfish/syscall_arch.h> 16#include <barrelfish_kpi/syscalls.h> 17 18STATIC_ASSERT_SIZEOF(struct sysret, 2 * sizeof(uintptr_t)); 19STATIC_ASSERT_OFFSETOF(struct sysret, error, 0 * sizeof(uintptr_t)); 20STATIC_ASSERT_OFFSETOF(struct sysret, value, 1 * sizeof(uintptr_t)); 21STATIC_ASSERT(SYSCALL_REG == 0, "Bad register for system call argument."); 22 23// 24// System call wrappers 25// 26 27void 28sys_armv7_cache_clean_pou(void *start, void *end) { 29 struct sysret r= 30 syscall4(SYSCALL_ARMv7_CACHE_CLEAN, 31 (uint32_t)start, (uint32_t)end, 0); 32 assert(err_is_ok(r.error)); 33} 34 35void 36sys_armv7_cache_clean_poc(void *start, void *end) { 37 struct sysret r= 38 syscall4(SYSCALL_ARMv7_CACHE_CLEAN, 39 (uint32_t)start, (uint32_t)end, 1); 40 assert(err_is_ok(r.error)); 41} 42 43void 44sys_armv7_cache_invalidate(void *start, void *end) { 45 struct sysret r= 46 syscall3(SYSCALL_ARMv7_CACHE_INVAL, 47 (uint32_t)start, (uint32_t)end); 48 assert(err_is_ok(r.error)); 49} 50