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 --- |