Changeset 5b23a82 in mainline for kernel/arch/xen32/src


Ignore:
Timestamp:
2006-08-01T21:12:54Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7c5a8dd
Parents:
7d3d641
Message:

xen32: enable/disable interrupts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/xen32/src/userspace.c

    • Property mode changed from 120000 to 100644
    r7d3d641 r5b23a82  
    1 ../../ia32/src/userspace.c
     1/*
     2 * Copyright (C) 2005 Jakub Jermar
     3 * All rights reserved.
     4 *
     5 * Redistribution and use in source and binary forms, with or without
     6 * modification, are permitted provided that the following conditions
     7 * are met:
     8 *
     9 * - Redistributions of source code must retain the above copyright
     10 *   notice, this list of conditions and the following disclaimer.
     11 * - Redistributions in binary form must reproduce the above copyright
     12 *   notice, this list of conditions and the following disclaimer in the
     13 *   documentation and/or other materials provided with the distribution.
     14 * - The name of the author may not be used to endorse or promote products
     15 *   derived from this software without specific prior written permission.
     16 *
     17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 */
     28
     29/** @addtogroup xen32
     30 * @{
     31 */
     32/** @file
     33 */
     34
     35#include <userspace.h>
     36#include <arch/pm.h>
     37#include <arch/types.h>
     38#include <arch.h>
     39#include <proc/uarg.h>
     40#include <mm/as.h>
     41
     42
     43/** Enter userspace
     44 *
     45 * Change CPU protection level to 3, enter userspace.
     46 *
     47 */
     48void userspace(uspace_arg_t *kernel_uarg)
     49{
     50        uint32_t ipl = interrupts_disable();
     51
     52        asm volatile (
     53                /*
     54                 * Clear nested task flag.
     55                 */
     56                "pushfl\n"
     57                "pop %%eax\n"
     58                "and $0xffffbfff, %%eax\n"
     59                "push %%eax\n"
     60                "popfl\n"
     61
     62                /* Set up GS register (TLS) */
     63                "movl %6, %%gs\n"
     64
     65                "pushl %0\n"
     66                "pushl %1\n"
     67                "pushl %2\n"
     68                "pushl %3\n"
     69                "pushl %4\n"
     70                "movl %5, %%eax\n"
     71                "iret\n"
     72                :
     73                : "i" (selector(UDATA_DES) | PL_USER), "r" (kernel_uarg->uspace_stack+THREAD_STACK_SIZE),
     74                  "r" (ipl), "i" (selector(UTEXT_DES) | PL_USER), "r" (kernel_uarg->uspace_entry),
     75                "r" (kernel_uarg->uspace_uarg),
     76                "r" (selector(TLS_DES))
     77                : "eax");
     78       
     79        /* Unreachable */
     80        for(;;)
     81                ;
     82}
     83
     84/** @}
     85 */
Note: See TracChangeset for help on using the changeset viewer.