Back to home page

LXR

 
 

    


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_SUN4U_FRAME_H_
0036 #define KERN_sparc64_SUN4U_FRAME_H_
0037 
0038 /*
0039  * Page size supported by the MMU.
0040  * For 8K there is the nasty illegal virtual aliasing problem.
0041  * Therefore, the kernel uses 8K only internally on the TLB and TSB levels.
0042  */
0043 #define MMU_FRAME_WIDTH     13  /* 8K */
0044 #define MMU_FRAME_SIZE      (1 << MMU_FRAME_WIDTH)
0045 
0046 /*
0047  * Page size exported to the generic memory management subsystems.
0048  * This page size is not directly supported by the MMU, but we can emulate
0049  * each 16K page with a pair of adjacent 8K pages.
0050  */
0051 #define FRAME_WIDTH     14  /* 16K */
0052 #define FRAME_SIZE      (1 << FRAME_WIDTH)
0053 
0054 #ifdef KERNEL
0055 #ifndef __ASM__
0056 
0057 #include <arch/types.h>
0058 
0059 union frame_address {
0060     uintptr_t address;
0061     struct {
0062 #if defined (US)
0063         unsigned : 23;
0064         uint64_t pfn : 28;      /**< Physical Frame Number. */
0065 #elif defined (US3)
0066         unsigned : 21;
0067         uint64_t pfn : 30;      /**< Physical Frame Number. */
0068 #endif
0069         unsigned offset : 13;       /**< Offset. */
0070     } __attribute__ ((packed));
0071 };
0072 
0073 typedef union frame_address frame_address_t;
0074 
0075 extern uintptr_t last_frame;
0076 extern uintptr_t end_of_identity;
0077 
0078 extern void frame_arch_init(void);
0079 #define physmem_print()
0080 
0081 #endif
0082 #endif
0083 
0084 #endif
0085 
0086 /** @}
0087  */