pagetable.hh revision 7399
16019Shines@cs.fsu.edu/* 27399SAli.Saidi@ARM.com * Copyright (c) 2010 ARM Limited 37399SAli.Saidi@ARM.com * All rights reserved 47399SAli.Saidi@ARM.com * 57399SAli.Saidi@ARM.com * The license below extends only to copyright in the software and shall 67399SAli.Saidi@ARM.com * not be construed as granting a license to any other intellectual 77399SAli.Saidi@ARM.com * property including but not limited to intellectual property relating 87399SAli.Saidi@ARM.com * to a hardware implementation of the functionality of the software 97399SAli.Saidi@ARM.com * licensed hereunder. You may use the software subject to the license 107399SAli.Saidi@ARM.com * terms below provided that you ensure that this notice is replicated 117399SAli.Saidi@ARM.com * unmodified and in its entirety in all distributions of the software, 127399SAli.Saidi@ARM.com * modified or unmodified, in source code or in binary form. 137399SAli.Saidi@ARM.com * 146019Shines@cs.fsu.edu * Copyright (c) 2002-2005 The Regents of The University of Michigan 156019Shines@cs.fsu.edu * All rights reserved. 166019Shines@cs.fsu.edu * 176019Shines@cs.fsu.edu * Redistribution and use in source and binary forms, with or without 186019Shines@cs.fsu.edu * modification, are permitted provided that the following conditions are 196019Shines@cs.fsu.edu * met: redistributions of source code must retain the above copyright 206019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer; 216019Shines@cs.fsu.edu * redistributions in binary form must reproduce the above copyright 226019Shines@cs.fsu.edu * notice, this list of conditions and the following disclaimer in the 236019Shines@cs.fsu.edu * documentation and/or other materials provided with the distribution; 246019Shines@cs.fsu.edu * neither the name of the copyright holders nor the names of its 256019Shines@cs.fsu.edu * contributors may be used to endorse or promote products derived from 266019Shines@cs.fsu.edu * this software without specific prior written permission. 276019Shines@cs.fsu.edu * 286019Shines@cs.fsu.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 296019Shines@cs.fsu.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 306019Shines@cs.fsu.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 316019Shines@cs.fsu.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 326019Shines@cs.fsu.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 336019Shines@cs.fsu.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 346019Shines@cs.fsu.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 356019Shines@cs.fsu.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 366019Shines@cs.fsu.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 376019Shines@cs.fsu.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 386019Shines@cs.fsu.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 396019Shines@cs.fsu.edu * 406019Shines@cs.fsu.edu * Authors: Nathan Binkert 416019Shines@cs.fsu.edu * Steve Reinhardt 427399SAli.Saidi@ARM.com * Ali Saidi 436019Shines@cs.fsu.edu */ 446019Shines@cs.fsu.edu 456019Shines@cs.fsu.edu#ifndef __ARCH_ARM_PAGETABLE_H__ 466019Shines@cs.fsu.edu#define __ARCH_ARM_PAGETABLE_H__ 476019Shines@cs.fsu.edu 486019Shines@cs.fsu.edu#include "arch/arm/isa_traits.hh" 496019Shines@cs.fsu.edu#include "arch/arm/utility.hh" 506019Shines@cs.fsu.edu#include "arch/arm/vtophys.hh" 516019Shines@cs.fsu.edu#include "config/full_system.hh" 526019Shines@cs.fsu.edu 536019Shines@cs.fsu.edunamespace ArmISA { 546019Shines@cs.fsu.edu 557399SAli.Saidi@ARM.comstruct VAddr 567399SAli.Saidi@ARM.com{ 577399SAli.Saidi@ARM.com VAddr(Addr a) { panic("not implemented yet."); } 587399SAli.Saidi@ARM.com}; 597399SAli.Saidi@ARM.com 607399SAli.Saidi@ARM.com 617399SAli.Saidi@ARM.com// ITB/DTB page table entry 627399SAli.Saidi@ARM.comstruct PTE 637399SAli.Saidi@ARM.com{ 647399SAli.Saidi@ARM.com void serialize(std::ostream &os) 656019Shines@cs.fsu.edu { 667399SAli.Saidi@ARM.com panic("Need to implement PTE serialization\n"); 677399SAli.Saidi@ARM.com } 686019Shines@cs.fsu.edu 697399SAli.Saidi@ARM.com void unserialize(Checkpoint *cp, const std::string §ion) 707399SAli.Saidi@ARM.com { 717399SAli.Saidi@ARM.com panic("Need to implement PTE serialization\n"); 727399SAli.Saidi@ARM.com } 736019Shines@cs.fsu.edu 747399SAli.Saidi@ARM.com}; 756019Shines@cs.fsu.edu 767399SAli.Saidi@ARM.com// ITB/DTB table entry 777399SAli.Saidi@ARM.comstruct TlbEntry 787399SAli.Saidi@ARM.com{ 797399SAli.Saidi@ARM.com Addr tag; // virtual page number tag 807399SAli.Saidi@ARM.com Addr ppn; // physical page number 817399SAli.Saidi@ARM.com uint8_t asn; // address space number 827399SAli.Saidi@ARM.com bool valid; // valid page table entry 836019Shines@cs.fsu.edu 847399SAli.Saidi@ARM.com 857399SAli.Saidi@ARM.com //Construct an entry that maps to physical address addr. 867399SAli.Saidi@ARM.com TlbEntry(Addr _asn, Addr _vaddr, Addr _paddr) 876019Shines@cs.fsu.edu { 887399SAli.Saidi@ARM.com tag = _vaddr >> PageShift; 897399SAli.Saidi@ARM.com ppn = _paddr >> PageShift; 907399SAli.Saidi@ARM.com asn = _asn; 917399SAli.Saidi@ARM.com valid = true; 927399SAli.Saidi@ARM.com } 936019Shines@cs.fsu.edu 947399SAli.Saidi@ARM.com TlbEntry() 957399SAli.Saidi@ARM.com {} 966019Shines@cs.fsu.edu 977399SAli.Saidi@ARM.com void 987399SAli.Saidi@ARM.com updateVaddr(Addr new_vaddr) 997399SAli.Saidi@ARM.com { 1007399SAli.Saidi@ARM.com tag = new_vaddr >> PageShift; 1017399SAli.Saidi@ARM.com } 1026019Shines@cs.fsu.edu 1037399SAli.Saidi@ARM.com Addr 1047399SAli.Saidi@ARM.com pageStart() 1057399SAli.Saidi@ARM.com { 1067399SAli.Saidi@ARM.com return ppn << PageShift; 1077399SAli.Saidi@ARM.com } 1086019Shines@cs.fsu.edu 1097399SAli.Saidi@ARM.com void serialize(std::ostream &os); 1107399SAli.Saidi@ARM.com void unserialize(Checkpoint *cp, const std::string §ion); 1117399SAli.Saidi@ARM.com}; 1126019Shines@cs.fsu.edu 1137399SAli.Saidi@ARM.com 1146019Shines@cs.fsu.edu 1156019Shines@cs.fsu.edu}; 1166019Shines@cs.fsu.edu#endif // __ARCH_ARM_PAGETABLE_H__ 1176019Shines@cs.fsu.edu 118