entry-armv.S (afeb90ca08000cbd75f22836e667f368e25fe3ac) entry-armv.S (2dede2d8e925f4c2cb4e136b14df127685e15dd3)
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

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

100
101 mov r0, sp
102 and r2, r6, #0x1f
103 b bad_mode
104
105/*
106 * SVC mode handlers
107 */
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

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

100
101 mov r0, sp
102 and r2, r6, #0x1f
103 b bad_mode
104
105/*
106 * SVC mode handlers
107 */
108
109#if defined(CONFIG_AEABI) && (__LINUX_ARM_ARCH__ >= 5)
110#define SPFIX(code...) code
111#else
112#define SPFIX(code...)
113#endif
114
108 .macro svc_entry
109 sub sp, sp, #S_FRAME_SIZE
115 .macro svc_entry
116 sub sp, sp, #S_FRAME_SIZE
117 SPFIX( tst sp, #4 )
118 SPFIX( bicne sp, sp, #4 )
110 stmib sp, {r1 - r12}
111
112 ldmia r0, {r1 - r3}
113 add r5, sp, #S_SP @ here for interlock avoidance
114 mov r4, #-1 @ "" "" "" ""
115 add r0, sp, #S_FRAME_SIZE @ "" "" "" ""
119 stmib sp, {r1 - r12}
120
121 ldmia r0, {r1 - r3}
122 add r5, sp, #S_SP @ here for interlock avoidance
123 mov r4, #-1 @ "" "" "" ""
124 add r0, sp, #S_FRAME_SIZE @ "" "" "" ""
125 SPFIX( addne r0, r0, #4 )
116 str r1, [sp] @ save the "real" r0 copied
117 @ from the exception stack
118
119 mov r1, lr
120
121 @
122 @ We are now ready to fill in the remaining blanks on the stack:
123 @

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

298 .word fp_enter
299#ifdef CONFIG_PREEMPT
300.LCirq_stat:
301 .word irq_stat
302#endif
303
304/*
305 * User mode handlers
126 str r1, [sp] @ save the "real" r0 copied
127 @ from the exception stack
128
129 mov r1, lr
130
131 @
132 @ We are now ready to fill in the remaining blanks on the stack:
133 @

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

308 .word fp_enter
309#ifdef CONFIG_PREEMPT
310.LCirq_stat:
311 .word irq_stat
312#endif
313
314/*
315 * User mode handlers
316 *
317 * EABI note: sp_svc is always 64-bit aligned here, so should S_FRAME_SIZE
306 */
318 */
319
320#if defined(CONFIG_AEABI) && (__LINUX_ARM_ARCH__ >= 5) && (S_FRAME_SIZE & 7)
321#error "sizeof(struct pt_regs) must be a multiple of 8"
322#endif
323
307 .macro usr_entry
308 sub sp, sp, #S_FRAME_SIZE
309 stmib sp, {r1 - r12}
310
311 ldmia r0, {r1 - r3}
312 add r0, sp, #S_PC @ here for interlock avoidance
313 mov r4, #-1 @ "" "" "" ""
314

--- 721 unchanged lines hidden ---
324 .macro usr_entry
325 sub sp, sp, #S_FRAME_SIZE
326 stmib sp, {r1 - r12}
327
328 ldmia r0, {r1 - r3}
329 add r0, sp, #S_PC @ here for interlock avoidance
330 mov r4, #-1 @ "" "" "" ""
331

--- 721 unchanged lines hidden ---