at v2.6.15 58 lines 1.7 kB view raw
1/* $Id$ */ 2/* 3 * This file is subject to the terms and conditions of the GNU General Public 4 * License. See the file "COPYING" in the main directory of this archive 5 * for more details. 6 * 7 * Copyright (C) 2001 by Hiroyuki Kondo 8 * 9 * Defitions for the address spaces of the M32R CPUs. 10 */ 11#ifndef __ASM_M32R_ADDRSPACE_H 12#define __ASM_M32R_ADDRSPACE_H 13 14/* 15 * Memory segments (32bit kernel mode addresses) 16 */ 17#define KUSEG 0x00000000 18#define KSEG0 0x80000000 19#define KSEG1 0xa0000000 20#define KSEG2 0xc0000000 21#define KSEG3 0xe0000000 22 23#define K0BASE KSEG0 24 25/* 26 * Returns the kernel segment base of a given address 27 */ 28#ifndef __ASSEMBLY__ 29#define KSEGX(a) (((unsigned long)(a)) & 0xe0000000) 30#else 31#define KSEGX(a) ((a) & 0xe0000000) 32#endif 33 34/* 35 * Returns the physical address of a KSEG0/KSEG1 address 36 */ 37#ifndef __ASSEMBLY__ 38#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff) 39#else 40#define PHYSADDR(a) ((a) & 0x1fffffff) 41#endif 42 43/* 44 * Map an address to a certain kernel segment 45 */ 46#ifndef __ASSEMBLY__ 47#define KSEG0ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG0)) 48#define KSEG1ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG1)) 49#define KSEG2ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG2)) 50#define KSEG3ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG3)) 51#else 52#define KSEG0ADDR(a) (((a) & 0x1fffffff) | KSEG0) 53#define KSEG1ADDR(a) (((a) & 0x1fffffff) | KSEG1) 54#define KSEG2ADDR(a) (((a) & 0x1fffffff) | KSEG2) 55#define KSEG3ADDR(a) (((a) & 0x1fffffff) | KSEG3) 56#endif 57 58#endif /* __ASM_M32R_ADDRSPACE_H */