os/kernelhwsrv/kernel/eka/memmodel/epoc/multiple/arm/xkernel.cia
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200 (2012-06-15)
changeset 0 bde4ae8d615e
permissions -rw-r--r--
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".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // e32\memmodel\epoc\multiple\arm\xkernel.cia
    15 // 
    16 //
    17 
    18 #include <arm_mem.h>
    19 
    20 
    21 __NAKED__ TBool Exc::IsMagic(TLinAddr /*anAddress*/)
    22 //
    23 // Return TRUE if anAddress is a 'magic' exception handling instruction
    24 //
    25 	{
    26 	asm("adr r1, __magic_addresses ");		// r1 points to list of magic addresses
    27 	asm("is_magic_1: ");
    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
    33 	__JUMP(,lr);
    34 
    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 ");
    46 #endif
    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 ");
    57 #endif
    58 #ifdef __REQUEST_COMPLETE_MACHINE_CODED__
    59 	asm(".word __magic_address_reqc ");
    60 	asm(".word __magic_address_kern_request_complete ");
    61 #endif
    62 	// list terminator
    63 	asm(".word 0 ");
    64 	}
    65