xref: /openbmc/qemu/target/nios2/mmu.h (revision 8e6fe6b8)
1 /*
2  * Altera Nios II MMU emulation for qemu.
3  *
4  * Copyright (C) 2012 Chris Wulff <crwulff@gmail.com>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, see
18  * <http://www.gnu.org/licenses/lgpl-2.1.html>
19  */
20 
21 #ifndef NIOS2_MMU_H
22 #define NIOS2_MMU_H
23 
24 typedef struct Nios2TLBEntry {
25     target_ulong tag;
26     target_ulong data;
27 } Nios2TLBEntry;
28 
29 typedef struct Nios2MMU {
30     int tlb_entry_mask;
31     uint32_t pteaddr_wr;
32     uint32_t tlbacc_wr;
33     uint32_t tlbmisc_wr;
34     Nios2TLBEntry *tlb;
35 } Nios2MMU;
36 
37 typedef struct Nios2MMULookup {
38     target_ulong vaddr;
39     target_ulong paddr;
40     int prot;
41 } Nios2MMULookup;
42 
43 void mmu_flip_um(CPUNios2State *env, unsigned int um);
44 unsigned int mmu_translate(CPUNios2State *env,
45                            Nios2MMULookup *lu,
46                            target_ulong vaddr, int rw, int mmu_idx);
47 void mmu_read_debug(CPUNios2State *env, uint32_t rn);
48 void mmu_write(CPUNios2State *env, uint32_t rn, uint32_t v);
49 void mmu_init(CPUNios2State *env);
50 
51 #endif /* NIOS2_MMU_H */
52