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 --- |