16#ifndef SIMICS_SYSTEMC_INJECTION_EXTENSION_INJECT_PCI_BUS_H
17#define SIMICS_SYSTEMC_INJECTION_EXTENSION_INJECT_PCI_BUS_H
34template <
typename TPAYLOAD>
40 attr_value_t *attr, TPAYLOAD *gp) {
41 if (key ==
"raise_interrupt") {
43 if (!parser->value(&v))
48 }
else if (key ==
"lower_interrupt") {
50 if (!parser->value(&v))
55 }
else if (key ==
"interrupt_acknowledge") {
57 ->interrupt_acknowledge();
58 }
else if (key ==
"set_bus_number") {
60 if (!parser->value(&v))
65 }
else if (key ==
"set_sub_bus_number") {
67 if (!parser->value(&v))
71 ->set_sub_bus_number(v);
72 }
else if (key ==
"bus_reset") {
75 }
else if (key ==
"special_cycle") {
77 if (!parser->value(&v))
82 }
else if (key ==
"system_error") {
85 }
else if (key ==
"get_bus_address") {
88 }
else if (key ==
"add_map") {
95 if (!p.
lookUp(
"info", &info))
99 if (!
value(parser, &info, &map_info))
103 ->add_map(space, map_info);
104 }
else if (key ==
"remove_map") {
110 int32_t function = 0;
111 if (!p.
lookUp(
"function", &function))
115 ->remove_map(space, function);
116 }
else if (key ==
"add_default") {
123 if (!p.
lookUp(
"info", &info))
127 if (!
value(parser, &info, &map_info))
131 ->add_default(space, map_info);
132 }
else if (key ==
"remove_default") {
139 }
else if (key ==
"set_device_status") {
142 int32_t function = 0;
144 if (!p.
lookUp(
"device", &device))
147 if (!p.
lookUp(
"function", &function))
150 if (!p.
lookUp(
"enabled", &enabled))
154 ->set_device_status(device, function, enabled);
164 if (!parser->
value(&space))
168 parser->
reportError(
"%s must be in range [%i - %i]",
181 if (!parser->
lookUp(
"space", &space))
185 parser->
reportError(
"%s must be in range [%i - %i]",
#define ATTR_DICT_PARSER_NAMESPACE(ns)
Definition: attr_dict_parser.h:34
Definition: attr_dict_parser.h:40
void reportError(const char *str,...)
bool value(T *v)
Definition: attr_dict_parser.h:66
bool parse(ParserInterface *parser)
AttrDictParser init(const attr_value_t *attr)
bool lookUp(std::string key, T *v)
Definition: attr_dict_parser.h:55
Definition: inject_base.h:45
Definition: extension_setter.h:34
Definition: inject_pci_bus.h:35
bool addrSpaceLookUp(AttrDictParser *parser, simics::types::addr_space_t *v, std::string key)
Definition: inject_pci_bus.h:178
bool addrSpaceValue(AttrDictParser *parser, simics::types::addr_space_t *v, std::string key)
Definition: inject_pci_bus.h:161
virtual bool setValue(AttrDictParser *parser, const std::string &key, attr_value_t *attr, TPAYLOAD *gp)
Definition: inject_pci_bus.h:39
bool value(AttrDictParser *parser, const attr_value_t *attr, types::map_info_t *map_info)
Definition: inject_pci_bus.h:195
Definition: map_info_parser.h:31
types::map_info_t map_info_
Definition: map_info_parser.h:64
addr_space_t
Stand-alone, version of the Simics addr_space_t enum.
Definition: addr_space.h:23
@ Sim_Addr_Space_Memory
Definition: addr_space.h:26
@ Sim_Addr_Space_Conf
Definition: addr_space.h:24
Definition: pci_bus_interface.h:24
Reduced, stand-alone, version of the Simics map_info_t struct.
Definition: map_info.h:25