Changeset 776c91a in mainline


Ignore:
Timestamp:
2005-09-03T18:32:50Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
78665c0
Parents:
5e2455a
Message:

Changes to make ia32 smp code not architecture dependent.
Changes to accomodate new gdtr loading scheme.

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/include/pm.h

    r5e2455a r776c91a  
    117117} __attribute__ ((packed));
    118118
     119struct ptr_16_32 {
     120        __u16 limit;
     121        __u32 base;
     122} __attribute__ ((packed));
     123
    119124struct tss {
    120125        __u32 reserve1;
     
    141146
    142147extern struct ptr_16_64 gdtr;
     148extern struct ptr_16_32 bsp_bootstrap_gdtr;
     149extern struct ptr_16_32 ap_bootstrap_gdtr;
    143150
    144151extern void pm_init(void);
  • arch/amd64/src/boot/boot.S

    r5e2455a r776c91a  
    6767
    6868        # Load gdtr, idtr
    69         lgdt gdtr_inst
    70         # Load idtr, but it contains mess - we should not get interrupt
    71         # anyway
    72         lidt idtr_inst
     69        lgdt bsp_bootstrap_gdtr
    7370       
    7471        movl %cr0,%eax
     
    155152
    156153.global gdtr_inst                               
    157 gdtr_inst:
     154bsp_bootstrap_gdtr:
    158155        .word gdtselector(GDT_ITEMS)
    159156        .long KA2PA(gdt)
    160157
    161 .global idtr_inst
    162 idtr_inst:
    163         .word idtselector(IDT_ITEMS)
    164         .long KA2PA(idt)
     158.global ap_bootstrap_gdtr
     159ap_bootstrap_gdtr:
     160        .word gdtselector(GDT_ITEMS)
     161        .long KA2PA(gdt)
  • arch/ia32/include/smp/mps.h

    r5e2455a r776c91a  
    4141struct mps_fs {
    4242        __u32 signature;
    43         struct mps_ct *configuration_table;
     43        __u32 configuration_table;
    4444        __u8 length;
    4545        __u8 revision;
     
    5959        __u8 oem_id[8];
    6060        __u8 product_id[12];
    61         __u8 *oem_table;
     61        __u32 oem_table;
    6262        __u16 oem_table_size;
    6363        __u16 entry_count;
    64         __u32 *l_apic;
     64        __u32 l_apic;
    6565        __u16 ext_table_length;
    6666        __u8 ext_table_checksum;
     
    9090        __u8 io_apic_version;
    9191        __u8 io_apic_flags;
    92         __u32 *io_apic;
     92        __u32 io_apic;
    9393} __attribute__ ((packed));
    9494
  • arch/ia32/src/smp/mps.c

    r5e2455a r776c91a  
    162162void mps_init(void)
    163163{
    164         __u8 *addr[2] = { NULL, (__u8 *) 0xf0000 };
     164        __u8 *addr[2] = { NULL, (__u8 *) PA2KA(0xf0000) };
    165165        int i, j, length[2] = { 1024, 64*1024 };
    166166       
     
    173173         */
    174174
    175         addr[0] = (__u8 *) (ebda ? ebda : 639 * 1024);
     175        addr[0] = (__u8 *) PA2KA(ebda ? ebda : 639 * 1024);
    176176        for (i = 0; i < 2; i++) {
    177177                for (j = 0; j < length[i]; j += 16) {
     
    196196                }
    197197
    198                 ct = fs->configuration_table;
     198                ct = (struct mps_ct *)PA2KA((__address)fs->configuration_table);
    199199                frame_not_free((__address) ct);
    200200                config.cpu_count = configure_via_ct();
     
    224224        }
    225225       
    226         l_apic = ct->l_apic;
     226        l_apic = (__u32 *)PA2KA((__address)ct->l_apic);
    227227
    228228        cnt = 0;
     
    334334        }
    335335       
    336         io_apic = ioa->io_apic;
     336        io_apic = (__u32 *)PA2KA((__address)ioa->io_apic);
    337337}
    338338
  • arch/ia32/src/smp/smp.c

    r5e2455a r776c91a  
    6363
    6464        if (config.cpu_count > 1) {
    65                 map_page_to_frame((__address) l_apic, (__address) l_apic, PAGE_NOT_CACHEABLE, 0);
    66                 map_page_to_frame((__address) io_apic, (__address) io_apic, PAGE_NOT_CACHEABLE, 0);
     65                map_page_to_frame((__address)l_apic, KA2PA((__address)l_apic),
     66                                  PAGE_NOT_CACHEABLE, 0);
     67                map_page_to_frame((__address) io_apic,
     68                                  KA2PA((__address) io_apic),
     69                                  PAGE_NOT_CACHEABLE, 0);
    6770        }
    6871
  • src/Makefile.config

    r5e2455a r776c91a  
    66
    77# Support for symetric multiprocessors
    8 SMP=__SMP__
     8#SMP=__SMP__
    99
    1010# Improved support for hyperthreading
Note: See TracChangeset for help on using the changeset viewer.