MemoryMappedComponent.h Source File
Back to the index.
src
include
components
MemoryMappedComponent.h
Go to the documentation of this file.
1
#ifndef MEMORYMAPPEDCOMPONENT_H
2
#define MEMORYMAPPEDCOMPONENT_H
3
4
/*
5
* Copyright (C) 2008-2010 Anders Gavare. All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
*
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
* 3. The name of the author may not be used to endorse or promote products
16
* derived from this software without specific prior written permission.
17
*
18
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28
* SUCH DAMAGE.
29
*/
30
31
// Note: not included in the component registry. This is simply a base-class.
32
33
34
#include "
Component.h
"
35
36
#include "
UnitTest.h
"
37
38
39
/**
40
* \brief A base-class for memory-mapped components.
41
*
42
* A memory-mapped component is a Component which is meant to be mapped
43
* into a bus' address space. It has a <b>base offset</b> and a <b>size</b>,
44
* which the bus sees. The bus then forwards only those read/write requests
45
* to the memory-mapped component that are within that range.
46
*
47
* There is also an <b>address multiplicator</b>, to handle the common
48
* case when a device has, say, N 8-bit registers, but is accessed using
49
* memory-mapped addresses that are seen as N 32-bit registers. In this
50
* example, the address multiplicator would be 4.
51
*/
52
class
MemoryMappedComponent
53
:
public
Component
54
{
55
public
:
56
/**
57
* \brief Constructs a MemoryMappedComponent.
58
*/
59
MemoryMappedComponent
(
const
string
& className,
const
string
& visibleClassName);
60
61
string
GenerateDetails
()
const
;
62
63
private
:
64
// Variables common to all memory mapped components:
65
uint64_t m_memoryMappedBase;
66
uint64_t m_memoryMappedSize;
67
uint64_t m_memoryMappedAddrMul;
68
};
69
70
71
#endif // MEMORYMAPPEDCOMPONENT_H
MemoryMappedComponent::GenerateDetails
string GenerateDetails() const
Generate details about the component.
Definition:
MemoryMappedComponent.cc:43
MemoryMappedComponent
A base-class for memory-mapped components.
Definition:
MemoryMappedComponent.h:54
UnitTest.h
Component.h
MemoryMappedComponent::MemoryMappedComponent
MemoryMappedComponent(const string &className, const string &visibleClassName)
Constructs a MemoryMappedComponent.
Definition:
MemoryMappedComponent.cc:31
Component
A Component is a node in the configuration tree that makes up an emulation setup.
Definition:
Component.h:64
Generated on Tue Aug 25 2020 19:25:06 for GXemul by
1.8.18