Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/pm.c

    r149d14e5 rdc0b964  
    2828 */
    2929
    30 /** @addtogroup amd64   
     30/** @addtogroup amd64
    3131 * @{
    3232 */
     
    5252        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    5353        /* KTEXT descriptor */
    54         { .limit_0_15  = 0xffff,
    55           .base_0_15   = 0, 
    56           .base_16_23  = 0, 
    57           .access      = AR_PRESENT | AR_CODE | DPL_KERNEL | AR_READABLE, 
    58           .limit_16_19 = 0xf,
    59           .available   = 0, 
    60           .longmode    = 1, 
     54        { .limit_0_15  = 0xffffU,
     55          .base_0_15   = 0,
     56          .base_16_23  = 0,
     57          .access      = AR_PRESENT | AR_CODE | DPL_KERNEL | AR_READABLE,
     58          .limit_16_19 = 0x0fU,
     59          .available   = 0,
     60          .longmode    = 1,
    6161          .special     = 0,
    62           .granularity = 1, 
     62          .granularity = 1,
    6363          .base_24_31  = 0 },
    6464        /* KDATA descriptor */
    65         { .limit_0_15  = 0xffff,
    66           .base_0_15   = 0, 
    67           .base_16_23  = 0, 
    68           .access      = AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_KERNEL, 
    69           .limit_16_19 = 0xf,
    70           .available   = 0, 
    71           .longmode    = 0, 
    72           .special     = 0, 
    73           .granularity = 1, 
     65        { .limit_0_15  = 0xffffU,
     66          .base_0_15   = 0,
     67          .base_16_23  = 0,
     68          .access      = AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_KERNEL,
     69          .limit_16_19 = 0x0fU,
     70          .available   = 0,
     71          .longmode    = 0,
     72          .special     = 0,
     73          .granularity = 1,
    7474          .base_24_31  = 0 },
    7575        /* UDATA descriptor */
    76         { .limit_0_15  = 0xffff,
    77           .base_0_15   = 0, 
    78           .base_16_23  = 0, 
    79           .access      = AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_USER, 
    80           .limit_16_19 = 0xf,
    81           .available   = 0, 
    82           .longmode    = 0, 
    83           .special     = 1, 
    84           .granularity = 1, 
     76        { .limit_0_15  = 0xffffU,
     77          .base_0_15   = 0,
     78          .base_16_23  = 0,
     79          .access      = AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_USER,
     80          .limit_16_19 = 0x0fU,
     81          .available   = 0,
     82          .longmode    = 0,
     83          .special     = 1,
     84          .granularity = 1,
    8585          .base_24_31  = 0 },
    8686        /* UTEXT descriptor */
    87         { .limit_0_15  = 0xffff,
    88           .base_0_15   = 0, 
    89           .base_16_23  = 0, 
    90           .access      = AR_PRESENT | AR_CODE | DPL_USER, 
    91           .limit_16_19 = 0xf,
    92           .available   = 0, 
    93           .longmode    = 1, 
    94           .special     = 0, 
    95           .granularity = 1, 
     87        { .limit_0_15  = 0xffffU,
     88          .base_0_15   = 0,
     89          .base_16_23  = 0,
     90          .access      = AR_PRESENT | AR_CODE | DPL_USER,
     91          .limit_16_19 = 0x0fU,
     92          .available   = 0,
     93          .longmode    = 1,
     94          .special     = 0,
     95          .granularity = 1,
    9696          .base_24_31  = 0 },
    9797        /* KTEXT 32-bit protected, for protected mode before long mode */
    98         { .limit_0_15  = 0xffff,
    99           .base_0_15   = 0, 
    100           .base_16_23  = 0, 
    101           .access      = AR_PRESENT | AR_CODE | DPL_KERNEL | AR_READABLE, 
    102           .limit_16_19 = 0xf,
    103           .available   = 0, 
    104           .longmode    = 0, 
     98        { .limit_0_15  = 0xffffU,
     99          .base_0_15   = 0,
     100          .base_16_23  = 0,
     101          .access      = AR_PRESENT | AR_CODE | DPL_KERNEL | AR_READABLE,
     102          .limit_16_19 = 0x0fU,
     103          .available   = 0,
     104          .longmode    = 0,
    105105          .special     = 1,
    106           .granularity = 1, 
     106          .granularity = 1,
    107107          .base_24_31  = 0 },
    108108        /* TSS descriptor - set up will be completed later,
     
    111111        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    112112        /* VESA Init descriptor */
    113 #ifdef CONFIG_FB       
    114         { 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL,
    115           0xf, 0, 0, 0, 0, 0
     113#ifdef CONFIG_FB
     114        {
     115                0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL,
     116                    0xf, 0, 0, 0, 0, 0
    116117        }
    117118#endif
     
    129130{
    130131        tss_descriptor_t *td = (tss_descriptor_t *) d;
    131 
    132         td->base_0_15 = base & 0xffff;
    133         td->base_16_23 = ((base) >> 16) & 0xff;
    134         td->base_24_31 = ((base) >> 24) & 0xff;
     132       
     133        td->base_0_15 = base & 0xffffU;
     134        td->base_16_23 = ((base) >> 16) & 0xffU;
     135        td->base_24_31 = ((base) >> 24) & 0xffU;
    135136        td->base_32_63 = ((base) >> 32);
    136137}
     
    140141        tss_descriptor_t *td = (tss_descriptor_t *) d;
    141142       
    142         td->limit_0_15 = limit & 0xffff;
    143         td->limit_16_19 = (limit >> 16) & 0xf;
     143        td->limit_0_15 = limit & 0xffffU;
     144        td->limit_16_19 = (limit >> 16) & 0x0fU;
    144145}
    145146
     
    149150         * Offset is a linear address.
    150151         */
    151         d->offset_0_15 = offset & 0xffff;
    152         d->offset_16_31 = offset >> 16 & 0xffff;
     152        d->offset_0_15 = offset & 0xffffU;
     153        d->offset_16_31 = (offset >> 16) & 0xffffU;
    153154        d->offset_32_63 = offset >> 32;
    154155}
     
    165166{
    166167        idescriptor_t *d;
    167         int i;
    168 
     168        unsigned int i;
     169       
    169170        for (i = 0; i < IDT_ITEMS; i++) {
    170171                d = &idt[i];
    171 
     172               
    172173                d->unused = 0;
    173                 d->selector = gdtselector(KTEXT_DES);
    174 
     174                d->selector = GDT_SELECTOR(KTEXT_DES);
     175               
    175176                d->present = 1;
    176                 d->type = AR_INTERRUPT; /* masking interrupt */
    177 
    178                 idt_setoffset(d, ((uintptr_t) interrupt_handlers) +
    179                     i * interrupt_handler_size);
     177                d->type = AR_INTERRUPT;  /* masking interrupt */
    180178        }
     179       
     180        d = &idt[0];
     181        idt_setoffset(d++, (uintptr_t) &int_0);
     182        idt_setoffset(d++, (uintptr_t) &int_1);
     183        idt_setoffset(d++, (uintptr_t) &int_2);
     184        idt_setoffset(d++, (uintptr_t) &int_3);
     185        idt_setoffset(d++, (uintptr_t) &int_4);
     186        idt_setoffset(d++, (uintptr_t) &int_5);
     187        idt_setoffset(d++, (uintptr_t) &int_6);
     188        idt_setoffset(d++, (uintptr_t) &int_7);
     189        idt_setoffset(d++, (uintptr_t) &int_8);
     190        idt_setoffset(d++, (uintptr_t) &int_9);
     191        idt_setoffset(d++, (uintptr_t) &int_10);
     192        idt_setoffset(d++, (uintptr_t) &int_11);
     193        idt_setoffset(d++, (uintptr_t) &int_12);
     194        idt_setoffset(d++, (uintptr_t) &int_13);
     195        idt_setoffset(d++, (uintptr_t) &int_14);
     196        idt_setoffset(d++, (uintptr_t) &int_15);
     197        idt_setoffset(d++, (uintptr_t) &int_16);
     198        idt_setoffset(d++, (uintptr_t) &int_17);
     199        idt_setoffset(d++, (uintptr_t) &int_18);
     200        idt_setoffset(d++, (uintptr_t) &int_19);
     201        idt_setoffset(d++, (uintptr_t) &int_20);
     202        idt_setoffset(d++, (uintptr_t) &int_21);
     203        idt_setoffset(d++, (uintptr_t) &int_22);
     204        idt_setoffset(d++, (uintptr_t) &int_23);
     205        idt_setoffset(d++, (uintptr_t) &int_24);
     206        idt_setoffset(d++, (uintptr_t) &int_25);
     207        idt_setoffset(d++, (uintptr_t) &int_26);
     208        idt_setoffset(d++, (uintptr_t) &int_27);
     209        idt_setoffset(d++, (uintptr_t) &int_28);
     210        idt_setoffset(d++, (uintptr_t) &int_29);
     211        idt_setoffset(d++, (uintptr_t) &int_30);
     212        idt_setoffset(d++, (uintptr_t) &int_31);
     213        idt_setoffset(d++, (uintptr_t) &int_32);
     214        idt_setoffset(d++, (uintptr_t) &int_33);
     215        idt_setoffset(d++, (uintptr_t) &int_34);
     216        idt_setoffset(d++, (uintptr_t) &int_35);
     217        idt_setoffset(d++, (uintptr_t) &int_36);
     218        idt_setoffset(d++, (uintptr_t) &int_37);
     219        idt_setoffset(d++, (uintptr_t) &int_38);
     220        idt_setoffset(d++, (uintptr_t) &int_39);
     221        idt_setoffset(d++, (uintptr_t) &int_40);
     222        idt_setoffset(d++, (uintptr_t) &int_41);
     223        idt_setoffset(d++, (uintptr_t) &int_42);
     224        idt_setoffset(d++, (uintptr_t) &int_43);
     225        idt_setoffset(d++, (uintptr_t) &int_44);
     226        idt_setoffset(d++, (uintptr_t) &int_45);
     227        idt_setoffset(d++, (uintptr_t) &int_46);
     228        idt_setoffset(d++, (uintptr_t) &int_47);
     229        idt_setoffset(d++, (uintptr_t) &int_48);
     230        idt_setoffset(d++, (uintptr_t) &int_49);
     231        idt_setoffset(d++, (uintptr_t) &int_50);
     232        idt_setoffset(d++, (uintptr_t) &int_51);
     233        idt_setoffset(d++, (uintptr_t) &int_52);
     234        idt_setoffset(d++, (uintptr_t) &int_53);
     235        idt_setoffset(d++, (uintptr_t) &int_54);
     236        idt_setoffset(d++, (uintptr_t) &int_55);
     237        idt_setoffset(d++, (uintptr_t) &int_56);
     238        idt_setoffset(d++, (uintptr_t) &int_57);
     239        idt_setoffset(d++, (uintptr_t) &int_58);
     240        idt_setoffset(d++, (uintptr_t) &int_59);
     241        idt_setoffset(d++, (uintptr_t) &int_60);
     242        idt_setoffset(d++, (uintptr_t) &int_61);
     243        idt_setoffset(d++, (uintptr_t) &int_62);
     244        idt_setoffset(d++, (uintptr_t) &int_63);
    181245}
    182246
     
    228292         * to its own TSS. We just need to load the TR register.
    229293         */
    230         tr_load(gdtselector(TSS_DES));
     294        tr_load(GDT_SELECTOR(TSS_DES));
    231295}
    232296
Note: See TracChangeset for help on using the changeset viewer.