i82094aa.cc (5653:b87e45d7c585) i82094aa.cc (5654:340254de2031)
1/*
2 * Copyright (c) 2008 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 132 unchanged lines hidden (view full) ---

141 DPRINTF(I82094AA, "Received interrupt %d.\n", line);
142 assert(line < TableSize);
143 RedirTableEntry entry = redirTable[line];
144 if (entry.mask) {
145 DPRINTF(I82094AA, "Entry was masked.\n");
146 return;
147 } else {
148 if (DTRACE(I82094AA)) {
1/*
2 * Copyright (c) 2008 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 132 unchanged lines hidden (view full) ---

141 DPRINTF(I82094AA, "Received interrupt %d.\n", line);
142 assert(line < TableSize);
143 RedirTableEntry entry = redirTable[line];
144 if (entry.mask) {
145 DPRINTF(I82094AA, "Entry was masked.\n");
146 return;
147 } else {
148 if (DTRACE(I82094AA)) {
149 switch(entry.deliveryMode) {
150 case 0:
151 DPRINTF(I82094AA, "Delivery mode is: Fixed.\n");
152 break;
153 case 1:
154 DPRINTF(I82094AA, "Delivery mode is: Lowest Priority.\n");
155 break;
156 case 2:
157 DPRINTF(I82094AA, "Delivery mode is: SMI.\n");
158 break;
159 case 3:
149 if (DeliveryMode::isReserved(entry.deliveryMode)) {
160 fatal("Tried to use reserved delivery mode "
161 "for IO APIC entry %d.\n", line);
150 fatal("Tried to use reserved delivery mode "
151 "for IO APIC entry %d.\n", line);
162 break;
163 case 4:
164 DPRINTF(I82094AA, "Delivery mode is: NMI.\n");
165 break;
166 case 5:
167 DPRINTF(I82094AA, "Delivery mode is: INIT.\n");
168 break;
169 case 6:
170 fatal("Tried to use reserved delivery mode "
171 "for IO APIC entry %d.\n", line);
172 break;
173 case 7:
174 DPRINTF(I82094AA, "Delivery mode is: ExtINT.\n");
175 break;
152 } else {
153 DPRINTF(I82094AA, "Delivery mode is: %s.\n",
154 DeliveryMode::names[entry.deliveryMode]);
176 }
177 DPRINTF(I82094AA, "Vector is %#x.\n", entry.vector);
178 }
179
180 TriggerIntMessage message;
181 message.destination = entry.dest;
182 message.vector = entry.vector;
183 message.deliveryMode = entry.deliveryMode;
184 message.destMode = entry.destMode;
155 }
156 DPRINTF(I82094AA, "Vector is %#x.\n", entry.vector);
157 }
158
159 TriggerIntMessage message;
160 message.destination = entry.dest;
161 message.vector = entry.vector;
162 message.deliveryMode = entry.deliveryMode;
163 message.destMode = entry.destMode;
164 message.level = entry.polarity;
165 message.trigger = entry.trigger;
185
186 if (entry.destMode == 0) {
187 DPRINTF(I82094AA,
188 "Sending interrupt to APIC ID %d.\n", entry.dest);
189 PacketPtr pkt = buildIntRequest(entry.dest, message);
190 if (sys->getMemoryMode() == Enums::timing)
191 intPort->sendMessageTiming(pkt, latency);
192 else if (sys->getMemoryMode() == Enums::atomic)

--- 39 unchanged lines hidden ---
166
167 if (entry.destMode == 0) {
168 DPRINTF(I82094AA,
169 "Sending interrupt to APIC ID %d.\n", entry.dest);
170 PacketPtr pkt = buildIntRequest(entry.dest, message);
171 if (sys->getMemoryMode() == Enums::timing)
172 intPort->sendMessageTiming(pkt, latency);
173 else if (sys->getMemoryMode() == Enums::atomic)

--- 39 unchanged lines hidden ---