Changeset 68091bd in mainline


Ignore:
Timestamp:
2006-04-21T12:55:55Z (19 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c7c0b89b
Parents:
17b1b99
Message:

Incomplete VHPT walker support for Itanium

Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    r17b1b99 r68091bd  
    7878ifeq ($(CONFIG_DEBUG_ALLREGS),y)
    7979        DEFS += -DCONFIG_DEBUG_ALLREGS
     80endif
     81ifeq ($(CONFIG_VHPT),y)
     82        DEFS += -DCONFIG_VHPT
    8083endif
    8184
  • arch/ia64/Makefile.inc

    r17b1b99 r68091bd  
    8585        arch/$(ARCH)/src/mm/page.c \
    8686        arch/$(ARCH)/src/mm/tlb.c \
     87        arch/$(ARCH)/src/mm/vhpt.c \
    8788        arch/$(ARCH)/src/proc/scheduler.c \
    8889        arch/$(ARCH)/src/ddi/ddi.c \
  • arch/ia64/include/mm/page.h

    r17b1b99 r68091bd  
    6161#define VHPT_WIDTH                      20              /* 1M */
    6262#define VHPT_SIZE                       (1 << VHPT_WIDTH)
    63 #define VHPT_BASE                       0               /* Must be aligned to VHPT_SIZE */
    6463
    6564#define PTA_BASE_SHIFT                  15
  • arch/ia64/src/mm/page.c

    r17b1b99 r68091bd  
    3232#include <mm/asid.h>
    3333#include <arch/mm/asid.h>
     34#include <arch/mm/vhpt.h>
    3435#include <arch/types.h>
    3536#include <typedefs.h>
     
    5960        pta_register pta;       
    6061        int i;
     62#ifdef CONFIG_VHPT     
     63        __address vhpt_base;
     64#endif
    6165
    6266        /*
     
    8993        }
    9094
     95#ifdef CONFIG_VHPT     
     96        vhpt_base = vhpt_set_up();
     97#endif
    9198        /*
    9299         * Set up PTA register.
    93100         */
    94101        pta.word = pta_read();
     102#ifndef CONFIG_VHPT
    95103        pta.map.ve = 0;                   /* disable VHPT walker */
     104        pta.map.base = 0 >> PTA_BASE_SHIFT;
     105#else
     106        pta.map.ve = 1;                   /* enable VHPT walker */
     107        pta.map.base = vhpt_base >> PTA_BASE_SHIFT;
     108#endif
    96109        pta.map.vf = 1;                   /* large entry format */
    97110        pta.map.size = VHPT_WIDTH;
    98         pta.map.base = VHPT_BASE >> PTA_BASE_SHIFT;
    99111        pta_write(pta.word);
    100112        srlz_i();
  • arch/ia64/src/mm/tlb.c

    r17b1b99 r68091bd  
    3737#include <arch/mm/tlb.h>
    3838#include <arch/mm/page.h>
     39#include <arch/mm/vhpt.h>
    3940#include <arch/barrier.h>
    4041#include <arch/interrupt.h>
     
    7980                srlz_d();
    8081                srlz_i();
     82#ifdef CONFIG_VHPT
     83                vhpt_invalidate_all();
     84#endif 
    8185}
    8286
     
    386390       
    387391        dtc_mapping_insert(t->page, t->as->asid, entry);
     392#ifdef CONFIG_VHPT
     393        vhpt_mapping_insert(t->page, t->as->asid, entry);
     394#endif 
    388395}
    389396
     
    410417       
    411418        itc_mapping_insert(t->page, t->as->asid, entry);
     419#ifdef CONFIG_VHPT
     420        vhpt_mapping_insert(t->page, t->as->asid, entry);
     421#endif 
    412422}
    413423
  • generic/src/proc/thread.c

    r17b1b99 r68091bd  
    454454__native sys_thread_create(uspace_arg_t *uspace_uarg, char *uspace_name)
    455455{
    456         thread_t *t;
    457         char namebuf[THREAD_NAME_BUFLEN];
     456        thread_t *t;
     457        char namebuf[THREAD_NAME_BUFLEN];
    458458        uspace_arg_t *kernel_uarg;
    459459        __u32 tid;
    460460
    461         copy_from_uspace(namebuf, uspace_name, THREAD_NAME_BUFLEN);
     461        copy_from_uspace(namebuf, uspace_name, THREAD_NAME_BUFLEN);
    462462
    463463        kernel_uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0);
    464464        copy_from_uspace(kernel_uarg, uspace_uarg, sizeof(uspace_arg_t));
    465465
    466         if ((t = thread_create(uinit, kernel_uarg, TASK, 0, namebuf))) {
     466        if ((t = thread_create(uinit, kernel_uarg, TASK, 0, namebuf))) {
    467467                tid = t->tid;
    468                 thread_ready(t);
     468                thread_ready(t);
    469469                return (__native) tid;
    470         } else {
     470        } else {
    471471                free(kernel_uarg);
    472         }
    473 
    474         return (__native) -1;
     472        }
     473
     474        return (__native) -1;
    475475}
    476476
     
    480480__native sys_thread_exit(int uspace_status)
    481481{
    482         thread_exit();
    483         /* Unreachable */
    484         return 0;
    485 }
     482        thread_exit();
     483        /* Unreachable */
     484        return 0;
     485}
  • kernel.config

    r17b1b99 r68091bd  
    7878! [CONFIG_DEBUG=y&(ARCH=amd64|ARCH=mips32|ARCH=ia32)] CONFIG_DEBUG_ALLREGS (y/n)
    7979
     80# Use VHPT
     81! [ARCH=ia64] CONFIG_VHPT (y/n)
     82
    8083## Run-time configuration directives
    8184
Note: See TracChangeset for help on using the changeset viewer.