Rev 1 | Rev 112 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1 | Rev 110 | ||
---|---|---|---|
Line 28... | Line 28... | ||
28 | 28 | ||
29 | # |
29 | # |
30 | # Init code for application processors. |
30 | # Init code for application processors. |
31 | # |
31 | # |
32 | 32 | ||
33 | .text |
33 | .section K_TEXT_START_2 |
34 | 34 | ||
35 | #ifdef __SMP__ |
35 | #ifdef __SMP__ |
36 | 36 | ||
37 | .global ap_boot |
37 | .global ap_boot |
38 | 38 | ||
Line 45... | Line 45... | ||
45 | 45 | ||
46 | .align 4096 |
46 | .align 4096 |
47 | ap_boot: |
47 | ap_boot: |
48 | .code16 |
48 | .code16 |
49 | cli |
49 | cli |
50 | - | ||
51 | xorw %ax,%ax |
50 | xorw %ax,%ax |
52 | movw %ax,%ds |
51 | movw %ax,%ds |
53 | 52 | ||
54 | lgdt gdtr |
53 | lgdt gdtr |
55 | movl %cr0,%eax |
54 | movl %cr0,%eax |
56 | orl $1,%eax |
55 | orl $1,%eax |
57 | movl %eax,%cr0 |
56 | movl %eax,%cr0 |
- | 57 | jmp 0f |
|
- | 58 | 0: |
|
58 | ljmp $KTEXT,$jump_to_kernel |
59 | ljmp $KTEXT,$jump_to_kernel |
59 | 60 | ||
60 | # this is where the AP enters the kernel space |
61 | # this is where the AP enters the kernel space |
61 | jump_to_kernel: |
62 | jump_to_kernel: |
62 | .code32 |
63 | .code32 |
63 | movw $KDATA,%ax |
64 | movw $KDATA,%ax |
64 | movw %ax,%ds |
65 | movw %ax,%ds |
65 | movw %ax,%es |
66 | movw %ax,%es |
66 | movw %ax,%ss |
67 | movw %ax,%ss |
67 | movl $ctx,%eax |
68 | movl $(ctx-0x80000000),%eax # KA2PA((__address) &ctx) |
68 | movl (%eax),%esp |
69 | movl (%eax),%esp |
69 | 70 | ||
70 | lidt idtr |
71 | lidt idtr |
71 | 72 | ||
- | 73 | call map_kernel |
|
- | 74 | ||
72 | ljmp $KTEXT,$main_ap |
75 | ljmp $KTEXT,$main_ap |
73 | 76 | ||
74 | #endif /* __SMP__ */ |
77 | #endif /* __SMP__ */ |