mmu.hh revision 11313
110915Sandreas.sandberg@arm.com/* 211313Sandreas.sandberg@arm.com * Copyright (c) 2014-2016 ARM Limited 310915Sandreas.sandberg@arm.com * All rights reserved 410915Sandreas.sandberg@arm.com * 510915Sandreas.sandberg@arm.com * Licensed under the Apache License, Version 2.0 (the "License"); 610915Sandreas.sandberg@arm.com * you may not use this file except in compliance with the License. 710915Sandreas.sandberg@arm.com * You may obtain a copy of the License at 810915Sandreas.sandberg@arm.com * 910915Sandreas.sandberg@arm.com * http://www.apache.org/licenses/LICENSE-2.0 1010915Sandreas.sandberg@arm.com * 1110915Sandreas.sandberg@arm.com * Unless required by applicable law or agreed to in writing, software 1210915Sandreas.sandberg@arm.com * distributed under the License is distributed on an "AS IS" BASIS, 1310915Sandreas.sandberg@arm.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1410915Sandreas.sandberg@arm.com * See the License for the specific language governing permissions and 1510915Sandreas.sandberg@arm.com * limitations under the License. 1610915Sandreas.sandberg@arm.com * 1710915Sandreas.sandberg@arm.com * Authors: Andreas Sandberg 1810915Sandreas.sandberg@arm.com */ 1910915Sandreas.sandberg@arm.com 2010915Sandreas.sandberg@arm.com#ifndef _LIBNOMALIMODEL_MMU_HH 2110915Sandreas.sandberg@arm.com#define _LIBNOMALIMODEL_MMU_HH 2210915Sandreas.sandberg@arm.com 2310915Sandreas.sandberg@arm.com#include <vector> 2410915Sandreas.sandberg@arm.com 2510915Sandreas.sandberg@arm.com#include "gpublock.hh" 2611313Sandreas.sandberg@arm.com#include "addrspace.hh" 2710915Sandreas.sandberg@arm.com#include "types.hh" 2810915Sandreas.sandberg@arm.com 2910915Sandreas.sandberg@arm.comnamespace NoMali { 3010915Sandreas.sandberg@arm.com 3110915Sandreas.sandberg@arm.comclass GPU; 3210915Sandreas.sandberg@arm.com 3310915Sandreas.sandberg@arm.com/** 3410915Sandreas.sandberg@arm.com * MMU dummy implementation. 3510915Sandreas.sandberg@arm.com * 3610915Sandreas.sandberg@arm.com * This is a dummy implementation of a Midgard GPU MMU block. The only 3710915Sandreas.sandberg@arm.com * features supported by the block is interrupt delivery and registers 3810915Sandreas.sandberg@arm.com * related to interrupt delivery. Writes to unimplemented registers 3910915Sandreas.sandberg@arm.com * (most registers) are discarded and their values are read as zero. 4010915Sandreas.sandberg@arm.com */ 4110915Sandreas.sandberg@arm.comclass MMU 4210915Sandreas.sandberg@arm.com : public GPUBlockInt 4310915Sandreas.sandberg@arm.com{ 4410915Sandreas.sandberg@arm.com public: 4510915Sandreas.sandberg@arm.com MMU(GPU &_gpu); 4610915Sandreas.sandberg@arm.com virtual ~MMU(); 4710915Sandreas.sandberg@arm.com 4811313Sandreas.sandberg@arm.com void reset() override; 4911313Sandreas.sandberg@arm.com 5011313Sandreas.sandberg@arm.com uint32_t readReg(RegAddr idx) override; 5110915Sandreas.sandberg@arm.com void writeReg(RegAddr idx, uint32_t value) override; 5210915Sandreas.sandberg@arm.com 5311313Sandreas.sandberg@arm.com uint32_t readRegRaw(RegAddr idx) override; 5411313Sandreas.sandberg@arm.com void writeRegRaw(RegAddr idx, uint32_t value) override; 5511313Sandreas.sandberg@arm.com 5610915Sandreas.sandberg@arm.com protected: 5710915Sandreas.sandberg@arm.com void onInterrupt(int set) override; 5810915Sandreas.sandberg@arm.com 5911313Sandreas.sandberg@arm.com /** Address spaces belonging to this MMU block */ 6011313Sandreas.sandberg@arm.com std::vector<AddrSpace> spaces; 6110915Sandreas.sandberg@arm.com}; 6210915Sandreas.sandberg@arm.com 6310915Sandreas.sandberg@arm.com} 6410915Sandreas.sandberg@arm.com 6510915Sandreas.sandberg@arm.com#endif // _LIBNOMALIMODEL_MMU_HH 66