linux/arch/tile/mm/migrate.h
<<
>>
Prefs
   1/*
   2 * Copyright 2010 Tilera Corporation. All Rights Reserved.
   3 *
   4 *   This program is free software; you can redistribute it and/or
   5 *   modify it under the terms of the GNU General Public License
   6 *   as published by the Free Software Foundation, version 2.
   7 *
   8 *   This program is distributed in the hope that it will be useful, but
   9 *   WITHOUT ANY WARRANTY; without even the implied warranty of
  10 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  11 *   NON INFRINGEMENT.  See the GNU General Public License for
  12 *   more details.
  13 *
  14 * Structure definitions for migration, exposed here for use by
  15 * arch/tile/kernel/asm-offsets.c.
  16 */
  17
  18#ifndef MM_MIGRATE_H
  19#define MM_MIGRATE_H
  20
  21#include <linux/cpumask.h>
  22#include <hv/hypervisor.h>
  23
  24/*
  25 * This function is used as a helper when setting up the initial
  26 * page table (swapper_pg_dir).
  27 *
  28 * You must mask ALL interrupts prior to invoking this code, since
  29 * you can't legally touch the stack during the cache flush.
  30 */
  31extern int flush_and_install_context(HV_PhysAddr page_table, HV_PTE access,
  32                                     HV_ASID asid,
  33                                     const unsigned long *cpumask);
  34
  35/*
  36 * This function supports migration as a "helper" as follows:
  37 *
  38 *  - Set the stack PTE itself to "migrating".
  39 *  - Do a global TLB flush for (va,length) and the specified ASIDs.
  40 *  - Do a cache-evict on all necessary cpus.
  41 *  - Write the new stack PTE.
  42 *
  43 * Note that any non-NULL pointers must not point to the page that
  44 * is handled by the stack_pte itself.
  45 *
  46 * You must mask ALL interrupts prior to invoking this code, since
  47 * you can't legally touch the stack during the cache flush.
  48 */
  49extern int homecache_migrate_stack_and_flush(pte_t stack_pte, unsigned long va,
  50                                     size_t length, pte_t *stack_ptep,
  51                                     const struct cpumask *cache_cpumask,
  52                                     const struct cpumask *tlb_cpumask,
  53                                     HV_Remote_ASID *asids,
  54                                     int asidcount);
  55
  56#endif /* MM_MIGRATE_H */
  57