First public contribution.
1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
20 __NAKED__ TUint32 TTCR()
22 asm("mrc p15, 0, r0, c2, c0, 2 ");
23 asm("and r0, r0, #7 "); // only bottom 3 bits are defined
28 __NAKED__ TUint32 CPUID(TInt /*aRegNum*/)
31 asm("mrcmi p15, 0, r0, c0, c0, 0 "); // for -ve reg, return old CPUID register
32 asm("mrceq p15, 0, r0, c0, c1, 0 ");
33 asm("subs r1, r1, #1");
34 asm("mrceq p15, 0, r0, c0, c1, 1 ");
35 asm("subs r1, r1, #1");
36 asm("mrceq p15, 0, r0, c0, c1, 2 ");
37 asm("subs r1, r1, #1");
38 asm("mrceq p15, 0, r0, c0, c1, 3 ");
39 asm("subs r1, r1, #1");
40 asm("mrceq p15, 0, r0, c0, c1, 4 ");
41 asm("subs r1, r1, #1");
42 asm("mrceq p15, 0, r0, c0, c1, 5 ");
43 asm("subs r1, r1, #1");
44 asm("mrceq p15, 0, r0, c0, c1, 6 ");
45 asm("subs r1, r1, #1");
46 asm("mrceq p15, 0, r0, c0, c1, 7 ");
47 asm("subs r1, r1, #1");
48 asm("mrceq p15, 0, r0, c0, c2, 0 ");
49 asm("subs r1, r1, #1");
50 asm("mrceq p15, 0, r0, c0, c2, 1 ");
51 asm("subs r1, r1, #1");
52 asm("mrceq p15, 0, r0, c0, c2, 2 ");
53 asm("subs r1, r1, #1");
54 asm("mrceq p15, 0, r0, c0, c2, 3 ");
55 asm("subs r1, r1, #1");
56 asm("mrceq p15, 0, r0, c0, c2, 4 ");
57 asm("subs r1, r1, #1");
58 asm("mrceq p15, 0, r0, c0, c2, 5 ");
59 asm("subs r1, r1, #1");
60 asm("mrceq p15, 0, r0, c0, c2, 6 ");
61 asm("subs r1, r1, #1");
62 asm("mrceq p15, 0, r0, c0, c2, 7 ");
67 __NAKED__ void UnlockIPCAlias()
69 asm("mrc p15, 0, r0, c3, c0, 0 ");
70 asm("orr r0, r0, #%a0 " : : "i" (1 << (2*KIPCAliasDomain))); // Allow client access to Alias mappings
71 asm("mcr p15, 0, r0, c3, c0, 0 ");
72 __INST_SYNC_BARRIER_Z__(r0);
76 __NAKED__ void LockIPCAlias()
78 asm("mrc p15, 0, r0, c3, c0, 0 ");
79 asm("bic r0, r0, #%a0 " : : "i" (3 << (2*KIPCAliasDomain))); // Prevent access to Alias mappings
80 asm("mcr p15, 0, r0, c3, c0, 0 ");
81 __INST_SYNC_BARRIER_Z__(r0);
86 __NAKED__ void M::LockUserMemory()
88 USER_MEMORY_GUARD_ON(,r0,r0); // Prevent access to User mappings in domain 15
93 __NAKED__ void M::UnlockUserMemory()
95 USER_MEMORY_GUARD_OFF(,r0,r0); // Allow access to User mappings in domain 15
100 __NAKED__ void UserWriteFault(TLinAddr /*aAddr*/)
102 asm("strbt r1,[r0]");
106 __NAKED__ void UserReadFault(TLinAddr /*aAddr*/)
108 asm("ldrbt r1,[r0]");
113 extern "C" __NAKED__ void __e32_instruction_barrier()
115 __INST_SYNC_BARRIER_Z__(r0);