 a1b200e27c
			
		
	
	
	a1b200e27c
	
	
	
		
			
			Provide an INIT_MM_CONTEXT intializer macro which can be used to statically initialize mm_struct:mm_context of init_mm. This way we can get rid of code which will do the initialization at run time (on s390). In addition the current code can be found at a place where it is not expected. So let's have a common initializer which architectures can use if needed. This is based on a patch from Suzuki Poulose. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Suzuki Poulose <suzuki@in.ibm.com> Cc: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			26 lines
		
	
	
	
		
			647 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			647 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <linux/mm_types.h>
 | |
| #include <linux/rbtree.h>
 | |
| #include <linux/rwsem.h>
 | |
| #include <linux/spinlock.h>
 | |
| #include <linux/list.h>
 | |
| #include <linux/cpumask.h>
 | |
| 
 | |
| #include <asm/atomic.h>
 | |
| #include <asm/pgtable.h>
 | |
| #include <asm/mmu.h>
 | |
| 
 | |
| #ifndef INIT_MM_CONTEXT
 | |
| #define INIT_MM_CONTEXT(name)
 | |
| #endif
 | |
| 
 | |
| struct mm_struct init_mm = {
 | |
| 	.mm_rb		= RB_ROOT,
 | |
| 	.pgd		= swapper_pg_dir,
 | |
| 	.mm_users	= ATOMIC_INIT(2),
 | |
| 	.mm_count	= ATOMIC_INIT(1),
 | |
| 	.mmap_sem	= __RWSEM_INITIALIZER(init_mm.mmap_sem),
 | |
| 	.page_table_lock =  __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock),
 | |
| 	.mmlist		= LIST_HEAD_INIT(init_mm.mmlist),
 | |
| 	.cpu_vm_mask	= CPU_MASK_ALL,
 | |
| 	INIT_MM_CONTEXT(init_mm)
 | |
| };
 |