Rev 1667 | Rev 1702 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1667 | Rev 1684 | ||
---|---|---|---|
Line 225... | Line 225... | ||
225 | icr.vector = vector; |
225 | icr.vector = vector; |
226 | 226 | ||
227 | l_apic[ICRlo] = icr.lo; |
227 | l_apic[ICRlo] = icr.lo; |
228 | 228 | ||
229 | icr.lo = l_apic[ICRlo]; |
229 | icr.lo = l_apic[ICRlo]; |
230 | if (icr.delivs == DELIVS_PENDING) |
230 | if (icr.delivs == DELIVS_PENDING) { |
- | 231 | #ifdef CONFIG_DEBUG |
|
231 | printf("IPI is pending.\n"); |
232 | printf("IPI is pending.\n"); |
- | 233 | #endif |
|
- | 234 | } |
|
232 | 235 | ||
233 | return apic_poll_errors(); |
236 | return apic_poll_errors(); |
234 | } |
237 | } |
235 | 238 | ||
236 | /** Universal Start-up Algorithm for bringing up the AP processors. |
239 | /** Universal Start-up Algorithm for bringing up the AP processors. |
Line 265... | Line 268... | ||
265 | * According to MP Specification, 20us should be enough to |
268 | * According to MP Specification, 20us should be enough to |
266 | * deliver the IPI. |
269 | * deliver the IPI. |
267 | */ |
270 | */ |
268 | delay(20); |
271 | delay(20); |
269 | 272 | ||
270 | if (!apic_poll_errors()) return 0; |
273 | if (!apic_poll_errors()) |
- | 274 | return 0; |
|
271 | 275 | ||
272 | icr.lo = l_apic[ICRlo]; |
276 | icr.lo = l_apic[ICRlo]; |
273 | if (icr.delivs == DELIVS_PENDING) |
277 | if (icr.delivs == DELIVS_PENDING) { |
- | 278 | #ifdef CONFIG_DEBUG |
|
274 | printf("IPI is pending.\n"); |
279 | printf("IPI is pending.\n"); |
- | 280 | #endif |
|
- | 281 | } |
|
275 | 282 | ||
276 | icr.delmod = DELMOD_INIT; |
283 | icr.delmod = DELMOD_INIT; |
277 | icr.destmod = DESTMOD_PHYS; |
284 | icr.destmod = DESTMOD_PHYS; |
278 | icr.level = LEVEL_DEASSERT; |
285 | icr.level = LEVEL_DEASSERT; |
279 | icr.shorthand = SHORTHAND_NONE; |
286 | icr.shorthand = SHORTHAND_NONE; |