Subversion Repositories HelenOS

Rev

Rev 1667 | Go to most recent revision | Show entire file | Ignore 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;