1/* 2 * Copyright 2010, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Copyright 2005-2009, Axel D��rfler, axeld@pinc-software.de. 4 * Distributed under the terms of the MIT License. 5 * 6 * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. 7 * Distributed under the terms of the NewOS License. 8 */ 9#ifndef KERNEL_ARCH_M68K_PAGING_M68K_PAGING_STRUCTURES_H 10#define KERNEL_ARCH_M68K_PAGING_M68K_PAGING_STRUCTURES_H 11 12 13#include <SupportDefs.h> 14 15#include <heap.h> 16 17#include <smp.h> 18 19 20struct M68KPagingStructures : DeferredDeletable { 21 uint32 pgroot_phys; 22 int32 ref_count; 23 CPUSet active_on_cpus; 24 // mask indicating on which CPUs the map is currently used 25 26 M68KPagingStructures(); 27 virtual ~M68KPagingStructures(); 28 29 inline void AddReference(); 30 inline void RemoveReference(); 31 32 virtual void Delete() = 0; 33}; 34 35 36inline void 37M68KPagingStructures::AddReference() 38{ 39 atomic_add(&ref_count, 1); 40} 41 42 43inline void 44M68KPagingStructures::RemoveReference() 45{ 46 if (atomic_add(&ref_count, -1) == 1) 47 Delete(); 48} 49 50 51#endif // KERNEL_ARCH_M68K_PAGING_M68K_PAGING_STRUCTURES_H 52