sl@0: // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of the License "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @publishedPartner sl@0: @prototype sl@0: */ sl@0: sl@0: #ifndef __MMBOOT_H__ sl@0: #define __MMBOOT_H__ sl@0: sl@0: #include sl@0: sl@0: // Linear address map sl@0: // 00000000-003FFFFF Unmapped sl@0: // 00400000-7EFFFFFF Local data sl@0: // 7F000000-7FFFFFFF IPC Alias region sl@0: // 80000000- ROM sl@0: // -8FFFFFFF Global user area sl@0: // 90000000-EFFFFFFF Kernel memory sl@0: // F0000000-FFF00000 Fixed kernel mappings sl@0: // FFF00000-FFFFFFFF Exception vectors sl@0: // sl@0: sl@0: // Linear addresses sl@0: sl@0: const TLinAddr KUserLocalDataBase =0x00400000u; sl@0: sl@0: const TLinAddr KUserLocalDataEnd =0x7f000000u; sl@0: sl@0: const TLinAddr KIPCAlias =0x7f000000u; sl@0: const TLinAddr KIPCAliasAreaSize =0x01000000u; sl@0: sl@0: /** Everything above here is global (visible to all processes).*/ sl@0: const TLinAddr KGlobalMemoryBase =0x80000000u; sl@0: sl@0: const TLinAddr KRomLinearBase =0x80000000u; sl@0: sl@0: /** Everything below here has user access permissions, everything above is supervisor only. */ sl@0: const TLinAddr KUserMemoryLimit =0x90000000u; sl@0: sl@0: const TLinAddr KKernelSectionBase =0x90000000u; sl@0: sl@0: const TLinAddr KPrimaryIOBase =0xC6000000u; // XXX This magic constant is hard coded into baseports! sl@0: const TLinAddr KPrimaryIOEnd =0xC8000000u; sl@0: sl@0: const TLinAddr KKernelDataBase =0xC8000000u; sl@0: sl@0: const TLinAddr KKernelSectionEnd =0xF0000000u; sl@0: sl@0: const TLinAddr KSuperPageLinAddr =0xF0000000u; sl@0: const TLinAddr KMachineConfigLinAddr =0xF0000800u; sl@0: #ifdef __SMP__ sl@0: const TLinAddr KAPBootPageDirLin =0xF0004000u; sl@0: const TLinAddr KAPBootPageTableLin =0xF0008000u; sl@0: const TLinAddr KAPBootPageLin =0xF0009000u; sl@0: #endif sl@0: const TLinAddr KDummyUncachedAddr =0xF000F000u; sl@0: const TLinAddr KPageInfoMap =0xF0010000u; sl@0: const TLinAddr KExcptStacksLinearBase =0xF0040000u; sl@0: const TLinAddr KExcptStacksLinearEnd =0xF0080000u; sl@0: const TLinAddr KTempAddr =0xF0080000u; sl@0: const TLinAddr KTempAddrEnd =0xF0100000u; sl@0: sl@0: const TLinAddr KPageTableInfoBase =0xF0C00000u; sl@0: const TLinAddr KPageTableInfoEnd =0xF1000000u; sl@0: sl@0: const TLinAddr KPageArraySegmentBase =0xF1000000u; sl@0: const TLinAddr KPageArraySegmentEnd =0xF2000000u; sl@0: sl@0: const TLinAddr KPageInfoLinearBase =0xF2000000u; sl@0: const TLinAddr KPageInfoLinearEnd =0xF4000000u; sl@0: sl@0: const TLinAddr KPageDirectoryBase =0xF4000000u; sl@0: const TLinAddr KPageDirectoryEnd =0xF8000000u; sl@0: sl@0: const TLinAddr KPageTableBase =0xF8000000u; sl@0: const TLinAddr KPageTableEnd =0xFFF00000u; sl@0: sl@0: sl@0: // Domain usage sl@0: // sl@0: // 0 All, except... sl@0: // 2 IPC Alias chunk sl@0: // 15 User memory when __USER_MEMORY_GUARDS_ENABLED__ defined sl@0: const TInt KIPCAliasDomain = 2; sl@0: const TInt KNumArmDomains = 16; /**< @internalTechnology */ sl@0: sl@0: // default domain access is client of domain 0, no access to rest sl@0: const TUint32 KDefaultDomainAccess = 0x00000001u; /**< @internalTechnology */ sl@0: const TUint32 KSupervisorInitialDomainAccess = 0x00000001u; /**< @internalTechnology */ sl@0: sl@0: #define PDE_IN_DOMAIN(aPde, aDomain) (((aPde) & ~(15 << 5)) | ((aDomain) << 5)) sl@0: sl@0: // Constants for ARM V6 MMU sl@0: const TInt KPageShift=12; sl@0: const TInt KPageSize=1<= (TLinAddr)KExcStackAddressSpace * (TUint)KMaxCPUs); sl@0: sl@0: #endif // __MMBOOT_H__