Initial version
This commit is contained in:
commit
6f405265a5
102 changed files with 14486 additions and 0 deletions
46
code/machine/translate.h
Normal file
46
code/machine/translate.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
// translate.h
|
||||
// Data structures for managing the translation from
|
||||
// virtual page # -> physical page #, used for managing
|
||||
// physical memory on behalf of user programs.
|
||||
//
|
||||
// The data structures in this file are "dual-use" - they
|
||||
// serve both as a page table entry, and as an entry in
|
||||
// a software-managed translation lookaside buffer (TLB).
|
||||
// Either way, each entry is of the form:
|
||||
// <virtual page #, physical page #>.
|
||||
//
|
||||
// DO NOT CHANGE -- part of the machine emulation
|
||||
//
|
||||
// Copyright (c) 1992-1993 The Regents of the University of California.
|
||||
// All rights reserved. See copyright.h for copyright notice and limitation
|
||||
// of liability and disclaimer of warranty provisions.
|
||||
|
||||
#ifndef TLB_H
|
||||
#define TLB_H
|
||||
|
||||
#include "copyright.h"
|
||||
#include "utility.h"
|
||||
|
||||
// The following class defines an entry in a translation table -- either
|
||||
// in a page table or a TLB. Each entry defines a mapping from one
|
||||
// virtual page to one physical page.
|
||||
// In addition, there are some extra bits for access control (valid and
|
||||
// read-only) and some bits for usage information (use and dirty).
|
||||
|
||||
class TranslationEntry {
|
||||
public:
|
||||
unsigned int virtualPage; // The page number in virtual memory, only when
|
||||
// using a TLB
|
||||
unsigned int physicalPage; // The page number in real memory (relative to the
|
||||
// start of "mainMemory"
|
||||
bool valid; // If this bit is cleared, the translation is ignored.
|
||||
// (In other words, the entry hasn't been initialized.)
|
||||
bool readOnly; // If this bit is set, the user program is not allowed
|
||||
// to modify the contents of the page.
|
||||
bool use; // This bit is set by the hardware every time the
|
||||
// page is referenced or modified.
|
||||
bool dirty; // This bit is set by the hardware every time the
|
||||
// page is modified.
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue