Merge master.kernel.org:/home/rmk/linux-2.6-arm

+930 -289
+36 -1
arch/arm/Kconfig
··· 180 180 config ARCH_VERSATILE 181 181 bool "Versatile" 182 182 select ARM_AMBA 183 + select ARM_VIC 183 184 select ICST307 184 185 help 185 186 This enables support for ARM Ltd Versatile board. ··· 401 400 Currently at least OMAP, PXA2xx and SA11x0 platforms are known 402 401 to have accurate timekeeping with dynamic tick. 403 402 403 + config AEABI 404 + bool "Use the ARM EABI to compile the kernel" 405 + help 406 + This option allows for the kernel to be compiled using the latest 407 + ARM ABI (aka EABI). This is only useful if you are using a user 408 + space environment that is also compiled with EABI. 409 + 410 + Since there are major incompatibilities between the legacy ABI and 411 + EABI, especially with regard to structure member alignment, this 412 + option also changes the kernel syscall calling convention to 413 + disambiguate both ABIs and allow for backward compatibility support 414 + (selected with CONFIG_OABI_COMPAT). 415 + 416 + To use this you need GCC version 4.0.0 or later. 417 + 418 + config OABI_COMPAT 419 + bool "Allow old ABI binaries to run with this kernel" 420 + depends on AEABI 421 + default y 422 + help 423 + This option preserves the old syscall interface along with the 424 + new (ARM EABI) one. It also provides a compatibility layer to 425 + intercept syscalls that have structure arguments which layout 426 + in memory differs between the legacy ABI and the new ARM EABI 427 + (only for non "thumb" binaries). This option adds a tiny 428 + overhead to all syscalls and produces a slightly larger kernel. 429 + If you know you'll be using only pure EABI user space then you 430 + can say N here. If this option is not selected and you attempt 431 + to execute a legacy ABI binary then the result will be 432 + UNPREDICTABLE (in fact it can be predicted that it won't work 433 + at all). If in doubt say Y. 434 + 404 435 config ARCH_DISCONTIGMEM_ENABLE 405 436 bool 406 437 default (ARCH_LH7A40X && !LH7A40X_CONTIGMEM) ··· 619 586 620 587 config FPE_NWFPE 621 588 bool "NWFPE math emulation" 589 + depends on !AEABI || OABI_COMPAT 622 590 ---help--- 623 591 Say Y to include the NWFPE floating point emulator in the kernel. 624 592 This is necessary to run most binaries. Linux does not currently ··· 643 609 644 610 config FPE_FASTFPE 645 611 bool "FastFPE math emulation (EXPERIMENTAL)" 646 - depends on !CPU_32v3 && EXPERIMENTAL 612 + depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 && EXPERIMENTAL 647 613 ---help--- 648 614 Say Y here to include the FAST floating point emulator in the kernel. 649 615 This is an experimental much faster emulator which now also has full ··· 675 641 676 642 config ARTHUR 677 643 tristate "RISC OS personality" 644 + depends on !AEABI 678 645 help 679 646 Say Y here to include the kernel code necessary if you want to run 680 647 Acorn RISC OS/Arthur binaries under Linux. This code is still very
+6 -1
arch/arm/Makefile
··· 56 56 tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale 57 57 tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) 58 58 59 - # Need -Uarm for gcc < 3.x 59 + ifeq ($(CONFIG_AEABI),y) 60 + CFLAGS_ABI :=-mabi=aapcs -mno-thumb-interwork 61 + else 60 62 CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) 63 + endif 64 + 65 + # Need -Uarm for gcc < 3.x 61 66 CFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm 62 67 AFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float 63 68
+5 -2
arch/arm/common/Kconfig
··· 1 - config ICST525 1 + config ARM_GIC 2 2 bool 3 3 4 - config ARM_GIC 4 + config ARM_VIC 5 + bool 6 + 7 + config ICST525 5 8 bool 6 9 7 10 config ICST307
+1
arch/arm/common/Makefile
··· 4 4 5 5 obj-y += rtctime.o 6 6 obj-$(CONFIG_ARM_GIC) += gic.o 7 + obj-$(CONFIG_ARM_VIC) += vic.o 7 8 obj-$(CONFIG_ICST525) += icst525.o 8 9 obj-$(CONFIG_ICST307) += icst307.o 9 10 obj-$(CONFIG_SA1111) += sa1111.o
+92
arch/arm/common/vic.c
··· 1 + /* 2 + * linux/arch/arm/common/vic.c 3 + * 4 + * Copyright (C) 1999 - 2003 ARM Limited 5 + * Copyright (C) 2000 Deep Blue Solutions Ltd 6 + * 7 + * This program is free software; you can redistribute it and/or modify 8 + * it under the terms of the GNU General Public License as published by 9 + * the Free Software Foundation; either version 2 of the License, or 10 + * (at your option) any later version. 11 + * 12 + * This program is distributed in the hope that it will be useful, 13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 + * GNU General Public License for more details. 16 + * 17 + * You should have received a copy of the GNU General Public License 18 + * along with this program; if not, write to the Free Software 19 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 + */ 21 + #include <linux/init.h> 22 + #include <linux/list.h> 23 + 24 + #include <asm/io.h> 25 + #include <asm/irq.h> 26 + #include <asm/mach/irq.h> 27 + #include <asm/hardware/vic.h> 28 + 29 + static void __iomem *vic_base; 30 + 31 + static void vic_mask_irq(unsigned int irq) 32 + { 33 + irq -= IRQ_VIC_START; 34 + writel(1 << irq, vic_base + VIC_INT_ENABLE_CLEAR); 35 + } 36 + 37 + static void vic_unmask_irq(unsigned int irq) 38 + { 39 + irq -= IRQ_VIC_START; 40 + writel(1 << irq, vic_base + VIC_INT_ENABLE); 41 + } 42 + 43 + static struct irqchip vic_chip = { 44 + .ack = vic_mask_irq, 45 + .mask = vic_mask_irq, 46 + .unmask = vic_unmask_irq, 47 + }; 48 + 49 + void __init vic_init(void __iomem *base, u32 vic_sources) 50 + { 51 + unsigned int i; 52 + 53 + vic_base = base; 54 + 55 + /* Disable all interrupts initially. */ 56 + 57 + writel(0, vic_base + VIC_INT_SELECT); 58 + writel(0, vic_base + VIC_INT_ENABLE); 59 + writel(~0, vic_base + VIC_INT_ENABLE_CLEAR); 60 + writel(0, vic_base + VIC_IRQ_STATUS); 61 + writel(0, vic_base + VIC_ITCR); 62 + writel(~0, vic_base + VIC_INT_SOFT_CLEAR); 63 + 64 + /* 65 + * Make sure we clear all existing interrupts 66 + */ 67 + writel(0, vic_base + VIC_VECT_ADDR); 68 + for (i = 0; i < 19; i++) { 69 + unsigned int value; 70 + 71 + value = readl(vic_base + VIC_VECT_ADDR); 72 + writel(value, vic_base + VIC_VECT_ADDR); 73 + } 74 + 75 + for (i = 0; i < 16; i++) { 76 + void __iomem *reg = vic_base + VIC_VECT_CNTL0 + (i * 4); 77 + writel(VIC_VECT_CNTL_ENABLE | i, reg); 78 + } 79 + 80 + writel(32, vic_base + VIC_DEF_VECT_ADDR); 81 + 82 + for (i = 0; i < 32; i++) { 83 + unsigned int irq = IRQ_VIC_START + i; 84 + 85 + set_irq_chip(irq, &vic_chip); 86 + 87 + if (vic_sources & (1 << i)) { 88 + set_irq_handler(irq, do_level_IRQ); 89 + set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 90 + } 91 + } 92 + }
+1
arch/arm/kernel/Makefile
··· 20 20 obj-$(CONFIG_ISA_DMA) += dma-isa.o 21 21 obj-$(CONFIG_PCI) += bios32.o 22 22 obj-$(CONFIG_SMP) += smp.o 23 + obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o 23 24 24 25 obj-$(CONFIG_IWMMXT) += iwmmxt.o 25 26 AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
+22
arch/arm/kernel/armksyms.c
··· 35 35 extern void __umodsi3(void); 36 36 extern void __do_div64(void); 37 37 38 + extern void __aeabi_idiv(void); 39 + extern void __aeabi_idivmod(void); 40 + extern void __aeabi_lasr(void); 41 + extern void __aeabi_llsl(void); 42 + extern void __aeabi_llsr(void); 43 + extern void __aeabi_lmul(void); 44 + extern void __aeabi_uidiv(void); 45 + extern void __aeabi_uidivmod(void); 46 + extern void __aeabi_ulcmp(void); 47 + 38 48 extern void fpundefinstr(void); 39 49 extern void fp_enter(void); 40 50 ··· 150 140 EXPORT_SYMBOL(__udivsi3); 151 141 EXPORT_SYMBOL(__umodsi3); 152 142 EXPORT_SYMBOL(__do_div64); 143 + 144 + #ifdef CONFIG_AEABI 145 + EXPORT_SYMBOL(__aeabi_idiv); 146 + EXPORT_SYMBOL(__aeabi_idivmod); 147 + EXPORT_SYMBOL(__aeabi_lasr); 148 + EXPORT_SYMBOL(__aeabi_llsl); 149 + EXPORT_SYMBOL(__aeabi_llsr); 150 + EXPORT_SYMBOL(__aeabi_lmul); 151 + EXPORT_SYMBOL(__aeabi_uidiv); 152 + EXPORT_SYMBOL(__aeabi_uidivmod); 153 + EXPORT_SYMBOL(__aeabi_ulcmp); 154 + #endif 153 155 154 156 /* bitops */ 155 157 EXPORT_SYMBOL(_set_bit_le);
+29 -30
arch/arm/kernel/calls.S
··· 13 13 #define NR_syscalls 328 14 14 #else 15 15 16 - __syscall_start: 16 + 100: 17 17 /* 0 */ .long sys_restart_syscall 18 18 .long sys_exit 19 19 .long sys_fork_wrapper ··· 27 27 /* 10 */ .long sys_unlink 28 28 .long sys_execve_wrapper 29 29 .long sys_chdir 30 - .long sys_time /* used by libc4 */ 30 + .long OBSOLETE(sys_time) /* used by libc4 */ 31 31 .long sys_mknod 32 32 /* 15 */ .long sys_chmod 33 33 .long sys_lchown16 ··· 36 36 .long sys_lseek 37 37 /* 20 */ .long sys_getpid 38 38 .long sys_mount 39 - .long sys_oldumount /* used by libc4 */ 39 + .long OBSOLETE(sys_oldumount) /* used by libc4 */ 40 40 .long sys_setuid16 41 41 .long sys_getuid16 42 - /* 25 */ .long sys_stime 42 + /* 25 */ .long OBSOLETE(sys_stime) 43 43 .long sys_ptrace 44 - .long sys_alarm /* used by libc4 */ 44 + .long OBSOLETE(sys_alarm) /* used by libc4 */ 45 45 .long sys_ni_syscall /* was sys_fstat */ 46 46 .long sys_pause 47 - /* 30 */ .long sys_utime /* used by libc4 */ 47 + /* 30 */ .long OBSOLETE(sys_utime) /* used by libc4 */ 48 48 .long sys_ni_syscall /* was sys_stty */ 49 49 .long sys_ni_syscall /* was sys_getty */ 50 50 .long sys_access ··· 90 90 .long sys_sigpending 91 91 .long sys_sethostname 92 92 /* 75 */ .long sys_setrlimit 93 - .long sys_old_getrlimit /* used by libc4 */ 93 + .long OBSOLETE(sys_old_getrlimit) /* used by libc4 */ 94 94 .long sys_getrusage 95 95 .long sys_gettimeofday 96 96 .long sys_settimeofday 97 97 /* 80 */ .long sys_getgroups16 98 98 .long sys_setgroups16 99 - .long old_select /* used by libc4 */ 99 + .long OBSOLETE(old_select) /* used by libc4 */ 100 100 .long sys_symlink 101 101 .long sys_ni_syscall /* was sys_lstat */ 102 102 /* 85 */ .long sys_readlink 103 103 .long sys_uselib 104 104 .long sys_swapon 105 105 .long sys_reboot 106 - .long old_readdir /* used by libc4 */ 107 - /* 90 */ .long old_mmap /* used by libc4 */ 106 + .long OBSOLETE(old_readdir) /* used by libc4 */ 107 + /* 90 */ .long OBSOLETE(old_mmap) /* used by libc4 */ 108 108 .long sys_munmap 109 109 .long sys_truncate 110 110 .long sys_ftruncate ··· 116 116 .long sys_statfs 117 117 /* 100 */ .long sys_fstatfs 118 118 .long sys_ni_syscall 119 - .long sys_socketcall 119 + .long OBSOLETE(sys_socketcall) 120 120 .long sys_syslog 121 121 .long sys_setitimer 122 122 /* 105 */ .long sys_getitimer ··· 127 127 /* 110 */ .long sys_ni_syscall /* was sys_iopl */ 128 128 .long sys_vhangup 129 129 .long sys_ni_syscall 130 - .long sys_syscall /* call a syscall */ 130 + .long OBSOLETE(sys_syscall) /* call a syscall */ 131 131 .long sys_wait4 132 132 /* 115 */ .long sys_swapoff 133 133 .long sys_sysinfo 134 - .long sys_ipc 134 + .long OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)) 135 135 .long sys_fsync 136 136 .long sys_sigreturn_wrapper 137 137 /* 120 */ .long sys_clone_wrapper ··· 194 194 .long sys_rt_sigtimedwait 195 195 .long sys_rt_sigqueueinfo 196 196 .long sys_rt_sigsuspend_wrapper 197 - /* 180 */ .long sys_pread64 198 - .long sys_pwrite64 197 + /* 180 */ .long ABI(sys_pread64, sys_oabi_pread64) 198 + .long ABI(sys_pwrite64, sys_oabi_pwrite64) 199 199 .long sys_chown16 200 200 .long sys_getcwd 201 201 .long sys_capget ··· 207 207 /* 190 */ .long sys_vfork_wrapper 208 208 .long sys_getrlimit 209 209 .long sys_mmap2 210 - .long sys_truncate64 211 - .long sys_ftruncate64 212 - /* 195 */ .long sys_stat64 213 - .long sys_lstat64 214 - .long sys_fstat64 210 + .long ABI(sys_truncate64, sys_oabi_truncate64) 211 + .long ABI(sys_ftruncate64, sys_oabi_ftruncate64) 212 + /* 195 */ .long ABI(sys_stat64, sys_oabi_stat64) 213 + .long ABI(sys_lstat64, sys_oabi_lstat64) 214 + .long ABI(sys_fstat64, sys_oabi_fstat64) 215 215 .long sys_lchown 216 216 .long sys_getuid 217 217 /* 200 */ .long sys_getgid ··· 235 235 .long sys_pivot_root 236 236 .long sys_mincore 237 237 /* 220 */ .long sys_madvise 238 - .long sys_fcntl64 238 + .long ABI(sys_fcntl64, sys_oabi_fcntl64) 239 239 .long sys_ni_syscall /* TUX */ 240 240 .long sys_ni_syscall 241 241 .long sys_gettid 242 - /* 225 */ .long sys_readahead 242 + /* 225 */ .long ABI(sys_readahead, sys_oabi_readahead) 243 243 .long sys_setxattr 244 244 .long sys_lsetxattr 245 245 .long sys_fsetxattr ··· 265 265 .long sys_exit_group 266 266 .long sys_lookup_dcookie 267 267 /* 250 */ .long sys_epoll_create 268 - .long sys_epoll_ctl 269 - .long sys_epoll_wait 268 + .long ABI(sys_epoll_ctl, sys_oabi_epoll_ctl) 269 + .long ABI(sys_epoll_wait, sys_oabi_epoll_wait) 270 270 .long sys_remap_file_pages 271 271 .long sys_ni_syscall /* sys_set_thread_area */ 272 272 /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ ··· 280 280 .long sys_clock_gettime 281 281 .long sys_clock_getres 282 282 /* 265 */ .long sys_clock_nanosleep 283 - .long sys_statfs64 284 - .long sys_fstatfs64 283 + .long sys_statfs64_wrapper 284 + .long sys_fstatfs64_wrapper 285 285 .long sys_tgkill 286 286 .long sys_utimes 287 287 /* 270 */ .long sys_arm_fadvise64_64 ··· 312 312 /* 295 */ .long sys_getsockopt 313 313 .long sys_sendmsg 314 314 .long sys_recvmsg 315 - .long sys_semop 315 + .long ABI(sys_semop, sys_oabi_semop) 316 316 .long sys_semget 317 317 /* 300 */ .long sys_semctl 318 318 .long sys_msgsnd ··· 326 326 .long sys_add_key 327 327 /* 310 */ .long sys_request_key 328 328 .long sys_keyctl 329 - .long sys_semtimedop 329 + .long ABI(sys_semtimedop, sys_oabi_semtimedop) 330 330 /* vserver */ .long sys_ni_syscall 331 331 .long sys_ioprio_set 332 332 /* 315 */ .long sys_ioprio_get ··· 336 336 .long sys_mbind 337 337 /* 320 */ .long sys_get_mempolicy 338 338 .long sys_set_mempolicy 339 - __syscall_end: 340 339 341 - .rept NR_syscalls - (__syscall_end - __syscall_start) / 4 340 + .rept NR_syscalls - (. - 100b) / 4 342 341 .long sys_ni_syscall 343 342 .endr 344 343 #endif
+24
arch/arm/kernel/entry-armv.S
··· 3 3 * 4 4 * Copyright (C) 1996,1997,1998 Russell King. 5 5 * ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk) 6 + * nommu support by Hyok S. Choi (hyok.choi@samsung.com) 6 7 * 7 8 * This program is free software; you can redistribute it and/or modify 8 9 * it under the terms of the GNU General Public License version 2 as ··· 105 104 /* 106 105 * SVC mode handlers 107 106 */ 107 + 108 + #if defined(CONFIG_AEABI) && (__LINUX_ARM_ARCH__ >= 5) 109 + #define SPFIX(code...) code 110 + #else 111 + #define SPFIX(code...) 112 + #endif 113 + 108 114 .macro svc_entry 109 115 sub sp, sp, #S_FRAME_SIZE 116 + SPFIX( tst sp, #4 ) 117 + SPFIX( bicne sp, sp, #4 ) 110 118 stmib sp, {r1 - r12} 111 119 112 120 ldmia r0, {r1 - r3} 113 121 add r5, sp, #S_SP @ here for interlock avoidance 114 122 mov r4, #-1 @ "" "" "" "" 115 123 add r0, sp, #S_FRAME_SIZE @ "" "" "" "" 124 + SPFIX( addne r0, r0, #4 ) 116 125 str r1, [sp] @ save the "real" r0 copied 117 126 @ from the exception stack 118 127 ··· 313 302 314 303 /* 315 304 * User mode handlers 305 + * 306 + * EABI note: sp_svc is always 64-bit aligned here, so should S_FRAME_SIZE 316 307 */ 308 + 309 + #if defined(CONFIG_AEABI) && (__LINUX_ARM_ARCH__ >= 5) && (S_FRAME_SIZE & 7) 310 + #error "sizeof(struct pt_regs) must be a multiple of 8" 311 + #endif 312 + 317 313 .macro usr_entry 318 314 sub sp, sp, #S_FRAME_SIZE 319 315 stmib sp, {r1 - r12} ··· 556 538 add ip, r1, #TI_CPU_SAVE 557 539 ldr r3, [r2, #TI_TP_VALUE] 558 540 stmia ip!, {r4 - sl, fp, sp, lr} @ Store most regs on stack 541 + #ifndef CONFIG_MMU 542 + add r2, r2, #TI_CPU_DOMAIN 543 + #else 559 544 ldr r6, [r2, #TI_CPU_DOMAIN]! 545 + #endif 560 546 #if __LINUX_ARM_ARCH__ >= 6 561 547 #ifdef CONFIG_CPU_MPCORE 562 548 clrex ··· 578 556 mov r4, #0xffff0fff 579 557 str r3, [r4, #-15] @ TLS val at 0xffff0ff0 580 558 #endif 559 + #ifdef CONFIG_MMU 581 560 mcr p15, 0, r6, c3, c0, 0 @ Set domain register 561 + #endif 582 562 #ifdef CONFIG_VFP 583 563 @ Always disable VFP so we can lazily save/restore the old 584 564 @ state. This occurs in the context of the previous thread.
+131 -15
arch/arm/kernel/entry-common.S
··· 98 98 run on an ARM7 and we can save a couple of instructions. 99 99 --pb */ 100 100 #ifdef CONFIG_CPU_ARM710 101 - .macro arm710_bug_check, instr, temp 102 - and \temp, \instr, #0x0f000000 @ check for SWI 103 - teq \temp, #0x0f000000 104 - bne .Larm700bug 105 - .endm 106 - 107 - .Larm700bug: 101 + #define A710(code...) code 102 + .Larm710bug: 108 103 ldmia sp, {r0 - lr}^ @ Get calling r0 - lr 109 104 mov r0, r0 110 105 add sp, sp, #S_FRAME_SIZE 111 106 subs pc, lr, #4 112 107 #else 113 - .macro arm710_bug_check, instr, temp 114 - .endm 108 + #define A710(code...) 115 109 #endif 116 110 117 111 .align 5 ··· 123 129 /* 124 130 * Get the system call number. 125 131 */ 132 + 133 + #if defined(CONFIG_OABI_COMPAT) 134 + 135 + /* 136 + * If we have CONFIG_OABI_COMPAT then we need to look at the swi 137 + * value to determine if it is an EABI or an old ABI call. 138 + */ 126 139 #ifdef CONFIG_ARM_THUMB 140 + tst r8, #PSR_T_BIT 141 + movne r10, #0 @ no thumb OABI emulation 142 + ldreq r10, [lr, #-4] @ get SWI instruction 143 + #else 144 + ldr r10, [lr, #-4] @ get SWI instruction 145 + A710( and ip, r10, #0x0f000000 @ check for SWI ) 146 + A710( teq ip, #0x0f000000 ) 147 + A710( bne .Larm710bug ) 148 + #endif 149 + 150 + #elif defined(CONFIG_AEABI) 151 + 152 + /* 153 + * Pure EABI user space always put syscall number into scno (r7). 154 + */ 155 + A710( ldr ip, [lr, #-4] @ get SWI instruction ) 156 + A710( and ip, ip, #0x0f000000 @ check for SWI ) 157 + A710( teq ip, #0x0f000000 ) 158 + A710( bne .Larm710bug ) 159 + 160 + #elif defined(CONFIG_ARM_THUMB) 161 + 162 + /* Legacy ABI only, possibly thumb mode. */ 127 163 tst r8, #PSR_T_BIT @ this is SPSR from save_user_regs 128 164 addne scno, r7, #__NR_SYSCALL_BASE @ put OS number in 129 165 ldreq scno, [lr, #-4] 166 + 130 167 #else 168 + 169 + /* Legacy ABI only. */ 131 170 ldr scno, [lr, #-4] @ get SWI instruction 171 + A710( and ip, scno, #0x0f000000 @ check for SWI ) 172 + A710( teq ip, #0x0f000000 ) 173 + A710( bne .Larm710bug ) 174 + 132 175 #endif 133 - arm710_bug_check scno, ip 134 176 135 177 #ifdef CONFIG_ALIGNMENT_TRAP 136 178 ldr ip, __cr_alignment ··· 175 145 #endif 176 146 enable_irq 177 147 178 - stmdb sp!, {r4, r5} @ push fifth and sixth args 179 - 180 148 get_thread_info tsk 149 + adr tbl, sys_call_table @ load syscall table pointer 181 150 ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing 151 + 152 + #if defined(CONFIG_OABI_COMPAT) 153 + /* 154 + * If the swi argument is zero, this is an EABI call and we do nothing. 155 + * 156 + * If this is an old ABI call, get the syscall number into scno and 157 + * get the old ABI syscall table address. 158 + */ 159 + bics r10, r10, #0xff000000 160 + eorne scno, r10, #__NR_OABI_SYSCALL_BASE 161 + ldrne tbl, =sys_oabi_call_table 162 + #elif !defined(CONFIG_AEABI) 182 163 bic scno, scno, #0xff000000 @ mask off SWI op-code 183 164 eor scno, scno, #__NR_SYSCALL_BASE @ check OS number 184 - adr tbl, sys_call_table @ load syscall table pointer 165 + #endif 166 + 167 + stmdb sp!, {r4, r5} @ push fifth and sixth args 185 168 tst ip, #_TIF_SYSCALL_TRACE @ are we tracing syscalls? 186 169 bne __sys_trace 187 170 188 - adr lr, ret_fast_syscall @ return address 189 171 cmp scno, #NR_syscalls @ check upper syscall limit 172 + adr lr, ret_fast_syscall @ return address 190 173 ldrcc pc, [tbl, scno, lsl #2] @ call sys_* routine 191 174 192 175 add r1, sp, #S_OFF ··· 214 171 * context switches, and waiting for our parent to respond. 215 172 */ 216 173 __sys_trace: 174 + mov r2, scno 217 175 add r1, sp, #S_OFF 218 176 mov r0, #0 @ trace entry [IP = 0] 219 177 bl syscall_trace 220 178 221 179 adr lr, __sys_trace_return @ return address 180 + mov scno, r0 @ syscall number (possibly new) 222 181 add r1, sp, #S_R0 + S_OFF @ pointer to regs 223 182 cmp scno, #NR_syscalls @ check upper syscall limit 224 183 ldmccia r1, {r0 - r3} @ have to reload r0 - r3 ··· 229 184 230 185 __sys_trace_return: 231 186 str r0, [sp, #S_R0 + S_OFF]! @ save returned r0 187 + mov r2, scno 232 188 mov r1, sp 233 189 mov r0, #1 @ trace exit [IP = 1] 234 190 bl syscall_trace ··· 241 195 __cr_alignment: 242 196 .word cr_alignment 243 197 #endif 198 + .ltorg 199 + 200 + /* 201 + * This is the syscall table declaration for native ABI syscalls. 202 + * With EABI a couple syscalls are obsolete and defined as sys_ni_syscall. 203 + */ 204 + #define ABI(native, compat) native 205 + #ifdef CONFIG_AEABI 206 + #define OBSOLETE(syscall) sys_ni_syscall 207 + #else 208 + #define OBSOLETE(syscall) syscall 209 + #endif 244 210 245 211 .type sys_call_table, #object 246 212 ENTRY(sys_call_table) 247 213 #include "calls.S" 214 + #undef ABI 215 + #undef OBSOLETE 248 216 249 217 /*============================================================================ 250 218 * Special system call wrappers ··· 267 207 @ r8 = syscall table 268 208 .type sys_syscall, #function 269 209 sys_syscall: 270 - eor scno, r0, #__NR_SYSCALL_BASE 210 + eor scno, r0, #__NR_OABI_SYSCALL_BASE 271 211 cmp scno, #__NR_syscall - __NR_SYSCALL_BASE 272 212 cmpne scno, #NR_syscalls @ check range 273 213 stmloia sp, {r5, r6} @ shuffle args ··· 315 255 ldr r2, [sp, #S_OFF + S_SP] 316 256 b do_sigaltstack 317 257 258 + sys_statfs64_wrapper: 259 + teq r1, #88 260 + moveq r1, #84 261 + b sys_statfs64 262 + 263 + sys_fstatfs64_wrapper: 264 + teq r1, #88 265 + moveq r1, #84 266 + b sys_fstatfs64 267 + 318 268 /* 319 269 * Note: off_4k (r5) is always units of 4K. If we can't do the requested 320 270 * offset, we return EINVAL. ··· 341 271 str r5, [sp, #4] 342 272 b do_mmap2 343 273 #endif 274 + 275 + #ifdef CONFIG_OABI_COMPAT 276 + 277 + /* 278 + * These are syscalls with argument register differences 279 + */ 280 + 281 + sys_oabi_pread64: 282 + stmia sp, {r3, r4} 283 + b sys_pread64 284 + 285 + sys_oabi_pwrite64: 286 + stmia sp, {r3, r4} 287 + b sys_pwrite64 288 + 289 + sys_oabi_truncate64: 290 + mov r3, r2 291 + mov r2, r1 292 + b sys_truncate64 293 + 294 + sys_oabi_ftruncate64: 295 + mov r3, r2 296 + mov r2, r1 297 + b sys_ftruncate64 298 + 299 + sys_oabi_readahead: 300 + str r3, [sp] 301 + mov r3, r2 302 + mov r2, r1 303 + b sys_readahead 304 + 305 + /* 306 + * Let's declare a second syscall table for old ABI binaries 307 + * using the compatibility syscall entries. 308 + */ 309 + #define ABI(native, compat) compat 310 + #define OBSOLETE(syscall) syscall 311 + 312 + .type sys_oabi_call_table, #object 313 + ENTRY(sys_oabi_call_table) 314 + #include "calls.S" 315 + #undef ABI 316 + #undef OBSOLETE 317 + 318 + #endif 319 +
+1
arch/arm/kernel/entry-header.S
··· 19 19 @ 20 20 @ Most of the stack format comes from struct pt_regs, but with 21 21 @ the addition of 8 bytes for storing syscall args 5 and 6. 22 + @ This _must_ remain a multiple of 8 for EABI. 22 23 @ 23 24 #define S_OFF 8 24 25
+3 -4
arch/arm/kernel/head.S
··· 251 251 * r10 = procinfo 252 252 * 253 253 * Returns: 254 - * r0, r3, r5, r6, r7 corrupted 254 + * r0, r3, r6, r7 corrupted 255 255 * r4 = physical page table address 256 256 */ 257 257 .type __create_page_tables, %function 258 258 __create_page_tables: 259 - ldr r5, [r8, #MACHINFO_PHYSRAM] @ physram 260 259 pgtbl r4 @ page table address 261 260 262 261 /* ··· 302 303 * Then map first 1MB of ram in case it contains our boot params. 303 304 */ 304 305 add r0, r4, #PAGE_OFFSET >> 18 305 - orr r6, r5, r7 306 + orr r6, r7, #PHYS_OFFSET 306 307 str r6, [r0] 307 308 308 309 #ifdef CONFIG_XIP_KERNEL ··· 310 311 * Map some ram to cover our .data and .bss areas. 311 312 * Mapping 3MB should be plenty. 312 313 */ 313 - sub r3, r4, r5 314 + sub r3, r4, #PHYS_OFFSET 314 315 mov r3, r3, lsr #20 315 316 add r0, r0, r3, lsl #2 316 317 add r6, r6, r3, lsl #20
+12 -3
arch/arm/kernel/ptrace.c
··· 766 766 (unsigned long __user *) data); 767 767 break; 768 768 769 + case PTRACE_SET_SYSCALL: 770 + ret = 0; 771 + child->ptrace_message = data; 772 + break; 773 + 769 774 default: 770 775 ret = ptrace_request(child, request, addr, data); 771 776 break; ··· 779 774 return ret; 780 775 } 781 776 782 - asmlinkage void syscall_trace(int why, struct pt_regs *regs) 777 + asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) 783 778 { 784 779 unsigned long ip; 785 780 786 781 if (!test_thread_flag(TIF_SYSCALL_TRACE)) 787 - return; 782 + return scno; 788 783 if (!(current->ptrace & PT_PTRACED)) 789 - return; 784 + return scno; 790 785 791 786 /* 792 787 * Save IP. IP is used to denote syscall entry/exit: ··· 794 789 */ 795 790 ip = regs->ARM_ip; 796 791 regs->ARM_ip = why; 792 + 793 + current->ptrace_message = scno; 797 794 798 795 /* the 0x80 provides a way for the tracing parent to distinguish 799 796 between a syscall stop and SIGTRAP delivery */ ··· 811 804 current->exit_code = 0; 812 805 } 813 806 regs->ARM_ip = ip; 807 + 808 + return current->ptrace_message; 814 809 }
+9 -8
arch/arm/kernel/semaphore.c
··· 177 177 * ip contains the semaphore pointer on entry. Save the C-clobbered 178 178 * registers (r0 to r3 and lr), but not ip, as we use it as a return 179 179 * value in some cases.. 180 + * To remain AAPCS compliant (64-bit stack align) we save r4 as well. 180 181 */ 181 182 asm(" .section .sched.text,\"ax\",%progbits \n\ 182 183 .align 5 \n\ 183 184 .globl __down_failed \n\ 184 185 __down_failed: \n\ 185 - stmfd sp!, {r0 - r3, lr} \n\ 186 + stmfd sp!, {r0 - r4, lr} \n\ 186 187 mov r0, ip \n\ 187 188 bl __down \n\ 188 - ldmfd sp!, {r0 - r3, pc} \n\ 189 + ldmfd sp!, {r0 - r4, pc} \n\ 189 190 \n\ 190 191 .align 5 \n\ 191 192 .globl __down_interruptible_failed \n\ 192 193 __down_interruptible_failed: \n\ 193 - stmfd sp!, {r0 - r3, lr} \n\ 194 + stmfd sp!, {r0 - r4, lr} \n\ 194 195 mov r0, ip \n\ 195 196 bl __down_interruptible \n\ 196 197 mov ip, r0 \n\ 197 - ldmfd sp!, {r0 - r3, pc} \n\ 198 + ldmfd sp!, {r0 - r4, pc} \n\ 198 199 \n\ 199 200 .align 5 \n\ 200 201 .globl __down_trylock_failed \n\ 201 202 __down_trylock_failed: \n\ 202 - stmfd sp!, {r0 - r3, lr} \n\ 203 + stmfd sp!, {r0 - r4, lr} \n\ 203 204 mov r0, ip \n\ 204 205 bl __down_trylock \n\ 205 206 mov ip, r0 \n\ 206 - ldmfd sp!, {r0 - r3, pc} \n\ 207 + ldmfd sp!, {r0 - r4, pc} \n\ 207 208 \n\ 208 209 .align 5 \n\ 209 210 .globl __up_wakeup \n\ 210 211 __up_wakeup: \n\ 211 - stmfd sp!, {r0 - r3, lr} \n\ 212 + stmfd sp!, {r0 - r4, lr} \n\ 212 213 mov r0, ip \n\ 213 214 bl __up \n\ 214 - ldmfd sp!, {r0 - r3, pc} \n\ 215 + ldmfd sp!, {r0 - r4, pc} \n\ 215 216 "); 216 217 217 218 EXPORT_SYMBOL(__down_failed);
+2
arch/arm/kernel/sys_arm.c
··· 147 147 return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp); 148 148 } 149 149 150 + #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) 150 151 /* 151 152 * sys_ipc() is the de-multiplexer for the SysV IPC calls.. 152 153 * ··· 227 226 return -ENOSYS; 228 227 } 229 228 } 229 + #endif 230 230 231 231 /* Fork a new task - this creates a new program thread. 232 232 * This is called indirectly via a small wrapper
+339
arch/arm/kernel/sys_oabi-compat.c
··· 1 + /* 2 + * arch/arm/kernel/sys_oabi-compat.c 3 + * 4 + * Compatibility wrappers for syscalls that are used from 5 + * old ABI user space binaries with an EABI kernel. 6 + * 7 + * Author: Nicolas Pitre 8 + * Created: Oct 7, 2005 9 + * Copyright: MontaVista Software, Inc. 10 + * 11 + * This program is free software; you can redistribute it and/or modify 12 + * it under the terms of the GNU General Public License version 2 as 13 + * published by the Free Software Foundation. 14 + */ 15 + 16 + /* 17 + * The legacy ABI and the new ARM EABI have different rules making some 18 + * syscalls incompatible especially with structure arguments. 19 + * Most notably, Eabi says 64-bit members should be 64-bit aligned instead of 20 + * simply word aligned. EABI also pads structures to the size of the largest 21 + * member it contains instead of the invariant 32-bit. 22 + * 23 + * The following syscalls are affected: 24 + * 25 + * sys_stat64: 26 + * sys_lstat64: 27 + * sys_fstat64: 28 + * 29 + * struct stat64 has different sizes and some members are shifted 30 + * Compatibility wrappers are needed for them and provided below. 31 + * 32 + * sys_fcntl64: 33 + * 34 + * struct flock64 has different sizes and some members are shifted 35 + * A compatibility wrapper is needed and provided below. 36 + * 37 + * sys_statfs64: 38 + * sys_fstatfs64: 39 + * 40 + * struct statfs64 has extra padding with EABI growing its size from 41 + * 84 to 88. This struct is now __attribute__((packed,aligned(4))) 42 + * with a small assembly wrapper to force the sz argument to 84 if it is 88 43 + * to avoid copying the extra padding over user space unexpecting it. 44 + * 45 + * sys_newuname: 46 + * 47 + * struct new_utsname has no padding with EABI. No problem there. 48 + * 49 + * sys_epoll_ctl: 50 + * sys_epoll_wait: 51 + * 52 + * struct epoll_event has its second member shifted also affecting the 53 + * structure size. Compatibility wrappers are needed and provided below. 54 + * 55 + * sys_ipc: 56 + * sys_semop: 57 + * sys_semtimedop: 58 + * 59 + * struct sembuf loses its padding with EABI. Since arrays of them are 60 + * used they have to be copyed to remove the padding. Compatibility wrappers 61 + * provided below. 62 + */ 63 + 64 + #include <linux/syscalls.h> 65 + #include <linux/errno.h> 66 + #include <linux/fs.h> 67 + #include <linux/fcntl.h> 68 + #include <linux/eventpoll.h> 69 + #include <linux/sem.h> 70 + #include <asm/ipc.h> 71 + #include <asm/uaccess.h> 72 + 73 + struct oldabi_stat64 { 74 + unsigned long long st_dev; 75 + unsigned int __pad1; 76 + unsigned long __st_ino; 77 + unsigned int st_mode; 78 + unsigned int st_nlink; 79 + 80 + unsigned long st_uid; 81 + unsigned long st_gid; 82 + 83 + unsigned long long st_rdev; 84 + unsigned int __pad2; 85 + 86 + long long st_size; 87 + unsigned long st_blksize; 88 + unsigned long long st_blocks; 89 + 90 + unsigned long st_atime; 91 + unsigned long st_atime_nsec; 92 + 93 + unsigned long st_mtime; 94 + unsigned long st_mtime_nsec; 95 + 96 + unsigned long st_ctime; 97 + unsigned long st_ctime_nsec; 98 + 99 + unsigned long long st_ino; 100 + } __attribute__ ((packed,aligned(4))); 101 + 102 + static long cp_oldabi_stat64(struct kstat *stat, 103 + struct oldabi_stat64 __user *statbuf) 104 + { 105 + struct oldabi_stat64 tmp; 106 + 107 + tmp.st_dev = huge_encode_dev(stat->dev); 108 + tmp.__pad1 = 0; 109 + tmp.__st_ino = stat->ino; 110 + tmp.st_mode = stat->mode; 111 + tmp.st_nlink = stat->nlink; 112 + tmp.st_uid = stat->uid; 113 + tmp.st_gid = stat->gid; 114 + tmp.st_rdev = huge_encode_dev(stat->rdev); 115 + tmp.st_size = stat->size; 116 + tmp.st_blocks = stat->blocks; 117 + tmp.__pad2 = 0; 118 + tmp.st_blksize = stat->blksize; 119 + tmp.st_atime = stat->atime.tv_sec; 120 + tmp.st_atime_nsec = stat->atime.tv_nsec; 121 + tmp.st_mtime = stat->mtime.tv_sec; 122 + tmp.st_mtime_nsec = stat->mtime.tv_nsec; 123 + tmp.st_ctime = stat->ctime.tv_sec; 124 + tmp.st_ctime_nsec = stat->ctime.tv_nsec; 125 + tmp.st_ino = stat->ino; 126 + return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 127 + } 128 + 129 + asmlinkage long sys_oabi_stat64(char __user * filename, 130 + struct oldabi_stat64 __user * statbuf) 131 + { 132 + struct kstat stat; 133 + int error = vfs_stat(filename, &stat); 134 + if (!error) 135 + error = cp_oldabi_stat64(&stat, statbuf); 136 + return error; 137 + } 138 + 139 + asmlinkage long sys_oabi_lstat64(char __user * filename, 140 + struct oldabi_stat64 __user * statbuf) 141 + { 142 + struct kstat stat; 143 + int error = vfs_lstat(filename, &stat); 144 + if (!error) 145 + error = cp_oldabi_stat64(&stat, statbuf); 146 + return error; 147 + } 148 + 149 + asmlinkage long sys_oabi_fstat64(unsigned long fd, 150 + struct oldabi_stat64 __user * statbuf) 151 + { 152 + struct kstat stat; 153 + int error = vfs_fstat(fd, &stat); 154 + if (!error) 155 + error = cp_oldabi_stat64(&stat, statbuf); 156 + return error; 157 + } 158 + 159 + struct oabi_flock64 { 160 + short l_type; 161 + short l_whence; 162 + loff_t l_start; 163 + loff_t l_len; 164 + pid_t l_pid; 165 + } __attribute__ ((packed,aligned(4))); 166 + 167 + asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd, 168 + unsigned long arg) 169 + { 170 + struct oabi_flock64 user; 171 + struct flock64 kernel; 172 + mm_segment_t fs = USER_DS; /* initialized to kill a warning */ 173 + unsigned long local_arg = arg; 174 + int ret; 175 + 176 + switch (cmd) { 177 + case F_GETLK64: 178 + case F_SETLK64: 179 + case F_SETLKW64: 180 + if (copy_from_user(&user, (struct oabi_flock64 __user *)arg, 181 + sizeof(user))) 182 + return -EFAULT; 183 + kernel.l_type = user.l_type; 184 + kernel.l_whence = user.l_whence; 185 + kernel.l_start = user.l_start; 186 + kernel.l_len = user.l_len; 187 + kernel.l_pid = user.l_pid; 188 + local_arg = (unsigned long)&kernel; 189 + fs = get_fs(); 190 + set_fs(KERNEL_DS); 191 + } 192 + 193 + ret = sys_fcntl64(fd, cmd, local_arg); 194 + 195 + switch (cmd) { 196 + case F_GETLK64: 197 + if (!ret) { 198 + user.l_type = kernel.l_type; 199 + user.l_whence = kernel.l_whence; 200 + user.l_start = kernel.l_start; 201 + user.l_len = kernel.l_len; 202 + user.l_pid = kernel.l_pid; 203 + if (copy_to_user((struct oabi_flock64 __user *)arg, 204 + &user, sizeof(user))) 205 + ret = -EFAULT; 206 + } 207 + case F_SETLK64: 208 + case F_SETLKW64: 209 + set_fs(fs); 210 + } 211 + 212 + return ret; 213 + } 214 + 215 + struct oabi_epoll_event { 216 + __u32 events; 217 + __u64 data; 218 + } __attribute__ ((packed,aligned(4))); 219 + 220 + asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd, 221 + struct oabi_epoll_event __user *event) 222 + { 223 + struct oabi_epoll_event user; 224 + struct epoll_event kernel; 225 + mm_segment_t fs; 226 + long ret; 227 + 228 + if (op == EPOLL_CTL_DEL) 229 + return sys_epoll_ctl(epfd, op, fd, NULL); 230 + if (copy_from_user(&user, event, sizeof(user))) 231 + return -EFAULT; 232 + kernel.events = user.events; 233 + kernel.data = user.data; 234 + fs = get_fs(); 235 + set_fs(KERNEL_DS); 236 + ret = sys_epoll_ctl(epfd, op, fd, &kernel); 237 + set_fs(fs); 238 + return ret; 239 + } 240 + 241 + asmlinkage long sys_oabi_epoll_wait(int epfd, 242 + struct oabi_epoll_event __user *events, 243 + int maxevents, int timeout) 244 + { 245 + struct epoll_event *kbuf; 246 + mm_segment_t fs; 247 + long ret, err, i; 248 + 249 + if (maxevents <= 0 || maxevents > (INT_MAX/sizeof(struct epoll_event))) 250 + return -EINVAL; 251 + kbuf = kmalloc(sizeof(*kbuf) * maxevents, GFP_KERNEL); 252 + if (!kbuf) 253 + return -ENOMEM; 254 + fs = get_fs(); 255 + set_fs(KERNEL_DS); 256 + ret = sys_epoll_wait(epfd, kbuf, maxevents, timeout); 257 + set_fs(fs); 258 + err = 0; 259 + for (i = 0; i < ret; i++) { 260 + __put_user_error(kbuf[i].events, &events->events, err); 261 + __put_user_error(kbuf[i].data, &events->data, err); 262 + events++; 263 + } 264 + kfree(kbuf); 265 + return err ? -EFAULT : ret; 266 + } 267 + 268 + struct oabi_sembuf { 269 + unsigned short sem_num; 270 + short sem_op; 271 + short sem_flg; 272 + unsigned short __pad; 273 + }; 274 + 275 + asmlinkage long sys_oabi_semtimedop(int semid, 276 + struct oabi_sembuf __user *tsops, 277 + unsigned nsops, 278 + const struct timespec __user *timeout) 279 + { 280 + struct sembuf *sops; 281 + struct timespec local_timeout; 282 + long err; 283 + int i; 284 + 285 + if (nsops < 1) 286 + return -EINVAL; 287 + sops = kmalloc(sizeof(*sops) * nsops, GFP_KERNEL); 288 + if (!sops) 289 + return -ENOMEM; 290 + err = 0; 291 + for (i = 0; i < nsops; i++) { 292 + __get_user_error(sops[i].sem_num, &tsops->sem_num, err); 293 + __get_user_error(sops[i].sem_op, &tsops->sem_op, err); 294 + __get_user_error(sops[i].sem_flg, &tsops->sem_flg, err); 295 + tsops++; 296 + } 297 + if (timeout) { 298 + /* copy this as well before changing domain protection */ 299 + err |= copy_from_user(&local_timeout, timeout, sizeof(*timeout)); 300 + timeout = &local_timeout; 301 + } 302 + if (err) { 303 + err = -EFAULT; 304 + } else { 305 + mm_segment_t fs = get_fs(); 306 + set_fs(KERNEL_DS); 307 + err = sys_semtimedop(semid, sops, nsops, timeout); 308 + set_fs(fs); 309 + } 310 + kfree(sops); 311 + return err; 312 + } 313 + 314 + asmlinkage long sys_oabi_semop(int semid, struct oabi_sembuf __user *tsops, 315 + unsigned nsops) 316 + { 317 + return sys_oabi_semtimedop(semid, tsops, nsops, NULL); 318 + } 319 + 320 + extern asmlinkage int sys_ipc(uint call, int first, int second, int third, 321 + void __user *ptr, long fifth); 322 + 323 + asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third, 324 + void __user *ptr, long fifth) 325 + { 326 + switch (call & 0xffff) { 327 + case SEMOP: 328 + return sys_oabi_semtimedop(first, 329 + (struct oabi_sembuf __user *)ptr, 330 + second, NULL); 331 + case SEMTIMEDOP: 332 + return sys_oabi_semtimedop(first, 333 + (struct oabi_sembuf __user *)ptr, 334 + second, 335 + (const struct timespec __user *)fifth); 336 + default: 337 + return sys_ipc(call, first, second, third, ptr, fifth); 338 + } 339 + }
+1 -1
arch/arm/kernel/traps.c
··· 404 404 struct thread_info *thread = current_thread_info(); 405 405 siginfo_t info; 406 406 407 - if ((no >> 16) != 0x9f) 407 + if ((no >> 16) != (__ARM_NR_BASE>> 16)) 408 408 return bad_syscall(no, regs); 409 409 410 410 switch (no & 0xffff) {
+1
arch/arm/lib/ashldi3.S
··· 37 37 #endif 38 38 39 39 ENTRY(__ashldi3) 40 + ENTRY(__aeabi_llsl) 40 41 41 42 subs r3, r2, #32 42 43 rsb ip, r2, #32
+1
arch/arm/lib/ashrdi3.S
··· 37 37 #endif 38 38 39 39 ENTRY(__ashrdi3) 40 + ENTRY(__aeabi_lasr) 40 41 41 42 subs r3, r2, #32 42 43 rsb ip, r2, #32
+25 -2
arch/arm/lib/lib1funcs.S
··· 206 206 207 207 208 208 ENTRY(__udivsi3) 209 + ENTRY(__aeabi_uidiv) 209 210 210 211 subs r2, r1, #1 211 212 moveq pc, lr ··· 247 246 248 247 249 248 ENTRY(__divsi3) 249 + ENTRY(__aeabi_idiv) 250 250 251 251 cmp r1, #0 252 252 eor ip, r0, r1 @ save the sign of the result. ··· 305 303 rsbmi r0, r0, #0 306 304 mov pc, lr 307 305 306 + #ifdef CONFIG_AEABI 307 + 308 + ENTRY(__aeabi_uidivmod) 309 + 310 + stmfd sp!, {r0, r1, ip, lr} 311 + bl __aeabi_uidiv 312 + ldmfd sp!, {r1, r2, ip, lr} 313 + mul r3, r0, r2 314 + sub r1, r1, r3 315 + mov pc, lr 316 + 317 + ENTRY(__aeabi_idivmod) 318 + 319 + stmfd sp!, {r0, r1, ip, lr} 320 + bl __aeabi_idiv 321 + ldmfd sp!, {r1, r2, ip, lr} 322 + mul r3, r0, r2 323 + sub r1, r1, r3 324 + mov pc, lr 325 + 326 + #endif 308 327 309 328 Ldiv0: 310 329 311 - str lr, [sp, #-4]! 330 + str lr, [sp, #-8]! 312 331 bl __div0 313 332 mov r0, #0 @ About as wrong as it could be. 314 - ldr pc, [sp], #4 333 + ldr pc, [sp], #8 315 334 316 335
+1
arch/arm/lib/lshrdi3.S
··· 37 37 #endif 38 38 39 39 ENTRY(__lshrdi3) 40 + ENTRY(__aeabi_llsr) 40 41 41 42 subs r3, r2, #32 42 43 rsb ip, r2, #32
+1
arch/arm/lib/muldi3.S
··· 25 25 #endif 26 26 27 27 ENTRY(__muldi3) 28 + ENTRY(__aeabi_lmul) 28 29 29 30 mul xh, yl, xh 30 31 mla xh, xl, yh, xh
+14
arch/arm/lib/ucmpdi2.S
··· 10 10 * published by the Free Software Foundation. 11 11 */ 12 12 13 + #include <linux/config.h> 13 14 #include <linux/linkage.h> 14 15 15 16 #ifdef __ARMEB__ ··· 33 32 moveq r0, #1 34 33 movhi r0, #2 35 34 mov pc, lr 35 + 36 + #ifdef CONFIG_AEABI 37 + 38 + ENTRY(__aeabi_ulcmp) 39 + 40 + cmp xh, yh 41 + cmpeq xl, yl 42 + movlo r0, #-1 43 + moveq r0, #0 44 + movhi r0, #1 45 + mov pc, lr 46 + 47 + #endif 36 48
-1
arch/arm/mach-aaec2000/aaed2000.c
··· 90 90 91 91 MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform") 92 92 /* Maintainer: Nicolas Bellido Y Ortega */ 93 - .phys_ram = 0xf0000000, 94 93 .phys_io = PIO_BASE, 95 94 .io_pg_offst = ((VIO_BASE) >> 18) & 0xfffc, 96 95 .map_io = aaed2000_map_io,
-1
arch/arm/mach-at91rm9200/board-csb337.c
··· 132 132 133 133 MACHINE_START(CSB337, "Cogent CSB337") 134 134 /* Maintainer: Bill Gatliff */ 135 - .phys_ram = AT91_SDRAM_BASE, 136 135 .phys_io = AT91_BASE_SYS, 137 136 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, 138 137 .boot_params = AT91_SDRAM_BASE + 0x100,
-1
arch/arm/mach-at91rm9200/board-csb637.c
··· 105 105 106 106 MACHINE_START(CSB637, "Cogent CSB637") 107 107 /* Maintainer: Bill Gatliff */ 108 - .phys_ram = AT91_SDRAM_BASE, 109 108 .phys_io = AT91_BASE_SYS, 110 109 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, 111 110 .boot_params = AT91_SDRAM_BASE + 0x100,
-1
arch/arm/mach-at91rm9200/board-dk.c
··· 127 127 128 128 MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK") 129 129 /* Maintainer: SAN People/Atmel */ 130 - .phys_ram = AT91_SDRAM_BASE, 131 130 .phys_io = AT91_BASE_SYS, 132 131 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, 133 132 .boot_params = AT91_SDRAM_BASE + 0x100,
-1
arch/arm/mach-at91rm9200/board-ek.c
··· 120 120 121 121 MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK") 122 122 /* Maintainer: SAN People/Atmel */ 123 - .phys_ram = AT91_SDRAM_BASE, 124 123 .phys_io = AT91_BASE_SYS, 125 124 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, 126 125 .boot_params = AT91_SDRAM_BASE + 0x100,
-1
arch/arm/mach-clps711x/autcpu12.c
··· 64 64 65 65 MACHINE_START(AUTCPU12, "autronix autcpu12") 66 66 /* Maintainer: Thomas Gleixner */ 67 - .phys_ram = 0xc0000000, 68 67 .phys_io = 0x80000000, 69 68 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, 70 69 .boot_params = 0xc0020000,
-1
arch/arm/mach-clps711x/cdb89712.c
··· 55 55 56 56 MACHINE_START(CDB89712, "Cirrus-CDB89712") 57 57 /* Maintainer: Ray Lehtiniemi */ 58 - .phys_ram = 0xc0000000, 59 58 .phys_io = 0x80000000, 60 59 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, 61 60 .boot_params = 0xc0000100,
-1
arch/arm/mach-clps711x/ceiva.c
··· 56 56 57 57 MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame") 58 58 /* Maintainer: Rob Scott */ 59 - .phys_ram = 0xc0000000, 60 59 .phys_io = 0x80000000, 61 60 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, 62 61 .boot_params = 0xc0000100,
-1
arch/arm/mach-clps711x/clep7312.c
··· 38 38 39 39 MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312") 40 40 /* Maintainer: Nobody */ 41 - .phys_ram = 0xc0000000, 42 41 .phys_io = 0x80000000, 43 42 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, 44 43 .boot_params = 0xc0000100,
-1
arch/arm/mach-clps711x/edb7211-arch.c
··· 52 52 53 53 MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)") 54 54 /* Maintainer: Jon McClintock */ 55 - .phys_ram = 0xc0000000, 56 55 .phys_io = 0x80000000, 57 56 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, 58 57 .boot_params = 0xc0020100, /* 0xc0000000 - 0xc001ffff can be video RAM */
-1
arch/arm/mach-clps711x/fortunet.c
··· 78 78 79 79 MACHINE_START(FORTUNET, "ARM-FortuNet") 80 80 /* Maintainer: FortuNet Inc. */ 81 - .phys_ram = 0xc0000000, 82 81 .phys_io = 0x80000000, 83 82 .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, 84 83 .boot_params = 0x00000000,
-1
arch/arm/mach-clps711x/p720t.c
··· 90 90 91 91 MACHINE_START(P720T, "ARM-Prospector720T") 92 92 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ 93 - .phys_ram = 0xc0000000, 94 93 .phys_io = 0x80000000, 95 94 .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, 96 95 .boot_params = 0xc0000100,
-1
arch/arm/mach-clps7500/core.c
··· 384 384 385 385 MACHINE_START(CLPS7500, "CL-PS7500") 386 386 /* Maintainer: Philip Blundell */ 387 - .phys_ram = 0x10000000, 388 387 .phys_io = 0x03000000, 389 388 .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, 390 389 .map_io = clps7500_map_io,
-1
arch/arm/mach-ebsa110/core.c
··· 284 284 285 285 MACHINE_START(EBSA110, "EBSA110") 286 286 /* Maintainer: Russell King */ 287 - .phys_ram = 0x00000000, 288 287 .phys_io = 0xe0000000, 289 288 .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, 290 289 .boot_params = 0x00000400,
-1
arch/arm/mach-footbridge/cats-hw.c
··· 85 85 86 86 MACHINE_START(CATS, "Chalice-CATS") 87 87 /* Maintainer: Philip Blundell */ 88 - .phys_ram = 0x00000000, 89 88 .phys_io = DC21285_ARMCSR_BASE, 90 89 .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, 91 90 .boot_params = 0x00000100,
-1
arch/arm/mach-footbridge/co285.c
··· 29 29 30 30 MACHINE_START(CO285, "co-EBSA285") 31 31 /* Maintainer: Mark van Doesburg */ 32 - .phys_ram = 0x00000000, 33 32 .phys_io = DC21285_ARMCSR_BASE, 34 33 .io_pg_offst = ((0x7cf00000) >> 18) & 0xfffc, 35 34 .fixup = fixup_coebsa285,
-1
arch/arm/mach-footbridge/ebsa285.c
··· 14 14 15 15 MACHINE_START(EBSA285, "EBSA285") 16 16 /* Maintainer: Russell King */ 17 - .phys_ram = 0x00000000, 18 17 .phys_io = DC21285_ARMCSR_BASE, 19 18 .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, 20 19 .boot_params = 0x00000100,
-1
arch/arm/mach-footbridge/netwinder-hw.c
··· 649 649 650 650 MACHINE_START(NETWINDER, "Rebel-NetWinder") 651 651 /* Maintainer: Russell King/Rebel.com */ 652 - .phys_ram = 0x00000000, 653 652 .phys_io = DC21285_ARMCSR_BASE, 654 653 .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, 655 654 .boot_params = 0x00000100,
-1
arch/arm/mach-footbridge/personal.c
··· 14 14 15 15 MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer") 16 16 /* Maintainer: Jamey Hicks / George France */ 17 - .phys_ram = 0x00000000, 18 17 .phys_io = DC21285_ARMCSR_BASE, 19 18 .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, 20 19 .boot_params = 0x00000100,
-1
arch/arm/mach-h720x/h7201-eval.c
··· 31 31 32 32 MACHINE_START(H7201, "Hynix GMS30C7201") 33 33 /* Maintainer: Robert Schwebel, Pengutronix */ 34 - .phys_ram = 0x40000000, 35 34 .phys_io = 0x80000000, 36 35 .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, 37 36 .boot_params = 0xc0001000,
-1
arch/arm/mach-h720x/h7202-eval.c
··· 72 72 73 73 MACHINE_START(H7202, "Hynix HMS30C7202") 74 74 /* Maintainer: Robert Schwebel, Pengutronix */ 75 - .phys_ram = 0x40000000, 76 75 .phys_io = 0x80000000, 77 76 .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, 78 77 .boot_params = 0x40000100,
-1
arch/arm/mach-imx/mx1ads.c
··· 69 69 70 70 MACHINE_START(MX1ADS, "Motorola MX1ADS") 71 71 /* Maintainer: Sascha Hauer, Pengutronix */ 72 - .phys_ram = 0x08000000, 73 72 .phys_io = 0x00200000, 74 73 .io_pg_offst = ((0xe0200000) >> 18) & 0xfffc, 75 74 .boot_params = 0x08000100,
-1
arch/arm/mach-integrator/integrator_ap.c
··· 347 347 348 348 MACHINE_START(INTEGRATOR, "ARM-Integrator") 349 349 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ 350 - .phys_ram = 0x00000000, 351 350 .phys_io = 0x16000000, 352 351 .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, 353 352 .boot_params = 0x00000100,
-1
arch/arm/mach-integrator/integrator_cp.c
··· 578 578 579 579 MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP") 580 580 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ 581 - .phys_ram = 0x00000000, 582 581 .phys_io = 0x16000000, 583 582 .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, 584 583 .boot_params = 0x00000100,
-2
arch/arm/mach-iop3xx/iop321-setup.c
··· 151 151 #if defined(CONFIG_ARCH_IQ80321) 152 152 MACHINE_START(IQ80321, "Intel IQ80321") 153 153 /* Maintainer: Intel Corporation */ 154 - .phys_ram = PHYS_OFFSET, 155 154 .phys_io = IQ80321_UART, 156 155 .io_pg_offst = ((IQ80321_UART) >> 18) & 0xfffc, 157 156 .map_io = iq80321_map_io, ··· 162 163 #elif defined(CONFIG_ARCH_IQ31244) 163 164 MACHINE_START(IQ31244, "Intel IQ31244") 164 165 /* Maintainer: Intel Corp. */ 165 - .phys_ram = PHYS_OFFSET, 166 166 .phys_io = IQ31244_UART, 167 167 .io_pg_offst = ((IQ31244_UART) >> 18) & 0xfffc, 168 168 .map_io = iq31244_map_io,
-2
arch/arm/mach-iop3xx/iop331-setup.c
··· 195 195 #if defined(CONFIG_ARCH_IQ80331) 196 196 MACHINE_START(IQ80331, "Intel IQ80331") 197 197 /* Maintainer: Intel Corp. */ 198 - .phys_ram = PHYS_OFFSET, 199 198 .phys_io = 0xfefff000, 200 199 .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical 201 200 .map_io = iq80331_map_io, ··· 207 208 #elif defined(CONFIG_MACH_IQ80332) 208 209 MACHINE_START(IQ80332, "Intel IQ80332") 209 210 /* Maintainer: Intel Corp. */ 210 - .phys_ram = PHYS_OFFSET, 211 211 .phys_io = 0xfefff000, 212 212 .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical 213 213 .map_io = iq80332_map_io,
+10
arch/arm/mach-ixp2000/core.c
··· 106 106 .length = IXP2000_MSF_SIZE, 107 107 .type = MT_IXP2000_DEVICE, 108 108 }, { 109 + .virtual = IXP2000_SCRATCH_RING_VIRT_BASE, 110 + .pfn = __phys_to_pfn(IXP2000_SCRATCH_RING_PHYS_BASE), 111 + .length = IXP2000_SCRATCH_RING_SIZE, 112 + .type = MT_IXP2000_DEVICE, 113 + }, { 114 + .virtual = IXP2000_SRAM0_VIRT_BASE, 115 + .pfn = __phys_to_pfn(IXP2000_SRAM0_PHYS_BASE), 116 + .length = IXP2000_SRAM0_SIZE, 117 + .type = MT_IXP2000_DEVICE, 118 + }, { 109 119 .virtual = IXP2000_PCI_IO_VIRT_BASE, 110 120 .pfn = __phys_to_pfn(IXP2000_PCI_IO_PHYS_BASE), 111 121 .length = IXP2000_PCI_IO_SIZE,
-1
arch/arm/mach-ixp2000/enp2611.c
··· 254 254 255 255 MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board") 256 256 /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ 257 - .phys_ram = 0x00000000, 258 257 .phys_io = IXP2000_UART_PHYS_BASE, 259 258 .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, 260 259 .boot_params = 0x00000100,
-1
arch/arm/mach-ixp2000/ixdp2400.c
··· 169 169 170 170 MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform") 171 171 /* Maintainer: MontaVista Software, Inc. */ 172 - .phys_ram = 0x00000000, 173 172 .phys_io = IXP2000_UART_PHYS_BASE, 174 173 .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, 175 174 .boot_params = 0x00000100,
-1
arch/arm/mach-ixp2000/ixdp2800.c
··· 285 285 286 286 MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform") 287 287 /* Maintainer: MontaVista Software, Inc. */ 288 - .phys_ram = 0x00000000, 289 288 .phys_io = IXP2000_UART_PHYS_BASE, 290 289 .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, 291 290 .boot_params = 0x00000100,
-2
arch/arm/mach-ixp2000/ixdp2x01.c
··· 376 376 #ifdef CONFIG_ARCH_IXDP2401 377 377 MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform") 378 378 /* Maintainer: MontaVista Software, Inc. */ 379 - .phys_ram = 0x00000000, 380 379 .phys_io = IXP2000_UART_PHYS_BASE, 381 380 .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, 382 381 .boot_params = 0x00000100, ··· 389 390 #ifdef CONFIG_ARCH_IXDP2801 390 391 MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform") 391 392 /* Maintainer: MontaVista Software, Inc. */ 392 - .phys_ram = 0x00000000, 393 393 .phys_io = IXP2000_UART_PHYS_BASE, 394 394 .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, 395 395 .boot_params = 0x00000100,
-2
arch/arm/mach-ixp4xx/coyote-setup.c
··· 101 101 #ifdef CONFIG_ARCH_ADI_COYOTE 102 102 MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote") 103 103 /* Maintainer: MontaVista Software, Inc. */ 104 - .phys_ram = PHYS_OFFSET, 105 104 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 106 105 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, 107 106 .map_io = ixp4xx_map_io, ··· 118 119 #ifdef CONFIG_MACH_IXDPG425 119 120 MACHINE_START(IXDPG425, "Intel IXDPG425") 120 121 /* Maintainer: MontaVista Software, Inc. */ 121 - .phys_ram = PHYS_OFFSET, 122 122 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 123 123 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, 124 124 .map_io = ixp4xx_map_io,
-1
arch/arm/mach-ixp4xx/gtwx5715-setup.c
··· 142 142 143 143 MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)") 144 144 /* Maintainer: George Joseph */ 145 - .phys_ram = PHYS_OFFSET, 146 145 .phys_io = IXP4XX_UART2_BASE_PHYS, 147 146 .io_pg_offst = ((IXP4XX_UART2_BASE_VIRT) >> 18) & 0xfffc, 148 147 .map_io = ixp4xx_map_io,
-4
arch/arm/mach-ixp4xx/ixdp425-setup.c
··· 121 121 #ifdef CONFIG_ARCH_IXDP425 122 122 MACHINE_START(IXDP425, "Intel IXDP425 Development Platform") 123 123 /* Maintainer: MontaVista Software, Inc. */ 124 - .phys_ram = PHYS_OFFSET, 125 124 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 126 125 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, 127 126 .map_io = ixp4xx_map_io, ··· 134 135 #ifdef CONFIG_MACH_IXDP465 135 136 MACHINE_START(IXDP465, "Intel IXDP465 Development Platform") 136 137 /* Maintainer: MontaVista Software, Inc. */ 137 - .phys_ram = PHYS_OFFSET, 138 138 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 139 139 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, 140 140 .map_io = ixp4xx_map_io, ··· 147 149 #ifdef CONFIG_ARCH_PRPMC1100 148 150 MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform") 149 151 /* Maintainer: MontaVista Software, Inc. */ 150 - .phys_ram = PHYS_OFFSET, 151 152 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 152 153 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, 153 154 .map_io = ixp4xx_map_io, ··· 166 169 #ifdef CONFIG_ARCH_AVILA 167 170 MACHINE_START(AVILA, "Gateworks Avila Network Platform") 168 171 /* Maintainer: Deepak Saxena <dsaxena@plexity.net> */ 169 - .phys_ram = PHYS_OFFSET, 170 172 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 171 173 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, 172 174 .map_io = ixp4xx_map_io,
-1
arch/arm/mach-ixp4xx/nas100d-setup.c
··· 124 124 125 125 MACHINE_START(NAS100D, "Iomega NAS 100d") 126 126 /* Maintainer: www.nslu2-linux.org */ 127 - .phys_ram = PHYS_OFFSET, 128 127 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 129 128 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, 130 129 .boot_params = 0x00000100,
-1
arch/arm/mach-ixp4xx/nslu2-setup.c
··· 123 123 124 124 MACHINE_START(NSLU2, "Linksys NSLU2") 125 125 /* Maintainer: www.nslu2-linux.org */ 126 - .phys_ram = PHYS_OFFSET, 127 126 .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, 128 127 .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, 129 128 .boot_params = 0x00000100,
-1
arch/arm/mach-l7200/core.c
··· 91 91 92 92 MACHINE_START(L7200, "LinkUp Systems L7200") 93 93 /* Maintainer: Steve Hill / Scott McConnell */ 94 - .phys_ram = 0xf0000000, 95 94 .phys_io = 0x80040000, 96 95 .io_pg_offst = ((0xd0000000) >> 18) & 0xfffc, 97 96 .map_io = l7200_map_io,
-1
arch/arm/mach-lh7a40x/arch-kev7a400.c
··· 112 112 113 113 MACHINE_START (KEV7A400, "Sharp KEV7a400") 114 114 /* Maintainer: Marc Singer */ 115 - .phys_ram = 0xc0000000, 116 115 .phys_io = 0x80000000, 117 116 .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, 118 117 .boot_params = 0xc0000100,
-2
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
··· 317 317 318 318 MACHINE_START (LPD7A400, "Logic Product Development LPD7A400-10") 319 319 /* Maintainer: Marc Singer */ 320 - .phys_ram = 0xc0000000, 321 320 .phys_io = 0x80000000, 322 321 .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, 323 322 .boot_params = 0xc0000100, ··· 332 333 333 334 MACHINE_START (LPD7A404, "Logic Product Development LPD7A404-10") 334 335 /* Maintainer: Marc Singer */ 335 - .phys_ram = 0xc0000000, 336 336 .phys_io = 0x80000000, 337 337 .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, 338 338 .boot_params = 0xc0000100,
-1
arch/arm/mach-omap1/board-generic.c
··· 109 109 110 110 MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") 111 111 /* Maintainer: Tony Lindgren <tony@atomide.com> */ 112 - .phys_ram = 0x10000000, 113 112 .phys_io = 0xfff00000, 114 113 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 115 114 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-h2.c
··· 199 199 200 200 MACHINE_START(OMAP_H2, "TI-H2") 201 201 /* Maintainer: Imre Deak <imre.deak@nokia.com> */ 202 - .phys_ram = 0x10000000, 203 202 .phys_io = 0xfff00000, 204 203 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 205 204 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-h3.c
··· 215 215 216 216 MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") 217 217 /* Maintainer: Texas Instruments, Inc. */ 218 - .phys_ram = 0x10000000, 219 218 .phys_io = 0xfff00000, 220 219 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 221 220 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-innovator.c
··· 303 303 304 304 MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") 305 305 /* Maintainer: MontaVista Software, Inc. */ 306 - .phys_ram = 0x10000000, 307 306 .phys_io = 0xfff00000, 308 307 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 309 308 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-netstar.c
··· 149 149 150 150 MACHINE_START(NETSTAR, "NetStar OMAP5910") 151 151 /* Maintainer: Ladislav Michl <michl@2n.cz> */ 152 - .phys_ram = 0x10000000, 153 152 .phys_io = 0xfff00000, 154 153 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 155 154 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-osk.c
··· 274 274 275 275 MACHINE_START(OMAP_OSK, "TI-OSK") 276 276 /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */ 277 - .phys_ram = 0x10000000, 278 277 .phys_io = 0xfff00000, 279 278 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 280 279 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-palmte.c
··· 76 76 } 77 77 78 78 MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") 79 - .phys_ram = 0x10000000, 80 79 .phys_io = 0xfff00000, 81 80 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 82 81 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-perseus2.c
··· 199 199 200 200 MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2") 201 201 /* Maintainer: Kevin Hilman <kjh@hilman.org> */ 202 - .phys_ram = 0x10000000, 203 202 .phys_io = 0xfff00000, 204 203 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 205 204 .boot_params = 0x10000100,
-1
arch/arm/mach-omap1/board-voiceblue.c
··· 281 281 282 282 MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") 283 283 /* Maintainer: Ladislav Michl <michl@2n.cz> */ 284 - .phys_ram = 0x10000000, 285 284 .phys_io = 0xfff00000, 286 285 .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, 287 286 .boot_params = 0x10000100,
-1
arch/arm/mach-omap2/board-generic.c
··· 69 69 70 70 MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx") 71 71 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ 72 - .phys_ram = 0x80000000, 73 72 .phys_io = 0x48000000, 74 73 .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, 75 74 .boot_params = 0x80000100,
-1
arch/arm/mach-omap2/board-h4.c
··· 186 186 187 187 MACHINE_START(OMAP_H4, "OMAP2420 H4 board") 188 188 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ 189 - .phys_ram = 0x80000000, 190 189 .phys_io = 0x48000000, 191 190 .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, 192 191 .boot_params = 0x80000100,
-3
arch/arm/mach-pxa/corgi.c
··· 342 342 343 343 #ifdef CONFIG_MACH_CORGI 344 344 MACHINE_START(CORGI, "SHARP Corgi") 345 - .phys_ram = 0xa0000000, 346 345 .phys_io = 0x40000000, 347 346 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 348 347 .fixup = fixup_corgi, ··· 354 355 355 356 #ifdef CONFIG_MACH_SHEPHERD 356 357 MACHINE_START(SHEPHERD, "SHARP Shepherd") 357 - .phys_ram = 0xa0000000, 358 358 .phys_io = 0x40000000, 359 359 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 360 360 .fixup = fixup_corgi, ··· 366 368 367 369 #ifdef CONFIG_MACH_HUSKY 368 370 MACHINE_START(HUSKY, "SHARP Husky") 369 - .phys_ram = 0xa0000000, 370 371 .phys_io = 0x40000000, 371 372 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 372 373 .fixup = fixup_corgi,
-1
arch/arm/mach-pxa/idp.c
··· 183 183 184 184 MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") 185 185 /* Maintainer: Vibren Technologies */ 186 - .phys_ram = 0xa0000000, 187 186 .phys_io = 0x40000000, 188 187 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 189 188 .map_io = idp_map_io,
-1
arch/arm/mach-pxa/lubbock.c
··· 437 437 438 438 MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") 439 439 /* Maintainer: MontaVista Software Inc. */ 440 - .phys_ram = 0xa0000000, 441 440 .phys_io = 0x40000000, 442 441 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 443 442 .map_io = lubbock_map_io,
-1
arch/arm/mach-pxa/mainstone.c
··· 489 489 490 490 MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") 491 491 /* Maintainer: MontaVista Software Inc. */ 492 - .phys_ram = 0xa0000000, 493 492 .phys_io = 0x40000000, 494 493 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 495 494 .map_io = mainstone_map_io,
-1
arch/arm/mach-pxa/poodle.c
··· 311 311 } 312 312 313 313 MACHINE_START(POODLE, "SHARP Poodle") 314 - .phys_ram = 0xa0000000, 315 314 .phys_io = 0x40000000, 316 315 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 317 316 .fixup = fixup_poodle,
-3
arch/arm/mach-pxa/spitz.c
··· 497 497 498 498 #ifdef CONFIG_MACH_SPITZ 499 499 MACHINE_START(SPITZ, "SHARP Spitz") 500 - .phys_ram = 0xa0000000, 501 500 .phys_io = 0x40000000, 502 501 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 503 502 .fixup = fixup_spitz, ··· 509 510 510 511 #ifdef CONFIG_MACH_BORZOI 511 512 MACHINE_START(BORZOI, "SHARP Borzoi") 512 - .phys_ram = 0xa0000000, 513 513 .phys_io = 0x40000000, 514 514 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 515 515 .fixup = fixup_spitz, ··· 521 523 522 524 #ifdef CONFIG_MACH_AKITA 523 525 MACHINE_START(AKITA, "SHARP Akita") 524 - .phys_ram = 0xa0000000, 525 526 .phys_io = 0x40000000, 526 527 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 527 528 .fixup = fixup_spitz,
-1
arch/arm/mach-pxa/tosa.c
··· 295 295 } 296 296 297 297 MACHINE_START(TOSA, "SHARP Tosa") 298 - .phys_ram = 0xa0000000, 299 298 .phys_io = 0x40000000, 300 299 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, 301 300 .fixup = fixup_tosa,
-1
arch/arm/mach-realview/Kconfig
··· 3 3 4 4 config MACH_REALVIEW_EB 5 5 bool "Support RealView/EB platform" 6 - default n 7 6 select ARM_GIC 8 7 help 9 8 Include support for the ARM(R) RealView Emulation Baseboard platform.
-1
arch/arm/mach-realview/realview_eb.c
··· 166 166 167 167 MACHINE_START(REALVIEW_EB, "ARM-RealView EB") 168 168 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ 169 - .phys_ram = 0x00000000, 170 169 .phys_io = REALVIEW_UART0_BASE, 171 170 .io_pg_offst = (IO_ADDRESS(REALVIEW_UART0_BASE) >> 18) & 0xfffc, 172 171 .boot_params = 0x00000100,
-1
arch/arm/mach-rpc/riscpc.c
··· 177 177 178 178 MACHINE_START(RISCPC, "Acorn-RiscPC") 179 179 /* Maintainer: Russell King */ 180 - .phys_ram = 0x10000000, 181 180 .phys_io = 0x03000000, 182 181 .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, 183 182 .boot_params = 0x10000100,
-1
arch/arm/mach-s3c2410/mach-anubis.c
··· 294 294 295 295 MACHINE_START(ANUBIS, "Simtec-Anubis") 296 296 /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ 297 - .phys_ram = S3C2410_SDRAM_PA, 298 297 .phys_io = S3C2410_PA_UART, 299 298 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 300 299 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-bast.c
··· 527 527 528 528 MACHINE_START(BAST, "Simtec-BAST") 529 529 /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ 530 - .phys_ram = S3C2410_SDRAM_PA, 531 530 .phys_io = S3C2410_PA_UART, 532 531 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 533 532 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-h1940.c
··· 171 171 172 172 MACHINE_START(H1940, "IPAQ-H1940") 173 173 /* Maintainer: Ben Dooks <ben@fluff.org> */ 174 - .phys_ram = S3C2410_SDRAM_PA, 175 174 .phys_io = S3C2410_PA_UART, 176 175 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 177 176 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-n30.c
··· 128 128 /* Maintainer: Christer Weinigel <christer@weinigel.se>, 129 129 Ben Dooks <ben-linux@fluff.org> 130 130 */ 131 - .phys_ram = S3C2410_SDRAM_PA, 132 131 .phys_io = S3C2410_PA_UART, 133 132 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 134 133 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-nexcoder.c
··· 148 148 149 149 MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440") 150 150 /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */ 151 - .phys_ram = S3C2410_SDRAM_PA, 152 151 .phys_io = S3C2410_PA_UART, 153 152 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 154 153 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-otom.c
··· 116 116 117 117 MACHINE_START(OTOM, "Nex Vision - Otom 1.1") 118 118 /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */ 119 - .phys_ram = S3C2410_SDRAM_PA, 120 119 .phys_io = S3C2410_PA_UART, 121 120 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 122 121 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-rx3715.c
··· 205 205 206 206 MACHINE_START(RX3715, "IPAQ-RX3715") 207 207 /* Maintainer: Ben Dooks <ben@fluff.org> */ 208 - .phys_ram = S3C2410_SDRAM_PA, 209 208 .phys_io = S3C2410_PA_UART, 210 209 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 211 210 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-smdk2410.c
··· 115 115 MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch 116 116 * to SMDK2410 */ 117 117 /* Maintainer: Jonas Dietsche */ 118 - .phys_ram = S3C2410_SDRAM_PA, 119 118 .phys_io = S3C2410_PA_UART, 120 119 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 121 120 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-smdk2440.c
··· 216 216 217 217 MACHINE_START(S3C2440, "SMDK2440") 218 218 /* Maintainer: Ben Dooks <ben@fluff.org> */ 219 - .phys_ram = S3C2410_SDRAM_PA, 220 219 .phys_io = S3C2410_PA_UART, 221 220 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 222 221 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-s3c2410/mach-vr1000.c
··· 395 395 396 396 MACHINE_START(VR1000, "Thorcom-VR1000") 397 397 /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ 398 - .phys_ram = S3C2410_SDRAM_PA, 399 398 .phys_io = S3C2410_PA_UART, 400 399 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 401 400 .boot_params = S3C2410_SDRAM_PA + 0x100,
-1
arch/arm/mach-sa1100/assabet.c
··· 447 447 448 448 449 449 MACHINE_START(ASSABET, "Intel-Assabet") 450 - .phys_ram = 0xc0000000, 451 450 .phys_io = 0x80000000, 452 451 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 453 452 .boot_params = 0xc0000100,
-1
arch/arm/mach-sa1100/badge4.c
··· 297 297 } 298 298 299 299 MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4") 300 - .phys_ram = 0xc0000000, 301 300 .phys_io = 0x80000000, 302 301 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 303 302 .boot_params = 0xc0000100,
-1
arch/arm/mach-sa1100/cerf.c
··· 135 135 136 136 MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube") 137 137 /* Maintainer: support@intrinsyc.com */ 138 - .phys_ram = 0xc0000000, 139 138 .phys_io = 0x80000000, 140 139 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 141 140 .map_io = cerf_map_io,
-1
arch/arm/mach-sa1100/collie.c
··· 191 191 } 192 192 193 193 MACHINE_START(COLLIE, "Sharp-Collie") 194 - .phys_ram = 0xc0000000, 195 194 .phys_io = 0x80000000, 196 195 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 197 196 .map_io = collie_map_io,
-3
arch/arm/mach-sa1100/h3600.c
··· 392 392 } 393 393 394 394 MACHINE_START(H3100, "Compaq iPAQ H3100") 395 - .phys_ram = 0xc0000000, 396 395 .phys_io = 0x80000000, 397 396 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 398 397 .boot_params = 0xc0000100, ··· 509 510 } 510 511 511 512 MACHINE_START(H3600, "Compaq iPAQ H3600") 512 - .phys_ram = 0xc0000000, 513 513 .phys_io = 0x80000000, 514 514 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 515 515 .boot_params = 0xc0000100, ··· 895 897 } 896 898 897 899 MACHINE_START(H3800, "Compaq iPAQ H3800") 898 - .phys_ram = 0xc0000000, 899 900 .phys_io = 0x80000000, 900 901 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 901 902 .boot_params = 0xc0000100,
-1
arch/arm/mach-sa1100/hackkit.c
··· 195 195 */ 196 196 197 197 MACHINE_START(HACKKIT, "HackKit Cpu Board") 198 - .phys_ram = 0xc0000000, 199 198 .phys_io = 0x80000000, 200 199 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 201 200 .boot_params = 0xc0000100,
-1
arch/arm/mach-sa1100/jornada720.c
··· 173 173 174 174 MACHINE_START(JORNADA720, "HP Jornada 720") 175 175 /* Maintainer: Michael Gernoth <michael@gernoth.net> */ 176 - .phys_ram = 0xc0000000, 177 176 .phys_io = 0x80000000, 178 177 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 179 178 .boot_params = 0xc0000100,
-1
arch/arm/mach-sa1100/lart.c
··· 60 60 } 61 61 62 62 MACHINE_START(LART, "LART") 63 - .phys_ram = 0xc0000000, 64 63 .phys_io = 0x80000000, 65 64 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 66 65 .boot_params = 0xc0000100,
-1
arch/arm/mach-sa1100/pleb.c
··· 146 146 } 147 147 148 148 MACHINE_START(PLEB, "PLEB") 149 - .phys_ram = 0xc0000000, 150 149 .phys_io = 0x80000000, 151 150 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 152 151 .map_io = pleb_map_io,
-1
arch/arm/mach-sa1100/shannon.c
··· 83 83 } 84 84 85 85 MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)") 86 - .phys_ram = 0xc0000000, 87 86 .phys_io = 0x80000000, 88 87 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 89 88 .boot_params = 0xc0000100,
-1
arch/arm/mach-sa1100/simpad.c
··· 229 229 230 230 MACHINE_START(SIMPAD, "Simpad") 231 231 /* Maintainer: Holger Freyther */ 232 - .phys_ram = 0xc0000000, 233 232 .phys_io = 0x80000000, 234 233 .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, 235 234 .boot_params = 0xc0000100,
-1
arch/arm/mach-shark/core.c
··· 111 111 112 112 MACHINE_START(SHARK, "Shark") 113 113 /* Maintainer: Alexander Schulz */ 114 - .phys_ram = 0x08000000, 115 114 .phys_io = 0x40000000, 116 115 .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, 117 116 .boot_params = 0x08003000,
-1
arch/arm/mach-versatile/Kconfig
··· 9 9 10 10 config MACH_VERSATILE_AB 11 11 bool "Support Versatile/AB platform" 12 - default n 13 12 help 14 13 Include support for the ARM(R) Versatile/AP platform. 15 14
+5 -53
arch/arm/mach-versatile/core.c
··· 35 35 #include <asm/leds.h> 36 36 #include <asm/hardware/arm_timer.h> 37 37 #include <asm/hardware/icst307.h> 38 + #include <asm/hardware/vic.h> 38 39 39 40 #include <asm/mach/arch.h> 40 41 #include <asm/mach/flash.h> ··· 56 55 #define __io_address(n) __io(IO_ADDRESS(n)) 57 56 #define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE) 58 57 #define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE) 59 - 60 - static void vic_mask_irq(unsigned int irq) 61 - { 62 - irq -= IRQ_VIC_START; 63 - writel(1 << irq, VA_VIC_BASE + VIC_IRQ_ENABLE_CLEAR); 64 - } 65 - 66 - static void vic_unmask_irq(unsigned int irq) 67 - { 68 - irq -= IRQ_VIC_START; 69 - writel(1 << irq, VA_VIC_BASE + VIC_IRQ_ENABLE); 70 - } 71 - 72 - static struct irqchip vic_chip = { 73 - .ack = vic_mask_irq, 74 - .mask = vic_mask_irq, 75 - .unmask = vic_unmask_irq, 76 - }; 77 58 78 59 static void sic_mask_irq(unsigned int irq) 79 60 { ··· 110 127 111 128 void __init versatile_init_irq(void) 112 129 { 113 - unsigned int i, value; 130 + unsigned int i; 114 131 115 - /* Disable all interrupts initially. */ 116 - 117 - writel(0, VA_VIC_BASE + VIC_INT_SELECT); 118 - writel(0, VA_VIC_BASE + VIC_IRQ_ENABLE); 119 - writel(~0, VA_VIC_BASE + VIC_IRQ_ENABLE_CLEAR); 120 - writel(0, VA_VIC_BASE + VIC_IRQ_STATUS); 121 - writel(0, VA_VIC_BASE + VIC_ITCR); 122 - writel(~0, VA_VIC_BASE + VIC_IRQ_SOFT_CLEAR); 123 - 124 - /* 125 - * Make sure we clear all existing interrupts 126 - */ 127 - writel(0, VA_VIC_BASE + VIC_VECT_ADDR); 128 - for (i = 0; i < 19; i++) { 129 - value = readl(VA_VIC_BASE + VIC_VECT_ADDR); 130 - writel(value, VA_VIC_BASE + VIC_VECT_ADDR); 131 - } 132 - 133 - for (i = 0; i < 16; i++) { 134 - value = readl(VA_VIC_BASE + VIC_VECT_CNTL0 + (i * 4)); 135 - writel(value | VICVectCntl_Enable | i, VA_VIC_BASE + VIC_VECT_CNTL0 + (i * 4)); 136 - } 137 - 138 - writel(32, VA_VIC_BASE + VIC_DEF_VECT_ADDR); 139 - 140 - for (i = IRQ_VIC_START; i <= IRQ_VIC_END; i++) { 141 - if (i != IRQ_VICSOURCE31) { 142 - set_irq_chip(i, &vic_chip); 143 - set_irq_handler(i, do_level_IRQ); 144 - set_irq_flags(i, IRQF_VALID | IRQF_PROBE); 145 - } 146 - } 132 + vic_init(VA_VIC_BASE, ~(1 << 31)); 147 133 148 134 set_irq_handler(IRQ_VICSOURCE31, sic_handle_irq); 149 - vic_unmask_irq(IRQ_VICSOURCE31); 135 + enable_irq(IRQ_VICSOURCE31); 150 136 151 137 /* Do second interrupt controller */ 152 138 writel(~0, VA_SIC_BASE + SIC_IRQ_ENABLE_CLEAR); ··· 829 877 ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; 830 878 do { 831 879 ticks1 = ticks2; 832 - status = __raw_readl(VA_IC_BASE + VIC_IRQ_RAW_STATUS); 880 + status = __raw_readl(VA_IC_BASE + VIC_RAW_STATUS); 833 881 ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; 834 882 } while (ticks2 > ticks1); 835 883
-1
arch/arm/mach-versatile/versatile_ab.c
··· 36 36 37 37 MACHINE_START(VERSATILE_AB, "ARM-Versatile AB") 38 38 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ 39 - .phys_ram = 0x00000000, 40 39 .phys_io = 0x101f1000, 41 40 .io_pg_offst = ((0xf11f1000) >> 18) & 0xfffc, 42 41 .boot_params = 0x00000100,
-1
arch/arm/mach-versatile/versatile_pb.c
··· 100 100 101 101 MACHINE_START(VERSATILE_PB, "ARM-Versatile PB") 102 102 /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ 103 - .phys_ram = 0x00000000, 104 103 .phys_io = 0x101f1000, 105 104 .io_pg_offst = ((0xf11f1000) >> 18) & 0xfffc, 106 105 .boot_params = 0x00000100,
+2 -2
arch/arm/nwfpe/fpa11.h
··· 62 62 #else 63 63 u32 padding[3]; 64 64 #endif 65 - } FPREG; 65 + } __attribute__ ((packed,aligned(4))) FPREG; 66 66 67 67 /* 68 68 * FPA11 device model. ··· 89 89 so we can use it to detect whether this 90 90 instance of the emulator needs to be 91 91 initialised. */ 92 - } FPA11; 92 + } __attribute__ ((packed,aligned(4))) FPA11; 93 93 94 94 extern int8 SetRoundingMode(const unsigned int); 95 95 extern int8 SetRoundingPrecision(const unsigned int);
-3
arch/arm/plat-omap/Kconfig
··· 22 22 config OMAP_RESET_CLOCKS 23 23 bool "Reset unused clocks during boot" 24 24 depends on ARCH_OMAP 25 - default n 26 25 help 27 26 Say Y if you want to reset unused clocks during boot. 28 27 This option saves power, but assumes all drivers are ··· 43 44 config OMAP_MUX_DEBUG 44 45 bool "Multiplexing debug output" 45 46 depends on OMAP_MUX 46 - default n 47 47 help 48 48 Makes the multiplexing functions print out a lot of debug info. 49 49 This is useful if you want to find out the correct values of the ··· 91 93 92 94 config OMAP_DM_TIMER 93 95 bool "Use dual-mode timer" 94 - default n 95 96 depends on ARCH_OMAP16XX 96 97 help 97 98 Select this option if you want to use OMAP Dual-Mode timers.
+1 -1
drivers/serial/imx.c
··· 499 499 ucr2 |= UCR2_STPB; 500 500 if (termios->c_cflag & PARENB) { 501 501 ucr2 |= UCR2_PREN; 502 - if (!(termios->c_cflag & PARODD)) 502 + if (termios->c_cflag & PARODD) 503 503 ucr2 |= UCR2_PROE; 504 504 } 505 505
+10
include/asm-arm/arch-ixp2000/ixp2000-regs.h
··· 26 26 * fc000000 da000000 16M PCI CFG0 27 27 * fd000000 d8000000 16M PCI I/O 28 28 * fe[0-7]00000 8M per-platform mappings 29 + * fe900000 80000000 1M SRAM #0 (first MB) 30 + * fea00000 cb400000 1M SCRATCH ring get/put 29 31 * feb00000 c8000000 1M MSF 30 32 * fec00000 df000000 1M PCI CSRs 31 33 * fed00000 de000000 1M PCI CREG ··· 92 90 #define IXP2000_MSF_PHYS_BASE 0xc8000000 93 91 #define IXP2000_MSF_VIRT_BASE 0xfeb00000 94 92 #define IXP2000_MSF_SIZE 0x00100000 93 + 94 + #define IXP2000_SCRATCH_RING_PHYS_BASE 0xcb400000 95 + #define IXP2000_SCRATCH_RING_VIRT_BASE 0xfea00000 96 + #define IXP2000_SCRATCH_RING_SIZE 0x00100000 97 + 98 + #define IXP2000_SRAM0_PHYS_BASE 0x80000000 99 + #define IXP2000_SRAM0_VIRT_BASE 0xfe900000 100 + #define IXP2000_SRAM0_SIZE 0x00100000 95 101 96 102 #define IXP2000_PCI_IO_PHYS_BASE 0xd8000000 97 103 #define IXP2000_PCI_IO_VIRT_BASE 0xfd000000
+1
include/asm-arm/arch-versatile/entry-macro.S
··· 8 8 * warranty of any kind, whether express or implied. 9 9 */ 10 10 #include <asm/hardware.h> 11 + #include <asm/hardware/vic.h> 11 12 12 13 .macro disable_fiq 13 14 .endm
+1 -22
include/asm-arm/arch-versatile/platform.h
··· 293 293 * VERSATILE_SYS_IC 294 294 * 295 295 */ 296 - #define VIC_IRQ_STATUS 0 297 - #define VIC_FIQ_STATUS 0x04 298 - #define VIC_IRQ_RAW_STATUS 0x08 299 - #define VIC_INT_SELECT 0x0C /* 1 = FIQ, 0 = IRQ */ 300 - #define VIC_IRQ_ENABLE 0x10 /* 1 = enable, 0 = disable */ 301 - #define VIC_IRQ_ENABLE_CLEAR 0x14 302 - #define VIC_IRQ_SOFT 0x18 303 - #define VIC_IRQ_SOFT_CLEAR 0x1C 304 - #define VIC_PROTECT 0x20 305 - #define VIC_VECT_ADDR 0x30 306 - #define VIC_DEF_VECT_ADDR 0x34 307 - #define VIC_VECT_ADDR0 0x100 /* 0 to 15 */ 308 - #define VIC_VECT_CNTL0 0x200 /* 0 to 15 */ 309 - #define VIC_ITCR 0x300 /* VIC test control register */ 310 - 311 - #define VIC_FIQ_RAW_STATUS 0x08 312 - #define VIC_FIQ_ENABLE 0x10 /* 1 = enable, 0 = disable */ 313 - #define VIC_FIQ_ENABLE_CLEAR 0x14 314 - #define VIC_FIQ_SOFT 0x18 315 - #define VIC_FIQ_SOFT_CLEAR 0x1C 296 + /* VIC definitions in include/asm-arm/hardware/vic.h */ 316 297 317 298 #define SIC_IRQ_STATUS 0 318 299 #define SIC_IRQ_RAW_STATUS 0x04 ··· 305 324 #define SIC_INT_PIC_ENABLE 0x20 /* read status of pass through mask */ 306 325 #define SIC_INT_PIC_ENABLES 0x20 /* set interrupt pass through bits */ 307 326 #define SIC_INT_PIC_ENABLEC 0x24 /* Clear interrupt pass through bits */ 308 - 309 - #define VICVectCntl_Enable (1 << 5) 310 327 311 328 /* ------------------------------------------------------------------------ 312 329 * Interrupts - bit assignment (primary)
+45
include/asm-arm/hardware/vic.h
··· 1 + /* 2 + * linux/include/asm-arm/hardware/vic.h 3 + * 4 + * Copyright (c) ARM Limited 2003. All rights reserved. 5 + * 6 + * This program is free software; you can redistribute it and/or modify 7 + * it under the terms of the GNU General Public License as published by 8 + * the Free Software Foundation; either version 2 of the License, or 9 + * (at your option) any later version. 10 + * 11 + * This program is distributed in the hope that it will be useful, 12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + * GNU General Public License for more details. 15 + * 16 + * You should have received a copy of the GNU General Public License 17 + * along with this program; if not, write to the Free Software 18 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 + */ 20 + #ifndef __ASM_ARM_HARDWARE_VIC_H 21 + #define __ASM_ARM_HARDWARE_VIC_H 22 + 23 + #define VIC_IRQ_STATUS 0x00 24 + #define VIC_FIQ_STATUS 0x04 25 + #define VIC_RAW_STATUS 0x08 26 + #define VIC_INT_SELECT 0x0c /* 1 = FIQ, 0 = IRQ */ 27 + #define VIC_INT_ENABLE 0x10 /* 1 = enable, 0 = disable */ 28 + #define VIC_INT_ENABLE_CLEAR 0x14 29 + #define VIC_INT_SOFT 0x18 30 + #define VIC_INT_SOFT_CLEAR 0x1c 31 + #define VIC_PROTECT 0x20 32 + #define VIC_VECT_ADDR 0x30 33 + #define VIC_DEF_VECT_ADDR 0x34 34 + 35 + #define VIC_VECT_ADDR0 0x100 /* 0 to 15 */ 36 + #define VIC_VECT_CNTL0 0x200 /* 0 to 15 */ 37 + #define VIC_ITCR 0x300 /* VIC test control register */ 38 + 39 + #define VIC_VECT_CNTL_ENABLE (1 << 5) 40 + 41 + #ifndef __ASSEMBLY__ 42 + void vic_init(void __iomem *base, u32 vic_sources); 43 + #endif 44 + 45 + #endif
+1 -1
include/asm-arm/mach/arch.h
··· 20 20 * by assembler code in head-armv.S 21 21 */ 22 22 unsigned int nr; /* architecture number */ 23 - unsigned int phys_ram; /* start of physical ram */ 23 + unsigned int __deprecated phys_ram; /* start of physical ram */ 24 24 unsigned int phys_io; /* start of physical io */ 25 25 unsigned int io_pg_offst; /* byte offset for io 26 26 * page tabe entry */
+7
include/asm-arm/page.h
··· 170 170 #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ 171 171 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 172 172 173 + /* 174 + * With EABI on ARMv5 and above we must have 64-bit aligned slab pointers. 175 + */ 176 + #if defined(CONFIG_AEABI) && (__LINUX_ARM_ARCH__ >= 5) 177 + #define ARCH_SLAB_MINALIGN 8 178 + #endif 179 + 173 180 #endif /* __KERNEL__ */ 174 181 175 182 #include <asm-generic/page.h>
+7
include/asm-arm/processor.h
··· 49 49 50 50 #define INIT_THREAD { } 51 51 52 + #ifdef CONFIG_MMU 53 + #define nommu_start_thread(regs) do { } while (0) 54 + #else 55 + #define nommu_start_thread(regs) regs->ARM_r10 = current->mm->start_data 56 + #endif 57 + 52 58 #define start_thread(regs,pc,sp) \ 53 59 ({ \ 54 60 unsigned long *stack = (unsigned long *)sp; \ ··· 71 65 regs->ARM_r2 = stack[2]; /* r2 (envp) */ \ 72 66 regs->ARM_r1 = stack[1]; /* r1 (argv) */ \ 73 67 regs->ARM_r0 = stack[0]; /* r0 (argc) */ \ 68 + nommu_start_thread(regs); \ 74 69 }) 75 70 76 71 /* Forward declaration, a strange C thing */
+8 -3
include/asm-arm/ptrace.h
··· 23 23 #define PTRACE_OLDSETOPTIONS 21 24 24 25 25 #define PTRACE_GET_THREAD_AREA 22 26 + 27 + #define PTRACE_SET_SYSCALL 23 28 + 26 29 /* 27 30 * PSR bits 28 31 */ ··· 63 60 64 61 #ifndef __ASSEMBLY__ 65 62 66 - /* this struct defines the way the registers are stored on the 67 - stack during a system call. */ 68 - 63 + /* 64 + * This struct defines the way the registers are stored on the 65 + * stack during a system call. Note that sizeof(struct pt_regs) 66 + * has to be a multiple of 8. 67 + */ 69 68 struct pt_regs { 70 69 long uregs[18]; 71 70 };
+2 -9
include/asm-arm/stat.h
··· 70 70 71 71 long long st_size; 72 72 unsigned long st_blksize; 73 - 74 - #if defined(__ARMEB__) 75 - unsigned long __pad4; /* Future possible st_blocks hi bits */ 76 - unsigned long st_blocks; /* Number 512-byte blocks allocated. */ 77 - #else /* Must be little */ 78 - unsigned long st_blocks; /* Number 512-byte blocks allocated. */ 79 - unsigned long __pad4; /* Future possible st_blocks hi bits */ 80 - #endif 73 + unsigned long long st_blocks; /* Number 512-byte blocks allocated. */ 81 74 82 75 unsigned long st_atime; 83 76 unsigned long st_atime_nsec; ··· 82 89 unsigned long st_ctime_nsec; 83 90 84 91 unsigned long long st_ino; 85 - } __attribute__((packed)); 92 + }; 86 93 87 94 #endif
+37 -1
include/asm-arm/statfs.h
··· 1 1 #ifndef _ASMARM_STATFS_H 2 2 #define _ASMARM_STATFS_H 3 3 4 - #include <asm-generic/statfs.h> 4 + #ifndef __KERNEL_STRICT_NAMES 5 + # include <linux/types.h> 6 + typedef __kernel_fsid_t fsid_t; 7 + #endif 8 + 9 + struct statfs { 10 + __u32 f_type; 11 + __u32 f_bsize; 12 + __u32 f_blocks; 13 + __u32 f_bfree; 14 + __u32 f_bavail; 15 + __u32 f_files; 16 + __u32 f_ffree; 17 + __kernel_fsid_t f_fsid; 18 + __u32 f_namelen; 19 + __u32 f_frsize; 20 + __u32 f_spare[5]; 21 + }; 22 + 23 + /* 24 + * With EABI there is 4 bytes of padding added to this structure. 25 + * Let's pack it so the padding goes away to simplify dual ABI support. 26 + * Note that user space does NOT have to pack this structure. 27 + */ 28 + struct statfs64 { 29 + __u32 f_type; 30 + __u32 f_bsize; 31 + __u64 f_blocks; 32 + __u64 f_bfree; 33 + __u64 f_bavail; 34 + __u64 f_files; 35 + __u64 f_ffree; 36 + __kernel_fsid_t f_fsid; 37 + __u32 f_namelen; 38 + __u32 f_frsize; 39 + __u32 f_spare[5]; 40 + } __attribute__ ((packed,aligned(4))); 5 41 6 42 #endif
+36 -29
include/asm-arm/unistd.h
··· 15 15 16 16 #include <linux/linkage.h> 17 17 18 - #if defined(__thumb__) 18 + #define __NR_OABI_SYSCALL_BASE 0x900000 19 + 20 + #if defined(__thumb__) || defined(__ARM_EABI__) 19 21 #define __NR_SYSCALL_BASE 0 20 22 #else 21 - #define __NR_SYSCALL_BASE 0x900000 23 + #define __NR_SYSCALL_BASE __NR_OABI_SYSCALL_BASE 22 24 #endif 23 25 24 26 /* ··· 375 373 #define __sys1(x) __sys2(x) 376 374 377 375 #ifndef __syscall 378 - #if defined(__thumb__) 379 - #define __syscall(name) \ 380 - "push {r7}\n\t" \ 381 - "mov r7, #" __sys1(__NR_##name) "\n\t" \ 382 - "swi 0\n\t" \ 383 - "pop {r7}" 376 + #if defined(__thumb__) || defined(__ARM_EABI__) 377 + #define __SYS_REG(name) register long __sysreg __asm__("r7") = __NR_##name; 378 + #define __SYS_REG_LIST(regs...) "r" (__sysreg) , ##regs 379 + #define __syscall(name) "swi\t0" 384 380 #else 381 + #define __SYS_REG(name) 382 + #define __SYS_REG_LIST(regs...) regs 385 383 #define __syscall(name) "swi\t" __sys1(__NR_##name) "" 386 384 #endif 387 385 #endif ··· 397 395 398 396 #define _syscall0(type,name) \ 399 397 type name(void) { \ 398 + __SYS_REG(name) \ 400 399 register long __res_r0 __asm__("r0"); \ 401 400 long __res; \ 402 401 __asm__ __volatile__ ( \ 403 402 __syscall(name) \ 404 403 : "=r" (__res_r0) \ 405 - : \ 406 - : "lr"); \ 404 + : __SYS_REG_LIST() ); \ 407 405 __res = __res_r0; \ 408 406 __syscall_return(type,__res); \ 409 407 } 410 408 411 409 #define _syscall1(type,name,type1,arg1) \ 412 410 type name(type1 arg1) { \ 411 + __SYS_REG(name) \ 413 412 register long __r0 __asm__("r0") = (long)arg1; \ 414 413 register long __res_r0 __asm__("r0"); \ 415 414 long __res; \ 416 415 __asm__ __volatile__ ( \ 417 416 __syscall(name) \ 418 417 : "=r" (__res_r0) \ 419 - : "r" (__r0) \ 420 - : "lr"); \ 418 + : __SYS_REG_LIST( "0" (__r0) ) ); \ 421 419 __res = __res_r0; \ 422 420 __syscall_return(type,__res); \ 423 421 } 424 422 425 423 #define _syscall2(type,name,type1,arg1,type2,arg2) \ 426 424 type name(type1 arg1,type2 arg2) { \ 425 + __SYS_REG(name) \ 427 426 register long __r0 __asm__("r0") = (long)arg1; \ 428 427 register long __r1 __asm__("r1") = (long)arg2; \ 429 428 register long __res_r0 __asm__("r0"); \ ··· 432 429 __asm__ __volatile__ ( \ 433 430 __syscall(name) \ 434 431 : "=r" (__res_r0) \ 435 - : "r" (__r0),"r" (__r1) \ 436 - : "lr"); \ 432 + : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) ); \ 437 433 __res = __res_r0; \ 438 434 __syscall_return(type,__res); \ 439 435 } ··· 440 438 441 439 #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ 442 440 type name(type1 arg1,type2 arg2,type3 arg3) { \ 441 + __SYS_REG(name) \ 443 442 register long __r0 __asm__("r0") = (long)arg1; \ 444 443 register long __r1 __asm__("r1") = (long)arg2; \ 445 444 register long __r2 __asm__("r2") = (long)arg3; \ ··· 449 446 __asm__ __volatile__ ( \ 450 447 __syscall(name) \ 451 448 : "=r" (__res_r0) \ 452 - : "r" (__r0),"r" (__r1),"r" (__r2) \ 453 - : "lr"); \ 449 + : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) ); \ 454 450 __res = __res_r0; \ 455 451 __syscall_return(type,__res); \ 456 452 } ··· 457 455 458 456 #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\ 459 457 type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ 458 + __SYS_REG(name) \ 460 459 register long __r0 __asm__("r0") = (long)arg1; \ 461 460 register long __r1 __asm__("r1") = (long)arg2; \ 462 461 register long __r2 __asm__("r2") = (long)arg3; \ ··· 467 464 __asm__ __volatile__ ( \ 468 465 __syscall(name) \ 469 466 : "=r" (__res_r0) \ 470 - : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3) \ 471 - : "lr"); \ 467 + : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) ); \ 472 468 __res = __res_r0; \ 473 469 __syscall_return(type,__res); \ 474 470 } ··· 475 473 476 474 #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ 477 475 type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ 476 + __SYS_REG(name) \ 478 477 register long __r0 __asm__("r0") = (long)arg1; \ 479 478 register long __r1 __asm__("r1") = (long)arg2; \ 480 479 register long __r2 __asm__("r2") = (long)arg3; \ ··· 486 483 __asm__ __volatile__ ( \ 487 484 __syscall(name) \ 488 485 : "=r" (__res_r0) \ 489 - : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3),"r" (__r4) \ 490 - : "lr"); \ 486 + : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ 487 + "r" (__r3), "r" (__r4) ) ); \ 491 488 __res = __res_r0; \ 492 489 __syscall_return(type,__res); \ 493 490 } 494 491 495 492 #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ 496 493 type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \ 494 + __SYS_REG(name) \ 497 495 register long __r0 __asm__("r0") = (long)arg1; \ 498 496 register long __r1 __asm__("r1") = (long)arg2; \ 499 497 register long __r2 __asm__("r2") = (long)arg3; \ ··· 506 502 __asm__ __volatile__ ( \ 507 503 __syscall(name) \ 508 504 : "=r" (__res_r0) \ 509 - : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3), "r" (__r4),"r" (__r5) \ 510 - : "lr"); \ 505 + : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ 506 + "r" (__r3), "r" (__r4), "r" (__r5) ) ); \ 511 507 __res = __res_r0; \ 512 508 __syscall_return(type,__res); \ 513 509 } 514 510 515 511 #ifdef __KERNEL__ 516 512 #define __ARCH_WANT_IPC_PARSE_VERSION 517 - #define __ARCH_WANT_OLD_READDIR 518 513 #define __ARCH_WANT_STAT64 519 - #define __ARCH_WANT_SYS_ALARM 520 514 #define __ARCH_WANT_SYS_GETHOSTNAME 521 515 #define __ARCH_WANT_SYS_PAUSE 522 - #define __ARCH_WANT_SYS_TIME 523 - #define __ARCH_WANT_SYS_UTIME 524 - #define __ARCH_WANT_SYS_SOCKETCALL 525 516 #define __ARCH_WANT_SYS_GETPGRP 526 517 #define __ARCH_WANT_SYS_LLSEEK 527 518 #define __ARCH_WANT_SYS_NICE 528 - #define __ARCH_WANT_SYS_OLD_GETRLIMIT 529 - #define __ARCH_WANT_SYS_OLDUMOUNT 530 519 #define __ARCH_WANT_SYS_SIGPENDING 531 520 #define __ARCH_WANT_SYS_SIGPROCMASK 532 521 #define __ARCH_WANT_SYS_RT_SIGACTION 522 + 523 + #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) 524 + #define __ARCH_WANT_SYS_TIME 525 + #define __ARCH_WANT_SYS_OLDUMOUNT 526 + #define __ARCH_WANT_SYS_ALARM 527 + #define __ARCH_WANT_SYS_UTIME 528 + #define __ARCH_WANT_SYS_OLD_GETRLIMIT 529 + #define __ARCH_WANT_OLD_READDIR 530 + #define __ARCH_WANT_SYS_SOCKETCALL 531 + #endif 533 532 #endif 534 533 535 534 #ifdef __KERNEL_SYSCALLS__