First public contribution.
1 // Copyright (c) 1994-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.
14 // e32\memmodel\epoc\multiple\arm\xkernel.cia
21 __NAKED__ TBool Exc::IsMagic(TLinAddr /*anAddress*/)
23 // Return TRUE if anAddress is a 'magic' exception handling instruction
26 asm("adr r1, __magic_addresses "); // r1 points to list of magic addresses
28 asm("ldr r2, [r1], #4 "); // r2=next magic address to check
29 asm("cmp r2, r0 "); // is r0=magic address?
30 asm("cmpne r2, #0 "); // if not, have we reached end of list?
31 asm("bne is_magic_1 "); // if neither, check next address
32 asm("movs r0, r2 "); // r0=0 if not magic, r0 unchanged if magic
35 asm("__magic_addresses: ");
36 asm(".word __magic_address_kusaferead ");
37 asm(".word __magic_address_saferead ");
38 asm(".word __magic_address_kusafewrite ");
39 asm(".word __magic_address_safewrite ");
40 asm(".word __magic_address_msg_lookup_1 "); // in preprocess handler
41 asm(".word __magic_address_readdesheader1 ");
42 asm(".word __magic_address_readdesheader2 ");
43 asm(".word __magic_address_readdesheader3 ");
44 #ifdef __MESSAGE_MACHINE_CODED_2__
45 asm(".word __magic_address_msg_lookup_2 ");
47 #ifdef __CLIENT_REQUEST_MACHINE_CODED__
48 asm(".word __magic_address_client_request_callback");
49 asm(".word __magic_address_svr_accept_1 ");
50 asm(".word __magic_address_svr_accept_2 ");
51 asm(".word __magic_address_svr_accept_3 ");
52 asm(".word __magic_address_svr_accept_4 ");
53 asm(".word __magic_address_svr_accept_5 ");
54 asm(".word __magic_address_svr_accept_6 ");
55 asm(".word __magic_address_svr_accept_7 ");
56 asm(".word __magic_address_svr_accept_8 ");
58 #ifdef __REQUEST_COMPLETE_MACHINE_CODED__
59 asm(".word __magic_address_reqc ");
60 asm(".word __magic_address_kern_request_complete ");