14#ifndef SIMICS_SYSTEMC_INJECTION_EXTENSION_INJECT_PCI_BUS_H
15#define SIMICS_SYSTEMC_INJECTION_EXTENSION_INJECT_PCI_BUS_H
32template <
typename TPAYLOAD>
38 attr_value_t *attr, TPAYLOAD *gp)
override {
39 if (key ==
"raise_interrupt") {
41 if (!parser->value(&v))
46 }
else if (key ==
"lower_interrupt") {
48 if (!parser->value(&v))
53 }
else if (key ==
"interrupt_acknowledge") {
55 ->interrupt_acknowledge();
56 }
else if (key ==
"set_bus_number") {
58 if (!parser->value(&v))
63 }
else if (key ==
"set_sub_bus_number") {
65 if (!parser->value(&v))
69 ->set_sub_bus_number(v);
70 }
else if (key ==
"bus_reset") {
73 }
else if (key ==
"special_cycle") {
75 if (!parser->value(&v))
80 }
else if (key ==
"system_error") {
83 }
else if (key ==
"get_bus_address") {
86 }
else if (key ==
"add_map") {
93 if (!p.
lookUp(
"info", &info))
97 if (!
value(parser, &info, &map_info))
101 ->add_map(space, map_info);
102 }
else if (key ==
"remove_map") {
108 int32_t function = 0;
109 if (!p.
lookUp(
"function", &function))
113 ->remove_map(space, function);
114 }
else if (key ==
"add_default") {
121 if (!p.
lookUp(
"info", &info))
125 if (!
value(parser, &info, &map_info))
129 ->add_default(space, map_info);
130 }
else if (key ==
"remove_default") {
137 }
else if (key ==
"set_device_status") {
140 int32_t function = 0;
142 if (!p.
lookUp(
"device", &device))
145 if (!p.
lookUp(
"function", &function))
148 if (!p.
lookUp(
"enabled", &enabled))
152 ->set_device_status(device, function, enabled);
162 if (!parser->
value(&space))
166 parser->
reportError(
"%s must be in range [%i - %i]",
179 if (!parser->
lookUp(
"space", &space))
183 parser->
reportError(
"%s must be in range [%i - %i]",
#define ATTR_DICT_PARSER_NAMESPACE(ns)
Definition: attr_dict_parser.h:32
Definition: attr_dict_parser.h:38
void reportError(const char *str,...)
bool value(T *v)
Definition: attr_dict_parser.h:64
bool parse(ParserInterface *parser)
AttrDictParser init(const attr_value_t *attr)
bool lookUp(const std::string &key, T *v)
Definition: attr_dict_parser.h:53
Definition: inject_base.h:43
Definition: extension_setter.h:32
Definition: inject_pci_bus.h:33
bool addrSpaceLookUp(AttrDictParser *parser, simics::types::addr_space_t *v, std::string key)
Definition: inject_pci_bus.h:176
bool addrSpaceValue(AttrDictParser *parser, simics::types::addr_space_t *v, std::string key)
Definition: inject_pci_bus.h:159
bool setValue(AttrDictParser *parser, const std::string &key, attr_value_t *attr, TPAYLOAD *gp) override
Definition: inject_pci_bus.h:37
bool value(AttrDictParser *parser, const attr_value_t *attr, types::map_info_t *map_info)
Definition: inject_pci_bus.h:193
Definition: map_info_parser.h:29
types::map_info_t map_info_
Definition: map_info_parser.h:62
addr_space_t
Stand-alone, version of the Simics addr_space_t enum.
Definition: addr_space.h:21
@ Sim_Addr_Space_Memory
Definition: addr_space.h:24
@ Sim_Addr_Space_Conf
Definition: addr_space.h:22
Reduced, stand-alone, version of the Simics map_info_t struct.
Definition: map_info.h:23