![]() |
|
|||
File indexing completed on 2025-05-11 08:24:09
0001 /* 0002 * Copyright (c) 2005 Jakub Jermar 0003 * All rights reserved. 0004 * 0005 * Redistribution and use in source and binary forms, with or without 0006 * modification, are permitted provided that the following conditions 0007 * are met: 0008 * 0009 * - Redistributions of source code must retain the above copyright 0010 * notice, this list of conditions and the following disclaimer. 0011 * - Redistributions in binary form must reproduce the above copyright 0012 * notice, this list of conditions and the following disclaimer in the 0013 * documentation and/or other materials provided with the distribution. 0014 * - The name of the author may not be used to endorse or promote products 0015 * derived from this software without specific prior written permission. 0016 * 0017 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 0018 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 0019 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 0020 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 0021 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 0022 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 0023 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 0024 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 0025 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 0026 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 0027 */ 0028 0029 /** @addtogroup RTEMSBSPsSPARC64mm 0030 * @{ 0031 */ 0032 /** @file 0033 */ 0034 0035 #ifndef KERN_sparc64_PAGE_H_ 0036 #define KERN_sparc64_PAGE_H_ 0037 0038 #include <arch/mm/frame.h> 0039 0040 /* 0041 * On the TLB and TSB level, we still use 8K pages, which are supported by the 0042 * MMU. 0043 */ 0044 #define MMU_PAGE_WIDTH MMU_FRAME_WIDTH 0045 #define MMU_PAGE_SIZE MMU_FRAME_SIZE 0046 0047 /* 0048 * On the page table level, we use 16K pages. 16K pages are not supported by 0049 * the MMU but we emulate them with pairs of 8K pages. 0050 */ 0051 #define PAGE_WIDTH FRAME_WIDTH 0052 #define PAGE_SIZE FRAME_SIZE 0053 0054 #define MMU_PAGES_PER_PAGE (1 << (PAGE_WIDTH - MMU_PAGE_WIDTH)) 0055 0056 #ifdef KERNEL 0057 0058 #ifndef __ASM__ 0059 0060 #include <arch/interrupt.h> 0061 0062 extern uintptr_t physmem_base; 0063 0064 #define KA2PA(x) (((uintptr_t) (x)) + physmem_base) 0065 #define PA2KA(x) (((uintptr_t) (x)) - physmem_base) 0066 0067 typedef union { 0068 uintptr_t address; 0069 struct { 0070 uint64_t vpn : 51; /**< Virtual Page Number. */ 0071 unsigned offset : 13; /**< Offset. */ 0072 } __attribute__ ((packed)); 0073 } page_address_t; 0074 0075 extern void page_arch_init(void); 0076 0077 #endif /* !def __ASM__ */ 0078 0079 #endif /* KERNEL */ 0080 0081 #endif 0082 0083 /** @} 0084 */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |