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

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