entry-armv.S (78b170f45b1a0da2625aa33f85d46a78475b268c) entry-armv.S (26584853a44c58f3d6ac7360d697a2ddcd1a3efa)
1/*
2 * linux/arch/arm/kernel/entry-armv.S
3 *
4 * Copyright (C) 1996,1997,1998 Russell King.
5 * ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk)
6 * nommu support by Hyok S. Choi (hyok.choi@samsung.com)
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 468 unchanged lines hidden (view full) ---

477 @ r0 - instruction
478 @
479 adr r9, ret_from_exception
480 adr lr, __und_usr_unknown
481 tst r3, #PSR_T_BIT @ Thumb mode?
482 subeq r4, r2, #4 @ ARM instr at LR - 4
483 subne r4, r2, #2 @ Thumb instr at LR - 2
4841: ldreqt r0, [r4]
1/*
2 * linux/arch/arm/kernel/entry-armv.S
3 *
4 * Copyright (C) 1996,1997,1998 Russell King.
5 * ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk)
6 * nommu support by Hyok S. Choi (hyok.choi@samsung.com)
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 468 unchanged lines hidden (view full) ---

477 @ r0 - instruction
478 @
479 adr r9, ret_from_exception
480 adr lr, __und_usr_unknown
481 tst r3, #PSR_T_BIT @ Thumb mode?
482 subeq r4, r2, #4 @ ARM instr at LR - 4
483 subne r4, r2, #2 @ Thumb instr at LR - 2
4841: ldreqt r0, [r4]
485#ifdef CONFIG_CPU_ENDIAN_BE8
486 reveq r0, r0 @ little endian instruction
487#endif
485 beq call_fpe
486 @ Thumb instruction
487#if __LINUX_ARM_ARCH__ >= 7
4882: ldrht r5, [r4], #2
489 and r0, r5, #0xf800 @ mask bits 111x x... .... ....
490 cmp r0, #0xe800 @ 32bit instruction if xx != 0
491 blo __und_usr_unknown
4923: ldrht r0, [r4]

--- 317 unchanged lines hidden (view full) ---

810 * This could be used as follows:
811 *
812 * #define __kernel_dmb() \
813 * asm volatile ( "mov r0, #0xffff0fff; mov lr, pc; sub pc, r0, #95" \
814 * : : : "r0", "lr","cc" )
815 */
816
817__kuser_memory_barrier: @ 0xffff0fa0
488 beq call_fpe
489 @ Thumb instruction
490#if __LINUX_ARM_ARCH__ >= 7
4912: ldrht r5, [r4], #2
492 and r0, r5, #0xf800 @ mask bits 111x x... .... ....
493 cmp r0, #0xe800 @ 32bit instruction if xx != 0
494 blo __und_usr_unknown
4953: ldrht r0, [r4]

--- 317 unchanged lines hidden (view full) ---

813 * This could be used as follows:
814 *
815 * #define __kernel_dmb() \
816 * asm volatile ( "mov r0, #0xffff0fff; mov lr, pc; sub pc, r0, #95" \
817 * : : : "r0", "lr","cc" )
818 */
819
820__kuser_memory_barrier: @ 0xffff0fa0
818 smp_dmb
821
822#if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_SMP)
823 mcr p15, 0, r0, c7, c10, 5 @ dmb
824#endif
819 usr_ret lr
820
821 .align 5
822
823/*
824 * Reference prototype:
825 *
826 * int __kernel_cmpxchg(int oldval, int newval, int *ptr)

--- 395 unchanged lines hidden ---
825 usr_ret lr
826
827 .align 5
828
829/*
830 * Reference prototype:
831 *
832 * int __kernel_cmpxchg(int oldval, int newval, int *ptr)

--- 395 unchanged lines hidden ---