SystemC Library API Reference Manual
Reference documentation for the Simics SystemC Library.
 
Loading...
Searching...
No Matches
register_view_simics_adapter.h
Go to the documentation of this file.
1/*
2 © 2014 Intel Corporation
3
4 This software and the related documents are Intel copyrighted materials, and
5 your use of them is governed by the express license under which they were
6 provided to you ("License"). Unless the License provides otherwise, you may
7 not use, modify, copy, publish, distribute, disclose or transmit this software
8 or the related documents without Intel's prior written permission.
9
10 This software and the related documents are provided as is, with no express or
11 implied warranties, other than those that are expressly stated in the License.
12*/
13
14#ifndef SIMICS_SYSTEMC_IFACE_REGISTER_VIEW_SIMICS_ADAPTER_H
15#define SIMICS_SYSTEMC_IFACE_REGISTER_VIEW_SIMICS_ADAPTER_H
16
17#include <simics/model-iface/register-view.h>
20
21#include <string>
22#include <vector>
23
24namespace simics {
25namespace systemc {
26namespace iface {
27
29template<typename TBase,
30 typename TInterface = RegisterViewInterface>
32 : public SimicsAdapter<register_view_interface_t> {
33 public:
35 : SimicsAdapter<register_view_interface_t>(
36 REGISTER_VIEW_INTERFACE, init_iface()) {
37 }
38
39 protected:
40 static const char *description(conf_object_t *obj) {
41 return adapter<TBase, TInterface>(obj)->description();
42 }
43 static bool big_endian_bitorder(conf_object_t *obj) {
44 return adapter<TBase, TInterface>(obj)->big_endian_bitorder();
45 }
46 static unsigned number_of_registers(conf_object_t *obj) {
47 return adapter<TBase, TInterface>(obj)->number_of_registers();
48 }
49 static attr_value_t register_info(conf_object_t *obj, unsigned reg) {
50 return adapter<TBase, TInterface>(obj)->register_info(reg);
51 }
52 static ::uint64 get_register_value(conf_object_t *obj, unsigned reg) {
53 return adapter<TBase, TInterface>(obj)->get_register_value(reg);
54 }
55 static void set_register_value(conf_object_t *obj, unsigned reg,
56 ::uint64 val) {
57 adapter<TBase, TInterface>(obj)->set_register_value(reg, val);
58 }
59
60 private:
61 std::vector<std::string> description(conf_object_t *obj,
62 DescriptionType type) override {
63 return descriptionBase<TBase, TInterface>(obj, type);
64 }
65 register_view_interface_t init_iface() {
66 register_view_interface_t iface = {};
67 iface.description = description;
68 iface.big_endian_bitorder = big_endian_bitorder;
69 iface.number_of_registers = number_of_registers;
70 iface.register_info = register_info;
71 iface.get_register_value = get_register_value;
72 iface.set_register_value = set_register_value;
73 return iface;
74 }
75};
76
77} // namespace iface
78} // namespace systemc
79} // namespace simics
80
81#endif
Definition: register_view_simics_adapter.h:32
RegisterViewSimicsAdapter()
Definition: register_view_simics_adapter.h:34
::uint64 get_register_value(conf_object_t *obj, unsigned reg)
Definition: register_view_simics_adapter.h:52
static const char * description(conf_object_t *obj)
Definition: register_view_simics_adapter.h:40
static attr_value_t register_info(conf_object_t *obj, unsigned reg)
Definition: register_view_simics_adapter.h:49
static unsigned number_of_registers(conf_object_t *obj)
Definition: register_view_simics_adapter.h:46
static bool big_endian_bitorder(conf_object_t *obj)
Definition: register_view_simics_adapter.h:43
static void set_register_value(conf_object_t *obj, unsigned reg, ::uint64 val)
Definition: register_view_simics_adapter.h:55
Base class for mapping Simics interface to a C++ interface.
Definition: simics_adapter.h:45
DescriptionType
Definition: description_interface.h:23
Definition: adapter.h:79