pagetable.hh revision 5184
14159Sgblack@eecs.umich.edu/*
24159Sgblack@eecs.umich.edu * Copyright (c) 2007 The Hewlett-Packard Development Company
34159Sgblack@eecs.umich.edu * All rights reserved.
44159Sgblack@eecs.umich.edu *
54159Sgblack@eecs.umich.edu * Redistribution and use of this software in source and binary forms,
64159Sgblack@eecs.umich.edu * with or without modification, are permitted provided that the
74159Sgblack@eecs.umich.edu * following conditions are met:
84159Sgblack@eecs.umich.edu *
94159Sgblack@eecs.umich.edu * The software must be used only for Non-Commercial Use which means any
104159Sgblack@eecs.umich.edu * use which is NOT directed to receiving any direct monetary
114159Sgblack@eecs.umich.edu * compensation for, or commercial advantage from such use.  Illustrative
124159Sgblack@eecs.umich.edu * examples of non-commercial use are academic research, personal study,
134159Sgblack@eecs.umich.edu * teaching, education and corporate research & development.
144159Sgblack@eecs.umich.edu * Illustrative examples of commercial use are distributing products for
154159Sgblack@eecs.umich.edu * commercial advantage and providing services using the software for
164159Sgblack@eecs.umich.edu * commercial advantage.
174159Sgblack@eecs.umich.edu *
184159Sgblack@eecs.umich.edu * If you wish to use this software or functionality therein that may be
194159Sgblack@eecs.umich.edu * covered by patents for commercial use, please contact:
204159Sgblack@eecs.umich.edu *     Director of Intellectual Property Licensing
214159Sgblack@eecs.umich.edu *     Office of Strategy and Technology
224159Sgblack@eecs.umich.edu *     Hewlett-Packard Company
234159Sgblack@eecs.umich.edu *     1501 Page Mill Road
244159Sgblack@eecs.umich.edu *     Palo Alto, California  94304
254159Sgblack@eecs.umich.edu *
264159Sgblack@eecs.umich.edu * Redistributions of source code must retain the above copyright notice,
274159Sgblack@eecs.umich.edu * this list of conditions and the following disclaimer.  Redistributions
284159Sgblack@eecs.umich.edu * in binary form must reproduce the above copyright notice, this list of
294159Sgblack@eecs.umich.edu * conditions and the following disclaimer in the documentation and/or
304159Sgblack@eecs.umich.edu * other materials provided with the distribution.  Neither the name of
314159Sgblack@eecs.umich.edu * the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
324159Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
334159Sgblack@eecs.umich.edu * this software without specific prior written permission.  No right of
344159Sgblack@eecs.umich.edu * sublicense is granted herewith.  Derivatives of the software and
354159Sgblack@eecs.umich.edu * output created using the software may be prepared, but only for
364159Sgblack@eecs.umich.edu * Non-Commercial Uses.  Derivatives of the software may be shared with
374159Sgblack@eecs.umich.edu * others provided: (i) the others agree to abide by the list of
384159Sgblack@eecs.umich.edu * conditions herein which includes the Non-Commercial Use restrictions;
394159Sgblack@eecs.umich.edu * and (ii) such Derivatives of the software include the above copyright
404159Sgblack@eecs.umich.edu * notice to acknowledge the contribution from this software where
414159Sgblack@eecs.umich.edu * applicable, this list of conditions and the disclaimer below.
424159Sgblack@eecs.umich.edu *
434159Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
444159Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
454159Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
464159Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
474159Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
484159Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
494159Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
504159Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
514159Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
524159Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
534159Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
544159Sgblack@eecs.umich.edu *
554159Sgblack@eecs.umich.edu * Authors: Gabe Black
564159Sgblack@eecs.umich.edu */
574159Sgblack@eecs.umich.edu
584159Sgblack@eecs.umich.edu#ifndef __ARCH_X86_PAGETABLE_HH__
594159Sgblack@eecs.umich.edu#define __ARCH_X86_PAGETABLE_HH__
604159Sgblack@eecs.umich.edu
615124Sgblack@eecs.umich.edu#include <iostream>
625124Sgblack@eecs.umich.edu#include <string>
635124Sgblack@eecs.umich.edu
644159Sgblack@eecs.umich.edu#include "sim/host.hh"
654159Sgblack@eecs.umich.edu#include "base/misc.hh"
664159Sgblack@eecs.umich.edu
675124Sgblack@eecs.umich.educlass Checkpoint;
685124Sgblack@eecs.umich.edu
694159Sgblack@eecs.umich.edunamespace X86ISA
704159Sgblack@eecs.umich.edu{
714159Sgblack@eecs.umich.edu    struct VAddr
724159Sgblack@eecs.umich.edu    {
734159Sgblack@eecs.umich.edu        VAddr(Addr a) { panic("not implemented yet."); }
744159Sgblack@eecs.umich.edu    };
754159Sgblack@eecs.umich.edu
765124Sgblack@eecs.umich.edu    struct TlbEntry
774159Sgblack@eecs.umich.edu    {
785124Sgblack@eecs.umich.edu        // The base of the physical page.
795184Sgblack@eecs.umich.edu        Addr paddr;
805184Sgblack@eecs.umich.edu
815184Sgblack@eecs.umich.edu        // The beginning of the virtual page this entry maps.
825184Sgblack@eecs.umich.edu        Addr vaddr;
835184Sgblack@eecs.umich.edu        // The size of the page this entry represents.
845184Sgblack@eecs.umich.edu        Addr size;
855184Sgblack@eecs.umich.edu
865124Sgblack@eecs.umich.edu        // Read permission is always available, assuming it isn't blocked by
875124Sgblack@eecs.umich.edu        // other mechanisms.
885184Sgblack@eecs.umich.edu        bool writable;
895124Sgblack@eecs.umich.edu        // Whether this page is accesible without being in supervisor mode.
905124Sgblack@eecs.umich.edu        bool user;
915124Sgblack@eecs.umich.edu        // Whether to use write through or write back. M5 ignores this and
925124Sgblack@eecs.umich.edu        // lets the caches handle the writeback policy.
935124Sgblack@eecs.umich.edu        //bool pwt;
945124Sgblack@eecs.umich.edu        // Whether the page is cacheable or not.
955124Sgblack@eecs.umich.edu        bool uncacheable;
965124Sgblack@eecs.umich.edu        // Whether or not to kick this page out on a write to CR3.
975124Sgblack@eecs.umich.edu        bool global;
985124Sgblack@eecs.umich.edu        // A bit used to form an index into the PAT table.
995124Sgblack@eecs.umich.edu        bool patBit;
1005124Sgblack@eecs.umich.edu        // Whether or not memory on this page can be executed.
1015124Sgblack@eecs.umich.edu        bool noExec;
1025124Sgblack@eecs.umich.edu
1035184Sgblack@eecs.umich.edu        TlbEntry(Addr asn, Addr _vaddr, Addr _paddr);
1045184Sgblack@eecs.umich.edu        TlbEntry() {}
1055124Sgblack@eecs.umich.edu
1065184Sgblack@eecs.umich.edu        Addr pageStart()
1075184Sgblack@eecs.umich.edu        {
1085184Sgblack@eecs.umich.edu            return paddr;
1095184Sgblack@eecs.umich.edu        }
1105124Sgblack@eecs.umich.edu
1115124Sgblack@eecs.umich.edu        void serialize(std::ostream &os);
1125124Sgblack@eecs.umich.edu        void unserialize(Checkpoint *cp, const std::string &section);
1134159Sgblack@eecs.umich.edu    };
1144159Sgblack@eecs.umich.edu}
1154159Sgblack@eecs.umich.edu
1164159Sgblack@eecs.umich.edu#endif
117