Subversion Repositories HelenOS

Rev

Rev 205 | Rev 273 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 205 Rev 269
Line 83... Line 83...
83
 */
83
 */
84
void kmp(void *arg)
84
void kmp(void *arg)
85
{
85
{
86
    __address src, dst;
86
    __address src, dst;
87
    int i;
87
    int i;
88
 
88
   
89
    ASSERT(ops != NULL);
89
    ASSERT(ops != NULL);
90
 
90
 
91
    waitq_initialize(&ap_completion_wq);
91
    waitq_initialize(&ap_completion_wq);
92
 
92
 
93
    /*
93
    /*
Line 139... Line 139...
139
        if (!(gdt_new = (struct descriptor *) malloc(GDT_ITEMS*sizeof(struct descriptor))))
139
        if (!(gdt_new = (struct descriptor *) malloc(GDT_ITEMS*sizeof(struct descriptor))))
140
            panic("couldn't allocate memory for GDT\n");
140
            panic("couldn't allocate memory for GDT\n");
141
 
141
 
142
        memcpy(gdt_new, gdt, GDT_ITEMS*sizeof(struct descriptor));
142
        memcpy(gdt_new, gdt, GDT_ITEMS*sizeof(struct descriptor));
143
        memsetb((__address)(&gdt_new[TSS_DES]), sizeof(struct descriptor), 0);
143
        memsetb((__address)(&gdt_new[TSS_DES]), sizeof(struct descriptor), 0);
-
 
144
        ap_bootstrap_gdtr.base = KA2PA((__address) gdt_new);
144
        gdtr.base = KA2PA((__address) gdt_new);
145
        gdtr.base = (__address) gdt_new;
145
 
146
 
146
        if (l_apic_send_init_ipi(ops->cpu_apic_id(i))) {
147
        if (l_apic_send_init_ipi(ops->cpu_apic_id(i))) {
147
            /*
148
            /*
148
                 * There may be just one AP being initialized at
149
                 * There may be just one AP being initialized at
149
             * the time. After it comes completely up, it is
150
             * the time. After it comes completely up, it is