Changeset 7bdcc45 in mainline for kernel/arch/amd64


Ignore:
Timestamp:
2010-12-16T16:38:49Z (15 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7837101
Parents:
8e58f94 (diff), eb221e5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

Location:
kernel/arch/amd64
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/include/asm.h

    r8e58f94 r7bdcc45  
    304304}
    305305
    306 NO_TRACE static inline unative_t read_msr(uint32_t msr)
     306NO_TRACE static inline sysarg_t read_msr(uint32_t msr)
    307307{
    308308        uint32_t ax, dx;
     
    343343        asm volatile (
    344344                "invlpg %[addr]\n"
    345                 :: [addr] "m" (*((unative_t *) addr))
     345                :: [addr] "m" (*((sysarg_t *) addr))
    346346        );
    347347}
     
    398398}
    399399
    400 #define GEN_READ_REG(reg) NO_TRACE static inline unative_t read_ ##reg (void) \
     400#define GEN_READ_REG(reg) NO_TRACE static inline sysarg_t read_ ##reg (void) \
    401401        { \
    402                 unative_t res; \
     402                sysarg_t res; \
    403403                asm volatile ( \
    404404                        "movq %%" #reg ", %[res]" \
     
    408408        }
    409409
    410 #define GEN_WRITE_REG(reg) NO_TRACE static inline void write_ ##reg (unative_t regn) \
     410#define GEN_WRITE_REG(reg) NO_TRACE static inline void write_ ##reg (sysarg_t regn) \
    411411        { \
    412412                asm volatile ( \
  • kernel/arch/amd64/include/context.h

    r8e58f94 r7bdcc45  
    2727 */
    2828
    29 /** @addtogroup amd64   
     29/** @addtogroup amd64
    3030 * @{
    3131 */
     
    4444 * panic sooner or later
    4545 */
    46 #define SP_DELTA     16
     46#define SP_DELTA  16
    4747
    4848#define context_set(c, _pc, stack, size) \
  • kernel/arch/amd64/include/context_offset.h

    r8e58f94 r7bdcc45  
    3030#define KERN_amd64_CONTEXT_OFFSET_H_
    3131
    32 #define OFFSET_SP  0x0
    33 #define OFFSET_PC  0x8
    34 #define OFFSET_RBX 0x10
    35 #define OFFSET_RBP 0x18
    36 #define OFFSET_R12 0x20
    37 #define OFFSET_R13 0x28
    38 #define OFFSET_R14 0x30
    39 #define OFFSET_R15 0x38
     32#define OFFSET_SP   0x00
     33#define OFFSET_PC   0x08
     34#define OFFSET_RBX  0x10
     35#define OFFSET_RBP  0x18
     36#define OFFSET_R12  0x20
     37#define OFFSET_R13  0x28
     38#define OFFSET_R14  0x30
     39#define OFFSET_R15  0x38
    4040
    4141#ifdef KERNEL
    42 # define OFFSET_IPL 0x40
     42        #define OFFSET_IPL 0x40
    4343#else
    44 # define OFFSET_TLS 0x40
     44        #define OFFSET_TLS 0x40
    4545#endif
    4646
    4747#ifdef __ASM__
    4848
    49 # ctx: address of the structure with saved context 
     49# ctx: address of the structure with saved context
    5050# pc: return address
    5151.macro CONTEXT_SAVE_ARCH_CORE ctx:req pc:req
     
    6161.endm
    6262
    63 # ctx: address of the structure with saved context 
     63# ctx: address of the structure with saved context
    6464.macro CONTEXT_RESTORE_ARCH_CORE ctx:req pc:req
    6565        movq OFFSET_R15(\ctx), %r15
     
    6868        movq OFFSET_R12(\ctx), %r12
    6969        movq OFFSET_RBP(\ctx), %rbp
    70         movq OFFSET_RBX(\ctx), %rbx     
     70        movq OFFSET_RBX(\ctx), %rbx
    7171       
    7272        movq OFFSET_SP(\ctx), %rsp   # ctx->sp -> %rsp
  • kernel/arch/amd64/include/cpu.h

    r8e58f94 r7bdcc45  
    3636#define KERN_amd64_CPU_H_
    3737
    38 #define RFLAGS_CF       (1 << 0)
    39 #define RFLAGS_PF       (1 << 2)
    40 #define RFLAGS_AF       (1 << 4)
    41 #define RFLAGS_ZF       (1 << 6)
    42 #define RFLAGS_SF       (1 << 7)
    43 #define RFLAGS_TF       (1 << 8)
    44 #define RFLAGS_IF       (1 << 9)
    45 #define RFLAGS_DF       (1 << 10)
    46 #define RFLAGS_OF       (1 << 11)
    47 #define RFLAGS_NT       (1 << 14)
    48 #define RFLAGS_RF       (1 << 16)
     38#define RFLAGS_CF  (1 << 0)
     39#define RFLAGS_PF  (1 << 2)
     40#define RFLAGS_AF  (1 << 4)
     41#define RFLAGS_ZF  (1 << 6)
     42#define RFLAGS_SF  (1 << 7)
     43#define RFLAGS_TF  (1 << 8)
     44#define RFLAGS_IF  (1 << 9)
     45#define RFLAGS_DF  (1 << 10)
     46#define RFLAGS_OF  (1 << 11)
     47#define RFLAGS_NT  (1 << 14)
     48#define RFLAGS_RF  (1 << 16)
    4949
    5050#define EFER_MSR_NUM    0xc0000080
  • kernel/arch/amd64/include/debugger.h

    r8e58f94 r7bdcc45  
    4141
    4242/* Flags that are passed to breakpoint_add function */
    43 #define BKPOINT_INSTR       0x1
    44 #define BKPOINT_WRITE       0x2
    45 #define BKPOINT_READ_WRITE  0x4
     43#define BKPOINT_INSTR       0x1U
     44#define BKPOINT_WRITE       0x2U
     45#define BKPOINT_READ_WRITE  0x4U
    4646
    47 #define BKPOINT_CHECK_ZERO  0x8
     47#define BKPOINT_CHECK_ZERO  0x8U
    4848
    4949
  • kernel/arch/amd64/include/istate.h

    r8e58f94 r7bdcc45  
    3737
    3838#ifdef KERNEL
     39
    3940#include <typedefs.h>
    4041#include <trace.h>
    41 #else
     42
     43#else /* KERNEL */
     44
    4245#include <sys/types.h>
     46
    4347#define NO_TRACE
    44 #endif
     48
     49#endif /* KERNEL */
    4550
    4651/** This is passed to interrupt handlers */
     
    6166        uint64_t r14;
    6267        uint64_t r15;
    63         uint64_t alignment;     /* align rbp_frame on multiple of 16 */
    64         uint64_t rbp_frame;     /* imitation of frame pointer linkage */
    65         uint64_t rip_frame;     /* imitation of return address linkage */
    66         uint64_t error_word;    /* real or fake error word */
     68        uint64_t alignment;   /* align rbp_frame on multiple of 16 */
     69        uint64_t rbp_frame;   /* imitation of frame pointer linkage */
     70        uint64_t rip_frame;   /* imitation of return address linkage */
     71        uint64_t error_word;  /* real or fake error word */
    6772        uint64_t rip;
    6873        uint64_t cs;
    6974        uint64_t rflags;
    70         uint64_t rsp;           /* only if istate_t is from uspace */
    71         uint64_t ss;            /* only if istate_t is from uspace */
     75        uint64_t rsp;         /* only if istate_t is from uspace */
     76        uint64_t ss;          /* only if istate_t is from uspace */
    7277} istate_t;
    7378
     
    7580NO_TRACE static inline int istate_from_uspace(istate_t *istate)
    7681{
    77         return !(istate->rip & 0x8000000000000000);
     82        return !(istate->rip & UINT64_C(0x8000000000000000));
    7883}
    7984
  • kernel/arch/amd64/include/mm/as.h

    r8e58f94 r7bdcc45  
    3636#define KERN_amd64_AS_H_
    3737
    38 #define ADDRESS_SPACE_HOLE_START        0x0000800000000000ULL
    39 #define ADDRESS_SPACE_HOLE_END          0xffff7fffffffffffULL
     38#define ADDRESS_SPACE_HOLE_START  UINT64_C(0x0000800000000000)
     39#define ADDRESS_SPACE_HOLE_END    UINT64_C(0xffff7fffffffffff)
    4040
    4141#define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH  0
    4242
    43 #define KERNEL_ADDRESS_SPACE_START_ARCH 0xffff800000000000ULL
    44 #define KERNEL_ADDRESS_SPACE_END_ARCH   0xffffffffffffffffULL
     43#define KERNEL_ADDRESS_SPACE_START_ARCH  UINT64_C(0xffff800000000000)
     44#define KERNEL_ADDRESS_SPACE_END_ARCH    UINT64_C(0xffffffffffffffff)
    4545
    46 #define USER_ADDRESS_SPACE_START_ARCH   0x0000000000000000ULL
    47 #define USER_ADDRESS_SPACE_END_ARCH     0x00007fffffffffffULL
     46#define USER_ADDRESS_SPACE_START_ARCH  UINT64_C(0x0000000000000000)
     47#define USER_ADDRESS_SPACE_END_ARCH    UINT64_C(0x00007fffffffffff)
    4848
    4949#define USTACK_ADDRESS_ARCH  (USER_ADDRESS_SPACE_END_ARCH - (PAGE_SIZE - 1))
  • kernel/arch/amd64/include/mm/page.h

    r8e58f94 r7bdcc45  
    5555#ifndef __ASM__
    5656
    57 #define KA2PA(x)  (((uintptr_t) (x)) - 0xffff800000000000)
    58 #define PA2KA(x)  (((uintptr_t) (x)) + 0xffff800000000000)
     57#define KA2PA(x)  (((uintptr_t) (x)) - UINT64_C(0xffff800000000000))
     58#define PA2KA(x)  (((uintptr_t) (x)) + UINT64_C(0xffff800000000000))
    5959
    6060#else /* __ASM__ */
     
    7878
    7979/* Macros calculating indices into page tables in each level. */
    80 #define PTL0_INDEX_ARCH(vaddr)  (((vaddr) >> 39) & 0x1ff)
    81 #define PTL1_INDEX_ARCH(vaddr)  (((vaddr) >> 30) & 0x1ff)
    82 #define PTL2_INDEX_ARCH(vaddr)  (((vaddr) >> 21) & 0x1ff)
    83 #define PTL3_INDEX_ARCH(vaddr)  (((vaddr) >> 12) & 0x1ff)
     80#define PTL0_INDEX_ARCH(vaddr)  (((vaddr) >> 39) & 0x1ffU)
     81#define PTL1_INDEX_ARCH(vaddr)  (((vaddr) >> 30) & 0x1ffU)
     82#define PTL2_INDEX_ARCH(vaddr)  (((vaddr) >> 21) & 0x1ffU)
     83#define PTL3_INDEX_ARCH(vaddr)  (((vaddr) >> 12) & 0x1ffU)
    8484
    8585/* Get PTE address accessors for each level. */
     
    205205        pte_t *p = &pt[i];
    206206       
    207         p->addr_12_31 = (a >> 12) & 0xfffff;
     207        p->addr_12_31 = (a >> 12) & UINT32_C(0xfffff);
    208208        p->addr_32_51 = a >> 32;
    209209}
  • kernel/arch/amd64/include/pm.h

    r8e58f94 r7bdcc45  
    7575#define AR_WRITABLE   (1 << 1)
    7676#define AR_READABLE   (1 << 1)
    77 #define AR_TSS        (0x09)
    78 #define AR_INTERRUPT  (0x0e)
    79 #define AR_TRAP       (0x0f)
     77#define AR_TSS        (0x09U)
     78#define AR_INTERRUPT  (0x0eU)
     79#define AR_TRAP       (0x0fU)
    8080
    8181#define DPL_KERNEL  (PL_KERNEL << 5)
  • kernel/arch/amd64/include/proc/thread.h

    r8e58f94 r7bdcc45  
    4141
    4242typedef struct {
    43         unative_t tls;
     43        sysarg_t tls;
    4444        /** User and kernel RSP for syscalls. */
    4545        uint64_t syscall_rsp[2];
  • kernel/arch/amd64/include/types.h

    r8e58f94 r7bdcc45  
    4343typedef uint64_t ipl_t;
    4444
    45 typedef uint64_t unative_t;
     45typedef uint64_t sysarg_t;
    4646typedef int64_t native_t;
    4747typedef uint64_t atomic_count_t;
     
    5050} fncptr_t;
    5151
    52 /* Formats for uintptr_t, size_t */
    53 #define PRIp  "llx"
    54 #define PRIs  "llu"
     52#define INTN_C(c)   INT64_C(c)
     53#define UINTN_C(c)  UINT64_C(c)
    5554
    56 /* Formats for (u)int8_t, (u)int16_t, (u)int32_t, (u)int64_t and (u)native_t */
    57 #define PRId8   "d"
    58 #define PRId16  "d"
    59 #define PRId32  "d"
    60 #define PRId64  "lld"
    61 #define PRIdn   "lld"
    62 
    63 #define PRIu8   "u"
    64 #define PRIu16  "u"
    65 #define PRIu32  "u"
    66 #define PRIu64  "llu"
    67 #define PRIun   "llu"
    68 
    69 #define PRIx8   "x"
    70 #define PRIx16  "x"
    71 #define PRIx32  "x"
    72 #define PRIx64  "llx"
    73 #define PRIxn   "llx"
     55#define PRIdn  PRId64  /**< Format for native_t. */
     56#define PRIun  PRIu64  /**< Format for sysarg_t. */
     57#define PRIxn  PRIx64  /**< Format for hexadecimal sysarg_t. */
     58#define PRIua  PRIu64  /**< Format for atomic_count_t. */
    7459
    7560#endif
  • kernel/arch/amd64/src/amd64.c

    r8e58f94 r7bdcc45  
    256256 * we need not to go to CPL0 to read it.
    257257 */
    258 unative_t sys_tls_set(unative_t addr)
     258sysarg_t sys_tls_set(sysarg_t addr)
    259259{
    260260        THREAD->arch.tls = addr;
  • kernel/arch/amd64/src/boot/memmap.c

    r8e58f94 r7bdcc45  
    3535#include <arch/boot/memmap.h>
    3636
    37 uint8_t e820counter = 0xff;
     37uint8_t e820counter = 0xffU;
    3838e820memmap_t e820table[MEMMAP_E820_MAX_RECORDS];
    3939
  • kernel/arch/amd64/src/cpu/cpu.c

    r8e58f94 r7bdcc45  
    4747 * Contains only non-MP-Specification specific SMP code.
    4848 */
    49 #define AMD_CPUID_EBX  0x68747541
    50 #define AMD_CPUID_ECX  0x444d4163
    51 #define AMD_CPUID_EDX  0x69746e65
     49#define AMD_CPUID_EBX  UINT32_C(0x68747541)
     50#define AMD_CPUID_ECX  UINT32_C(0x444d4163)
     51#define AMD_CPUID_EDX  UINT32_C(0x69746e65)
    5252
    53 #define INTEL_CPUID_EBX  0x756e6547
    54 #define INTEL_CPUID_ECX  0x6c65746e
    55 #define INTEL_CPUID_EDX  0x49656e69
    56 
     53#define INTEL_CPUID_EBX  UINT32_C(0x756e6547)
     54#define INTEL_CPUID_ECX  UINT32_C(0x6c65746e)
     55#define INTEL_CPUID_EDX  UINT32_C(0x49656e69)
    5756
    5857enum vendor {
  • kernel/arch/amd64/src/debugger.c

    r8e58f94 r7bdcc45  
    125125       
    126126        /* Disable breakpoint in DR7 */
    127         unative_t dr7 = read_dr7();
    128         dr7 &= ~(0x2 << (curidx * 2));
     127        sysarg_t dr7 = read_dr7();
     128        dr7 &= ~(0x02U << (curidx * 2));
    129129       
    130130        /* Setup DR register */
     
    147147               
    148148                /* Set type to requested breakpoint & length*/
    149                 dr7 &= ~(0x3 << (16 + 4 * curidx));
    150                 dr7 &= ~(0x3 << (18 + 4 * curidx));
     149                dr7 &= ~(0x03U << (16 + 4 * curidx));
     150                dr7 &= ~(0x03U << (18 + 4 * curidx));
    151151               
    152152                if (!(flags & BKPOINT_INSTR)) {
    153153#ifdef __32_BITS__
    154                         dr7 |= ((unative_t) 0x3) << (18 + 4 * curidx);
     154                        dr7 |= ((sysarg_t) 0x03U) << (18 + 4 * curidx);
    155155#endif
    156156                       
    157157#ifdef __64_BITS__
    158                         dr7 |= ((unative_t) 0x2) << (18 + 4 * curidx);
     158                        dr7 |= ((sysarg_t) 0x02U) << (18 + 4 * curidx);
    159159#endif
    160160                       
    161161                        if ((flags & BKPOINT_WRITE))
    162                                 dr7 |= ((unative_t) 0x1) << (16 + 4 * curidx);
     162                                dr7 |= ((sysarg_t) 0x01U) << (16 + 4 * curidx);
    163163                        else if ((flags & BKPOINT_READ_WRITE))
    164                                 dr7 |= ((unative_t) 0x3) << (16 + 4 * curidx);
     164                                dr7 |= ((sysarg_t) 0x03U) << (16 + 4 * curidx);
    165165                }
    166166               
    167167                /* Enable global breakpoint */
    168                 dr7 |= 0x2 << (curidx * 2);
     168                dr7 |= 0x02U << (curidx * 2);
    169169               
    170170                write_dr7(dr7);
     
    227227        if (!(breakpoints[slot].flags & BKPOINT_INSTR)) {
    228228                if ((breakpoints[slot].flags & BKPOINT_CHECK_ZERO)) {
    229                         if (*((unative_t *) breakpoints[slot].address) != 0)
     229                        if (*((sysarg_t *) breakpoints[slot].address) != 0)
    230230                                return;
    231231                       
    232                         printf("*** Found ZERO on address %" PRIp " (slot %d) ***\n",
    233                             breakpoints[slot].address, slot);
     232                        printf("*** Found ZERO on address %p (slot %d) ***\n",
     233                            (void *) breakpoints[slot].address, slot);
    234234                } else {
    235                         printf("Data watchpoint - new data: %" PRIp "\n",
    236                             *((unative_t *) breakpoints[slot].address));
    237                 }
    238         }
    239        
    240         printf("Reached breakpoint %d:%" PRIp " (%s)\n", slot, getip(istate),
    241             symtab_fmt_name_lookup(getip(istate)));
     235                        printf("Data watchpoint - new data: %#" PRIxn "\n",
     236                            *((sysarg_t *) breakpoints[slot].address));
     237                }
     238        }
     239       
     240        printf("Reached breakpoint %d:%p (%s)\n", slot,
     241            (void *) getip(istate), symtab_fmt_name_lookup(getip(istate)));
    242242       
    243243#ifdef CONFIG_KCONSOLE
     
    260260        }
    261261       
    262         cur->address = NULL;
     262        cur->address = (uintptr_t) NULL;
    263263       
    264264        setup_dr(slot);
     
    279279#endif
    280280       
    281         unative_t dr6 = read_dr6();
     281        sysarg_t dr6 = read_dr6();
    282282       
    283283        unsigned int i;
     
    313313        unsigned int i;
    314314        for (i = 0; i < BKPOINTS_MAX; i++)
    315                 breakpoints[i].address = NULL;
     315                breakpoints[i].address = (uintptr_t) NULL;
    316316       
    317317#ifdef CONFIG_KCONSOLE
     
    363363                       
    364364#ifdef __32_BITS__
    365                         printf("%-4u %7" PRIs " %p %s\n", i,
    366                             breakpoints[i].counter, breakpoints[i].address,
     365                        printf("%-4u %7zu %p %s\n", i,
     366                            breakpoints[i].counter, (void *) breakpoints[i].address,
    367367                            symbol);
    368368#endif
    369369                       
    370370#ifdef __64_BITS__
    371                         printf("%-4u %7" PRIs " %p %s\n", i,
    372                             breakpoints[i].counter, breakpoints[i].address,
     371                        printf("%-4u %7zu %p %s\n", i,
     372                            breakpoints[i].counter, (void *) breakpoints[i].address,
    373373                            symbol);
    374374#endif
     
    384384int cmd_del_breakpoint(cmd_arg_t *argv)
    385385{
    386         unative_t bpno = argv->intval;
     386        sysarg_t bpno = argv->intval;
    387387        if (bpno > BKPOINTS_MAX) {
    388388                printf("Invalid breakpoint number.\n");
     
    405405                flags = BKPOINT_WRITE;
    406406       
    407         printf("Adding breakpoint on address: %p\n", argv->intval);
    408        
    409         int id = breakpoint_add((void *)argv->intval, flags, -1);
     407        printf("Adding breakpoint on address: %p\n",
     408            (void *) argv->intval);
     409       
     410        int id = breakpoint_add((void *) argv->intval, flags, -1);
    410411        if (id < 0)
    411412                printf("Add breakpoint failed.\n");
  • kernel/arch/amd64/src/interrupt.c

    r8e58f94 r7bdcc45  
    6565void istate_decode(istate_t *istate)
    6666{
    67         printf("cs =%p\trip=%p\trfl=%p\terr=%p\n",
    68             istate->cs, istate->rip, istate->rflags, istate->error_word);
    69 
     67        printf("cs =%#0" PRIx64 "\trip=%p\t"
     68            "rfl=%#0" PRIx64 "\terr=%#0" PRIx64 "\n",
     69            istate->cs, (void *) istate->rip,
     70            istate->rflags, istate->error_word);
     71       
    7072        if (istate_from_uspace(istate))
    71                 printf("ss =%p\n", istate->ss);
    72        
    73         printf("rax=%p\trbx=%p\trcx=%p\trdx=%p\n",
     73                printf("ss =%#0" PRIx64 "\n", istate->ss);
     74       
     75        printf("rax=%#0" PRIx64 "\trbx=%#0" PRIx64 "\t"
     76            "rcx=%#0" PRIx64 "\trdx=%#0" PRIx64 "\n",
    7477            istate->rax, istate->rbx, istate->rcx, istate->rdx);
     78       
    7579        printf("rsi=%p\trdi=%p\trbp=%p\trsp=%p\n",
    76             istate->rsi, istate->rdi, istate->rbp,
    77             istate_from_uspace(istate) ? istate->rsp : (uintptr_t)&istate->rsp);
    78         printf("r8 =%p\tr9 =%p\tr10=%p\tr11=%p\n",
     80            (void *) istate->rsi, (void *) istate->rdi,
     81            (void *) istate->rbp,
     82            istate_from_uspace(istate) ? ((void *) istate->rsp) :
     83            &istate->rsp);
     84       
     85        printf("r8 =%#0" PRIx64 "\tr9 =%#0" PRIx64 "\t"
     86            "r10=%#0" PRIx64 "\tr11=%#0" PRIx64 "\n",
    7987            istate->r8, istate->r9, istate->r10, istate->r11);
    80         printf("r12=%p\tr13=%p\tr14=%p\tr15=%p\n",
     88       
     89        printf("r12=%#0" PRIx64 "\tr13=%#0" PRIx64 "\t"
     90            "r14=%#0" PRIx64 "\tr15=%#0" PRIx64 "\n",
    8191            istate->r12, istate->r13, istate->r14, istate->r15);
    8292}
  • kernel/arch/amd64/src/mm/page.c

    r8e58f94 r7bdcc45  
    8989       
    9090        if (as_page_fault(page, access, istate) == AS_PF_FAULT) {
    91                 fault_if_from_uspace(istate, "Page fault: %#x.", page);
     91                fault_if_from_uspace(istate, "Page fault: %p.", (void *) page);
    9292                panic_memtrap(istate, access, page, NULL);
    9393        }
     
    9797{
    9898        if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH))
    99                 panic("Unable to map physical memory %p (%" PRIs " bytes).", physaddr,
    100                     size);
     99                panic("Unable to map physical memory %p (%zu bytes).",
     100                    (void *) physaddr, size);
    101101       
    102102        uintptr_t virtaddr = PA2KA(last_frame);
  • kernel/arch/amd64/src/pm.c

    r8e58f94 r7bdcc45  
    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;
    173174                d->selector = GDT_SELECTOR(KTEXT_DES);
    174 
     175               
    175176                d->present = 1;
    176                 d->type = AR_INTERRUPT; /* masking interrupt */
     177                d->type = AR_INTERRUPT;  /* masking interrupt */
    177178        }
    178 
     179       
    179180        d = &idt[0];
    180181        idt_setoffset(d++, (uintptr_t) &int_0);
Note: See TracChangeset for help on using the changeset viewer.