cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mmu_context.h (1174B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* 
      3 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
      4 */
      5
      6#ifndef __UM_MMU_CONTEXT_H
      7#define __UM_MMU_CONTEXT_H
      8
      9#include <linux/sched.h>
     10#include <linux/mm_types.h>
     11#include <linux/mmap_lock.h>
     12
     13#include <asm/mm_hooks.h>
     14#include <asm/mmu.h>
     15
     16extern void force_flush_all(void);
     17
     18#define activate_mm activate_mm
     19static inline void activate_mm(struct mm_struct *old, struct mm_struct *new)
     20{
     21	/*
     22	 * This is called by fs/exec.c and sys_unshare()
     23	 * when the new ->mm is used for the first time.
     24	 */
     25	__switch_mm(&new->context.id);
     26}
     27
     28static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, 
     29			     struct task_struct *tsk)
     30{
     31	unsigned cpu = smp_processor_id();
     32
     33	if(prev != next){
     34		cpumask_clear_cpu(cpu, mm_cpumask(prev));
     35		cpumask_set_cpu(cpu, mm_cpumask(next));
     36		if(next != &init_mm)
     37			__switch_mm(&next->context.id);
     38	}
     39}
     40
     41#define init_new_context init_new_context
     42extern int init_new_context(struct task_struct *task, struct mm_struct *mm);
     43
     44#define destroy_context destroy_context
     45extern void destroy_context(struct mm_struct *mm);
     46
     47#include <asm-generic/mmu_context.h>
     48
     49#endif