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