1/* 2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23#ifndef RLD 24/* This has to be -D__3_2_User_with_hppa__ when compiling for 3.2 hp */ 25#ifdef __3_2_User_with_hppa__ 26 27#include <mach/mach.h> 28#include "stuff/vm_flush_cache.h" 29 30/* 31 * This is currently only implemented on the hppa architecture so versions for 32 * the other architectures are hacked in here. 33 */ 34#ifndef __hppa__ 35__private_extern__ 36kern_return_t 37vm_flush_cache( 38mach_port_t target_task, 39vm_address_t address, 40vm_size_t size) 41{ 42#ifdef __m68k__ 43 asm("trap #2"); 44#endif 45#ifdef __i386__ 46 asm("jmp 1f"); 47 asm("1: nop"); 48#endif 49#ifdef __m88k__ 50 user_cache_flush(address, size); 51#endif 52#ifdef __ppc__ 53 user_cache_flush(address, size); 54#endif 55 return(KERN_SUCCESS); 56} 57#endif /* !defined(__hppa__) */ 58 59#else /* undef(__3_2_User_with_hppa__) */ 60 61#include <mach/mach.h> 62#include "stuff/vm_flush_cache.h" 63 64/* 65 * This is currently only implemented on the hppa architecture so versions for 66 * the other architectures are hacked in here. 67 */ 68__private_extern__ 69kern_return_t 70vm_flush_cache( 71mach_port_t target_task, 72vm_address_t address, 73vm_size_t size) 74{ 75#if !defined(__m68k__) && !defined(__i386__) 76 vm_machine_attribute_val_t value; 77 value = MATTR_VAL_ICACHE_FLUSH; 78 return(vm_machine_attribute(target_task, address, size, MATTR_CACHE, 79 &value)); 80#endif 81#ifdef __m68k__ 82 asm("trap #2"); 83 return(KERN_SUCCESS); 84#endif 85#ifdef __i386__ 86 asm("jmp 1f"); 87 asm("1: nop"); 88 return(KERN_SUCCESS); 89#endif 90} 91 92#endif /* __3_2_User_with_hppa__ */ 93#endif /* !defined(RLD) */ 94