404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.129.58.166: ~ $
/*
 * OpenRISC Linux
 *
 * Linux architectural port borrowing liberally from similar works of
 * others.  All original copyrights apply as per the original source
 * declaration.
 *
 * OpenRISC implementation:
 * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
 * et al.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#ifndef __ASM_OPENRISC_FIXMAP_H
#define __ASM_OPENRISC_FIXMAP_H

/* Why exactly do we need 2 empty pages between the top of the fixed
 * addresses and the top of virtual memory?  Something is using that
 * memory space but not sure what right now... If you find it, leave
 * a comment here.
 */
#define FIXADDR_TOP	((unsigned long) (-2*PAGE_SIZE))

#include <linux/kernel.h>
#include <linux/bug.h>
#include <asm/page.h>

/*
 * On OpenRISC we use these special fixed_addresses for doing ioremap
 * early in the boot process before memory initialization is complete.
 * This is used, in particular, by the early serial console code.
 *
 * It's not really 'fixmap', per se, but fits loosely into the same
 * paradigm.
 */
enum fixed_addresses {
	/*
	 * FIX_IOREMAP entries are useful for mapping physical address
	 * space before ioremap() is useable, e.g. really early in boot
	 * before kmalloc() is working.
	 */
#define FIX_N_IOREMAPS  32
	FIX_IOREMAP_BEGIN,
	FIX_IOREMAP_END = FIX_IOREMAP_BEGIN + FIX_N_IOREMAPS - 1,
	__end_of_fixed_addresses
};

#define FIXADDR_SIZE		(__end_of_fixed_addresses << PAGE_SHIFT)
/* FIXADDR_BOTTOM might be a better name here... */
#define FIXADDR_START		(FIXADDR_TOP - FIXADDR_SIZE)

#define __fix_to_virt(x)	(FIXADDR_TOP - ((x) << PAGE_SHIFT))
#define __virt_to_fix(x)	((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)

/*
 * 'index to address' translation. If anyone tries to use the idx
 * directly without tranlation, we catch the bug with a NULL-deference
 * kernel oops. Illegal ranges of incoming indices are caught too.
 */
static __always_inline unsigned long fix_to_virt(const unsigned int idx)
{
	/*
	 * this branch gets completely eliminated after inlining,
	 * except when someone tries to use fixaddr indices in an
	 * illegal way. (such as mixing up address types or using
	 * out-of-range indices).
	 *
	 * If it doesn't get removed, the linker will complain
	 * loudly with a reasonably clear error message..
	 */
	if (idx >= __end_of_fixed_addresses)
		BUG();

	return __fix_to_virt(idx);
}

static inline unsigned long virt_to_fix(const unsigned long vaddr)
{
	BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
	return __virt_to_fix(vaddr);
}

#endif

Filemanager

Name Type Size Permission Actions
bitops Folder 0755
Kbuild File 997 B 0644
asm-offsets.h File 35 B 0644
atomic.h File 3.02 KB 0644
barrier.h File 203 B 0644
bitops.h File 1.5 KB 0644
cache.h File 888 B 0644
cacheflush.h File 3.37 KB 0644
cmpxchg.h File 3.92 KB 0644
cpuinfo.h File 970 B 0644
delay.h File 670 B 0644
dma-mapping.h File 968 B 0644
elf.h File 2.02 KB 0644
fixmap.h File 2.74 KB 0644
futex.h File 2.24 KB 0644
io.h File 1.31 KB 0644
irq.h File 835 B 0644
irqflags.h File 866 B 0644
linkage.h File 764 B 0644
mmu.h File 728 B 0644
mmu_context.h File 1.3 KB 0644
page.h File 2.54 KB 0644
pgalloc.h File 2.57 KB 0644
pgtable.h File 13.96 KB 0644
processor.h File 2.7 KB 0644
ptrace.h File 3.33 KB 0644
serial.h File 1.11 KB 0644
smp.h File 822 B 0644
spinlock.h File 985 B 0644
spinlock_types.h File 188 B 0644
spr.h File 1.17 KB 0644
spr_defs.h File 22.91 KB 0644
string.h File 324 B 0644
syscall.h File 1.91 KB 0644
syscalls.h File 1.04 KB 0644
thread_info.h File 3.85 KB 0644
time.h File 627 B 0644
timex.h File 914 B 0644
tlb.h File 1.01 KB 0644
tlbflush.h File 2.05 KB 0644
uaccess.h File 7.98 KB 0644
unaligned.h File 1.7 KB 0644
unwinder.h File 557 B 0644