OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

[/] [eco32/] [tags/] [eco32-0.22/] [monitor/] [monitor-digilent/] [mmu.h] - Blame information for rev 211

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 16 hellwig
/*
2
 * mmu.h -- memory and TLB access
3
 */
4
 
5
 
6
#ifndef _MMU_H_
7
#define _MMU_H_
8
 
9
 
10
#define TLB_SHFT        5               /* log2 of number of TLB entries */
11
#define TLB_SIZE        (1 << TLB_SHFT) /* total number of TLB entries */
12
#define TLB_MASK        (TLB_SIZE - 1)  /* mask for number of TLB entries */
13
#define TLB_FIXED       4               /* number of fixed TLB entries */
14
 
15
#define TLB_WRITE       (1 << 1)        /* write bit in EntryLo */
16
#define TLB_VALID       (1 << 0)        /* valid bit in EntryLo */
17
 
18
 
19
typedef struct {
20
  Word page;            /* 20 high-order bits of virtual address */
21
  Word frame;           /* 20 high-order bits of physical address */
22
  Bool write;           /* must be true to allow writing to the page */
23
  Bool valid;           /* must be true for the entry to be valid */
24
} TLB_Entry;
25
 
26
 
27
Word mmuReadWord(Word vAddr);
28
Half mmuReadHalf(Word vAddr);
29
Byte mmuReadByte(Word vAddr);
30
void mmuWriteWord(Word vAddr, Word data);
31
void mmuWriteHalf(Word vAddr, Half data);
32
void mmuWriteByte(Word vAddr, Byte data);
33
 
34
Word mmuGetIndex(void);
35
void mmuSetIndex(Word value);
36
Word mmuGetEntryHi(void);
37
void mmuSetEntryHi(Word value);
38
Word mmuGetEntryLo(void);
39
void mmuSetEntryLo(Word Value);
40
 
41
TLB_Entry mmuGetTLB(int index);
42
void mmuSetTLB(int index, TLB_Entry tlbEntry);
43
 
44
 
45
#endif /* _MMU_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.