Ignore:
File:
1 edited

Legend:

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

    rdc0b964 r1d3d2cf  
    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  = 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,
     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, 
    6161          .special     = 0,
    62           .granularity = 1,
     62          .granularity = 1, 
    6363          .base_24_31  = 0 },
    6464        /* KDATA descriptor */
    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,
     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, 
    7474          .base_24_31  = 0 },
    7575        /* UDATA descriptor */
    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,
     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,
     85          .base_24_31  = 0 },
     86        /* 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,
     96          .base_24_31  = 0 },
     97        /* 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,
    83105          .special     = 1,
    84           .granularity = 1,
    85           .base_24_31  = 0 },
    86         /* UTEXT descriptor */
    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,
    96           .base_24_31  = 0 },
    97         /* KTEXT 32-bit protected, for protected mode before long mode */
    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,
    105           .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         {
    115                 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL,
    116                     0xf, 0, 0, 0, 0, 0
     113#ifdef CONFIG_FB       
     114        { 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL,
     115          0xf, 0, 0, 0, 0, 0
    117116        }
    118117#endif
     
    130129{
    131130        tss_descriptor_t *td = (tss_descriptor_t *) d;
    132        
    133         td->base_0_15 = base & 0xffffU;
    134         td->base_16_23 = ((base) >> 16) & 0xffU;
    135         td->base_24_31 = ((base) >> 24) & 0xffU;
     131
     132        td->base_0_15 = base & 0xffff;
     133        td->base_16_23 = ((base) >> 16) & 0xff;
     134        td->base_24_31 = ((base) >> 24) & 0xff;
    136135        td->base_32_63 = ((base) >> 32);
    137136}
     
    141140        tss_descriptor_t *td = (tss_descriptor_t *) d;
    142141       
    143         td->limit_0_15 = limit & 0xffffU;
    144         td->limit_16_19 = (limit >> 16) & 0x0fU;
     142        td->limit_0_15 = limit & 0xffff;
     143        td->limit_16_19 = (limit >> 16) & 0xf;
    145144}
    146145
     
    150149         * Offset is a linear address.
    151150         */
    152         d->offset_0_15 = offset & 0xffffU;
    153         d->offset_16_31 = (offset >> 16) & 0xffffU;
     151        d->offset_0_15 = offset & 0xffff;
     152        d->offset_16_31 = offset >> 16 & 0xffff;
    154153        d->offset_32_63 = offset >> 32;
    155154}
     
    166165{
    167166        idescriptor_t *d;
    168         unsigned int i;
    169        
     167        int i;
     168
    170169        for (i = 0; i < IDT_ITEMS; i++) {
    171170                d = &idt[i];
    172                
     171
    173172                d->unused = 0;
    174173                d->selector = GDT_SELECTOR(KTEXT_DES);
    175                
     174
    176175                d->present = 1;
    177                 d->type = AR_INTERRUPT;  /* masking interrupt */
     176                d->type = AR_INTERRUPT; /* masking interrupt */
    178177        }
    179        
     178
    180179        d = &idt[0];
    181180        idt_setoffset(d++, (uintptr_t) &int_0);
Note: See TracChangeset for help on using the changeset viewer.