xref: /haiku/src/system/kernel/arch/x86/paging/64bit/X86PagingStructures64Bit.cpp (revision 04a0e9c7b68cbe3a43d38e2bca8e860fd80936fb)
1  /*
2   * Copyright 2012, Alex Smith, alex@alex-smith.me.uk.
3   * Distributed under the terms of the MIT License.
4   */
5  
6  
7  #include "paging/64bit/X86PagingStructures64Bit.h"
8  
9  #include <stdlib.h>
10  #include <string.h>
11  
12  #include <KernelExport.h>
13  
14  #include <int.h>
15  
16  #include "paging/64bit/X86PagingMethod64Bit.h"
17  
18  
19  X86PagingStructures64Bit::X86PagingStructures64Bit()
20  	:
21  	fVirtualPML4(NULL)
22  {
23  }
24  
25  
26  X86PagingStructures64Bit::~X86PagingStructures64Bit()
27  {
28  	// Free the PML4.
29  	free(fVirtualPML4);
30  }
31  
32  
33  void
34  X86PagingStructures64Bit::Init(uint64* virtualPML4, phys_addr_t physicalPML4)
35  {
36  	fVirtualPML4 = virtualPML4;
37  	pgdir_phys = physicalPML4;
38  }
39  
40  
41  void
42  X86PagingStructures64Bit::Delete()
43  {
44  	if (are_interrupts_enabled())
45  		delete this;
46  	else
47  		deferred_delete(this);
48  }
49  
50