diff options
Diffstat (limited to 'arch/ppc')
29 files changed, 72 insertions, 899 deletions
diff --git a/arch/ppc/kernel/asm-offsets.c b/arch/ppc/kernel/asm-offsets.c index 7964bf660e..77e4dc780f 100644 --- a/arch/ppc/kernel/asm-offsets.c +++ b/arch/ppc/kernel/asm-offsets.c | |||
@@ -131,7 +131,6 @@ main(void) | |||
131 | DEFINE(CPU_SPEC_FEATURES, offsetof(struct cpu_spec, cpu_features)); | 131 | DEFINE(CPU_SPEC_FEATURES, offsetof(struct cpu_spec, cpu_features)); |
132 | DEFINE(CPU_SPEC_SETUP, offsetof(struct cpu_spec, cpu_setup)); | 132 | DEFINE(CPU_SPEC_SETUP, offsetof(struct cpu_spec, cpu_setup)); |
133 | 133 | ||
134 | DEFINE(TI_SIGFRAME, offsetof(struct thread_info, nvgprs_frame)); | ||
135 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); | 134 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); |
136 | DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain)); | 135 | DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain)); |
137 | DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); | 136 | DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); |
diff --git a/arch/ppc/kernel/entry.S b/arch/ppc/kernel/entry.S index a48b950722..3a28159784 100644 --- a/arch/ppc/kernel/entry.S +++ b/arch/ppc/kernel/entry.S | |||
@@ -227,7 +227,7 @@ ret_from_syscall: | |||
227 | MTMSRD(r10) | 227 | MTMSRD(r10) |
228 | lwz r9,TI_FLAGS(r12) | 228 | lwz r9,TI_FLAGS(r12) |
229 | li r8,-_LAST_ERRNO | 229 | li r8,-_LAST_ERRNO |
230 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_RESTOREALL) | 230 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK) |
231 | bne- syscall_exit_work | 231 | bne- syscall_exit_work |
232 | cmplw 0,r3,r8 | 232 | cmplw 0,r3,r8 |
233 | blt+ syscall_exit_cont | 233 | blt+ syscall_exit_cont |
@@ -287,8 +287,10 @@ syscall_dotrace: | |||
287 | 287 | ||
288 | syscall_exit_work: | 288 | syscall_exit_work: |
289 | andi. r0,r9,_TIF_RESTOREALL | 289 | andi. r0,r9,_TIF_RESTOREALL |
290 | bne- 2f | 290 | beq+ 0f |
291 | cmplw 0,r3,r8 | 291 | REST_NVGPRS(r1) |
292 | b 2f | ||
293 | 0: cmplw 0,r3,r8 | ||
292 | blt+ 1f | 294 | blt+ 1f |
293 | andi. r0,r9,_TIF_NOERROR | 295 | andi. r0,r9,_TIF_NOERROR |
294 | bne- 1f | 296 | bne- 1f |
@@ -302,9 +304,7 @@ syscall_exit_work: | |||
302 | 2: andi. r0,r9,(_TIF_PERSYSCALL_MASK) | 304 | 2: andi. r0,r9,(_TIF_PERSYSCALL_MASK) |
303 | beq 4f | 305 | beq 4f |
304 | 306 | ||
305 | /* Clear per-syscall TIF flags if any are set, but _leave_ | 307 | /* Clear per-syscall TIF flags if any are set. */ |
306 | _TIF_SAVE_NVGPRS set in r9 since we haven't dealt with that | ||
307 | yet. */ | ||
308 | 308 | ||
309 | li r11,_TIF_PERSYSCALL_MASK | 309 | li r11,_TIF_PERSYSCALL_MASK |
310 | addi r12,r12,TI_FLAGS | 310 | addi r12,r12,TI_FLAGS |
@@ -318,8 +318,13 @@ syscall_exit_work: | |||
318 | subi r12,r12,TI_FLAGS | 318 | subi r12,r12,TI_FLAGS |
319 | 319 | ||
320 | 4: /* Anything which requires enabling interrupts? */ | 320 | 4: /* Anything which requires enabling interrupts? */ |
321 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_SAVE_NVGPRS) | 321 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP) |
322 | beq 7f | 322 | beq ret_from_except |
323 | |||
324 | /* Re-enable interrupts */ | ||
325 | ori r10,r10,MSR_EE | ||
326 | SYNC | ||
327 | MTMSRD(r10) | ||
323 | 328 | ||
324 | /* Save NVGPRS if they're not saved already */ | 329 | /* Save NVGPRS if they're not saved already */ |
325 | lwz r4,TRAP(r1) | 330 | lwz r4,TRAP(r1) |
@@ -328,71 +333,11 @@ syscall_exit_work: | |||
328 | SAVE_NVGPRS(r1) | 333 | SAVE_NVGPRS(r1) |
329 | li r4,0xc00 | 334 | li r4,0xc00 |
330 | stw r4,TRAP(r1) | 335 | stw r4,TRAP(r1) |
331 | 336 | 5: | |
332 | /* Re-enable interrupts */ | ||
333 | 5: ori r10,r10,MSR_EE | ||
334 | SYNC | ||
335 | MTMSRD(r10) | ||
336 | |||
337 | andi. r0,r9,_TIF_SAVE_NVGPRS | ||
338 | bne save_user_nvgprs | ||
339 | |||
340 | save_user_nvgprs_cont: | ||
341 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP) | ||
342 | beq 7f | ||
343 | |||
344 | addi r3,r1,STACK_FRAME_OVERHEAD | 337 | addi r3,r1,STACK_FRAME_OVERHEAD |
345 | bl do_syscall_trace_leave | 338 | bl do_syscall_trace_leave |
346 | REST_NVGPRS(r1) | 339 | b ret_from_except_full |
347 | |||
348 | 6: lwz r3,GPR3(r1) | ||
349 | LOAD_MSR_KERNEL(r10,MSR_KERNEL) /* doesn't include MSR_EE */ | ||
350 | SYNC | ||
351 | MTMSRD(r10) /* disable interrupts again */ | ||
352 | rlwinm r12,r1,0,0,18 /* current_thread_info() */ | ||
353 | lwz r9,TI_FLAGS(r12) | ||
354 | 7: | ||
355 | andi. r0,r9,_TIF_NEED_RESCHED | ||
356 | bne 8f | ||
357 | lwz r5,_MSR(r1) | ||
358 | andi. r5,r5,MSR_PR | ||
359 | beq ret_from_except | ||
360 | andi. r0,r9,_TIF_SIGPENDING | ||
361 | beq ret_from_except | ||
362 | b do_user_signal | ||
363 | 8: | ||
364 | ori r10,r10,MSR_EE | ||
365 | SYNC | ||
366 | MTMSRD(r10) /* re-enable interrupts */ | ||
367 | bl schedule | ||
368 | b 6b | ||
369 | |||
370 | save_user_nvgprs: | ||
371 | lwz r8,TI_SIGFRAME(r12) | ||
372 | |||
373 | .macro savewords start, end | ||
374 | 1: stw \start,4*(\start)(r8) | ||
375 | .section __ex_table,"a" | ||
376 | .align 2 | ||
377 | .long 1b,save_user_nvgprs_fault | ||
378 | .previous | ||
379 | .if \end - \start | ||
380 | savewords "(\start+1)",\end | ||
381 | .endif | ||
382 | .endm | ||
383 | savewords 14,31 | ||
384 | b save_user_nvgprs_cont | ||
385 | |||
386 | |||
387 | save_user_nvgprs_fault: | ||
388 | li r3,11 /* SIGSEGV */ | ||
389 | lwz r4,TI_TASK(r12) | ||
390 | bl force_sigsegv | ||
391 | 340 | ||
392 | rlwinm r12,r1,0,0,18 /* current_thread_info() */ | ||
393 | lwz r9,TI_FLAGS(r12) | ||
394 | b save_user_nvgprs_cont | ||
395 | |||
396 | #ifdef SHOW_SYSCALLS | 341 | #ifdef SHOW_SYSCALLS |
397 | do_show_syscall: | 342 | do_show_syscall: |
398 | #ifdef SHOW_SYSCALLS_TASK | 343 | #ifdef SHOW_SYSCALLS_TASK |
@@ -490,6 +435,14 @@ ppc_clone: | |||
490 | stw r0,TRAP(r1) /* register set saved */ | 435 | stw r0,TRAP(r1) /* register set saved */ |
491 | b sys_clone | 436 | b sys_clone |
492 | 437 | ||
438 | .globl ppc_swapcontext | ||
439 | ppc_swapcontext: | ||
440 | SAVE_NVGPRS(r1) | ||
441 | lwz r0,TRAP(r1) | ||
442 | rlwinm r0,r0,0,0,30 /* clear LSB to indicate full */ | ||
443 | stw r0,TRAP(r1) /* register set saved */ | ||
444 | b sys_swapcontext | ||
445 | |||
493 | /* | 446 | /* |
494 | * Top-level page fault handling. | 447 | * Top-level page fault handling. |
495 | * This is in assembler because if do_page_fault tells us that | 448 | * This is in assembler because if do_page_fault tells us that |
@@ -683,7 +636,7 @@ user_exc_return: /* r10 contains MSR_KERNEL here */ | |||
683 | /* Check current_thread_info()->flags */ | 636 | /* Check current_thread_info()->flags */ |
684 | rlwinm r9,r1,0,0,18 | 637 | rlwinm r9,r1,0,0,18 |
685 | lwz r9,TI_FLAGS(r9) | 638 | lwz r9,TI_FLAGS(r9) |
686 | andi. r0,r9,(_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_RESTOREALL) | 639 | andi. r0,r9,(_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK|_TIF_NEED_RESCHED) |
687 | bne do_work | 640 | bne do_work |
688 | 641 | ||
689 | restore_user: | 642 | restore_user: |
diff --git a/arch/ppc/kernel/head.S b/arch/ppc/kernel/head.S index c5a890dca9..53ea845fb9 100644 --- a/arch/ppc/kernel/head.S +++ b/arch/ppc/kernel/head.S | |||
@@ -751,6 +751,7 @@ AltiVecUnavailable: | |||
751 | #ifdef CONFIG_ALTIVEC | 751 | #ifdef CONFIG_ALTIVEC |
752 | bne load_up_altivec /* if from user, just load it up */ | 752 | bne load_up_altivec /* if from user, just load it up */ |
753 | #endif /* CONFIG_ALTIVEC */ | 753 | #endif /* CONFIG_ALTIVEC */ |
754 | addi r3,r1,STACK_FRAME_OVERHEAD | ||
754 | EXC_XFER_EE_LITE(0xf20, altivec_unavailable_exception) | 755 | EXC_XFER_EE_LITE(0xf20, altivec_unavailable_exception) |
755 | 756 | ||
756 | #ifdef CONFIG_PPC64BRIDGE | 757 | #ifdef CONFIG_PPC64BRIDGE |
diff --git a/arch/ppc/kernel/head_8xx.S b/arch/ppc/kernel/head_8xx.S index 3e6ca7f584..c1e89ad068 100644 --- a/arch/ppc/kernel/head_8xx.S +++ b/arch/ppc/kernel/head_8xx.S | |||
@@ -810,13 +810,16 @@ initial_mmu: | |||
810 | mtspr SPRN_MD_TWC, r9 | 810 | mtspr SPRN_MD_TWC, r9 |
811 | li r11, MI_BOOTINIT /* Create RPN for address 0 */ | 811 | li r11, MI_BOOTINIT /* Create RPN for address 0 */ |
812 | addis r11, r11, 0x0080 /* Add 8M */ | 812 | addis r11, r11, 0x0080 /* Add 8M */ |
813 | mtspr SPRN_MD_RPN, r8 | 813 | mtspr SPRN_MD_RPN, r11 |
814 | |||
815 | addi r10, r10, 0x0100 | ||
816 | mtspr SPRN_MD_CTR, r10 | ||
814 | 817 | ||
815 | addis r8, r8, 0x0080 /* Add 8M */ | 818 | addis r8, r8, 0x0080 /* Add 8M */ |
816 | mtspr SPRN_MD_EPN, r8 | 819 | mtspr SPRN_MD_EPN, r8 |
817 | mtspr SPRN_MD_TWC, r9 | 820 | mtspr SPRN_MD_TWC, r9 |
818 | addis r11, r11, 0x0080 /* Add 8M */ | 821 | addis r11, r11, 0x0080 /* Add 8M */ |
819 | mtspr SPRN_MD_RPN, r8 | 822 | mtspr SPRN_MD_RPN, r11 |
820 | #endif | 823 | #endif |
821 | 824 | ||
822 | /* Since the cache is enabled according to the information we | 825 | /* Since the cache is enabled according to the information we |
diff --git a/arch/ppc/kernel/misc.S b/arch/ppc/kernel/misc.S index c3427eed83..5a936566fd 100644 --- a/arch/ppc/kernel/misc.S +++ b/arch/ppc/kernel/misc.S | |||
@@ -1048,286 +1048,3 @@ _GLOBAL(name) \ | |||
1048 | blr | 1048 | blr |
1049 | 1049 | ||
1050 | SYSCALL(execve) | 1050 | SYSCALL(execve) |
1051 | |||
1052 | /* Why isn't this a) automatic, b) written in 'C'? */ | ||
1053 | .data | ||
1054 | .align 4 | ||
1055 | _GLOBAL(sys_call_table) | ||
1056 | .long sys_restart_syscall /* 0 */ | ||
1057 | .long sys_exit | ||
1058 | .long ppc_fork | ||
1059 | .long sys_read | ||
1060 | .long sys_write | ||
1061 | .long sys_open /* 5 */ | ||
1062 | .long sys_close | ||
1063 | .long sys_waitpid | ||
1064 | .long sys_creat | ||
1065 | .long sys_link | ||
1066 | .long sys_unlink /* 10 */ | ||
1067 | .long sys_execve | ||
1068 | .long sys_chdir | ||
1069 | .long sys_time | ||
1070 | .long sys_mknod | ||
1071 | .long sys_chmod /* 15 */ | ||
1072 | .long sys_lchown | ||
1073 | .long sys_ni_syscall /* old break syscall holder */ | ||
1074 | .long sys_stat | ||
1075 | .long sys_lseek | ||
1076 | .long sys_getpid /* 20 */ | ||
1077 | .long sys_mount | ||
1078 | .long sys_oldumount | ||
1079 | .long sys_setuid | ||
1080 | .long sys_getuid | ||
1081 | .long sys_stime /* 25 */ | ||
1082 | .long sys_ptrace | ||
1083 | .long sys_alarm | ||
1084 | .long sys_fstat | ||
1085 | .long sys_pause | ||
1086 | .long sys_utime /* 30 */ | ||
1087 | .long sys_ni_syscall /* old stty syscall holder */ | ||
1088 | .long sys_ni_syscall /* old gtty syscall holder */ | ||
1089 | .long sys_access | ||
1090 | .long sys_nice | ||
1091 | .long sys_ni_syscall /* 35 */ /* old ftime syscall holder */ | ||
1092 | .long sys_sync | ||
1093 | .long sys_kill | ||
1094 | .long sys_rename | ||
1095 | .long sys_mkdir | ||
1096 | .long sys_rmdir /* 40 */ | ||
1097 | .long sys_dup | ||
1098 | .long sys_pipe | ||
1099 | .long sys_times | ||
1100 | .long sys_ni_syscall /* old prof syscall holder */ | ||
1101 | .long sys_brk /* 45 */ | ||
1102 | .long sys_setgid | ||
1103 | .long sys_getgid | ||
1104 | .long sys_signal | ||
1105 | .long sys_geteuid | ||
1106 | .long sys_getegid /* 50 */ | ||
1107 | .long sys_acct | ||
1108 | .long sys_umount /* recycled never used phys() */ | ||
1109 | .long sys_ni_syscall /* old lock syscall holder */ | ||
1110 | .long sys_ioctl | ||
1111 | .long sys_fcntl /* 55 */ | ||
1112 | .long sys_ni_syscall /* old mpx syscall holder */ | ||
1113 | .long sys_setpgid | ||
1114 | .long sys_ni_syscall /* old ulimit syscall holder */ | ||
1115 | .long sys_olduname | ||
1116 | .long sys_umask /* 60 */ | ||
1117 | .long sys_chroot | ||
1118 | .long sys_ustat | ||
1119 | .long sys_dup2 | ||
1120 | .long sys_getppid | ||
1121 | .long sys_getpgrp /* 65 */ | ||
1122 | .long sys_setsid | ||
1123 | .long sys_sigaction | ||
1124 | .long sys_sgetmask | ||
1125 | .long sys_ssetmask | ||
1126 | .long sys_setreuid /* 70 */ | ||
1127 | .long sys_setregid | ||
1128 | .long sys_sigsuspend | ||
1129 | .long sys_sigpending | ||
1130 | .long sys_sethostname | ||
1131 | .long sys_setrlimit /* 75 */ | ||
1132 | .long sys_old_getrlimit | ||
1133 | .long sys_getrusage | ||
1134 | .long sys_gettimeofday | ||
1135 | .long sys_settimeofday | ||
1136 | .long sys_getgroups /* 80 */ | ||
1137 | .long sys_setgroups | ||
1138 | .long ppc_select | ||
1139 | .long sys_symlink | ||
1140 | .long sys_lstat | ||
1141 | .long sys_readlink /* 85 */ | ||
1142 | .long sys_uselib | ||
1143 | .long sys_swapon | ||
1144 | .long sys_reboot | ||
1145 | .long old_readdir | ||
1146 | .long sys_mmap /* 90 */ | ||
1147 | .long sys_munmap | ||
1148 | .long sys_truncate | ||
1149 | .long sys_ftruncate | ||
1150 | .long sys_fchmod | ||
1151 | .long sys_fchown /* 95 */ | ||
1152 | .long sys_getpriority | ||
1153 | .long sys_setpriority | ||
1154 | .long sys_ni_syscall /* old profil syscall holder */ | ||
1155 | .long sys_statfs | ||
1156 | .long sys_fstatfs /* 100 */ | ||
1157 | .long sys_ni_syscall | ||
1158 | .long sys_socketcall | ||
1159 | .long sys_syslog | ||
1160 | .long sys_setitimer | ||
1161 | .long sys_getitimer /* 105 */ | ||
1162 | .long sys_newstat | ||
1163 | .long sys_newlstat | ||
1164 | .long sys_newfstat | ||
1165 | .long sys_uname | ||
1166 | .long sys_ni_syscall /* 110 */ | ||
1167 | .long sys_vhangup | ||
1168 | .long sys_ni_syscall /* old 'idle' syscall */ | ||
1169 | .long sys_ni_syscall | ||
1170 | .long sys_wait4 | ||
1171 | .long sys_swapoff /* 115 */ | ||
1172 | .long sys_sysinfo | ||
1173 | .long sys_ipc | ||
1174 | .long sys_fsync | ||
1175 | .long sys_sigreturn | ||
1176 | .long ppc_clone /* 120 */ | ||
1177 | .long sys_setdomainname | ||
1178 | .long sys_newuname | ||
1179 | .long sys_ni_syscall | ||
1180 | .long sys_adjtimex | ||
1181 | .long sys_mprotect /* 125 */ | ||
1182 | .long sys_sigprocmask | ||
1183 | .long sys_ni_syscall /* old sys_create_module */ | ||
1184 | .long sys_init_module | ||
1185 | .long sys_delete_module | ||
1186 | .long sys_ni_syscall /* old sys_get_kernel_syms */ /* 130 */ | ||
1187 | .long sys_quotactl | ||
1188 | .long sys_getpgid | ||
1189 | .long sys_fchdir | ||
1190 | .long sys_bdflush | ||
1191 | .long sys_sysfs /* 135 */ | ||
1192 | .long sys_personality | ||
1193 | .long sys_ni_syscall /* for afs_syscall */ | ||
1194 | .long sys_setfsuid | ||
1195 | .long sys_setfsgid | ||
1196 | .long sys_llseek /* 140 */ | ||
1197 | .long sys_getdents | ||
1198 | .long ppc_select | ||
1199 | .long sys_flock | ||
1200 | .long sys_msync | ||
1201 | .long sys_readv /* 145 */ | ||
1202 | .long sys_writev | ||
1203 | .long sys_getsid | ||
1204 | .long sys_fdatasync | ||
1205 | .long sys_sysctl | ||
1206 | .long sys_mlock /* 150 */ | ||
1207 | .long sys_munlock | ||
1208 | .long sys_mlockall | ||
1209 | .long sys_munlockall | ||
1210 | .long sys_sched_setparam | ||
1211 | .long sys_sched_getparam /* 155 */ | ||
1212 | .long sys_sched_setscheduler | ||
1213 | .long sys_sched_getscheduler | ||
1214 | .long sys_sched_yield | ||
1215 | .long sys_sched_get_priority_max | ||
1216 | .long sys_sched_get_priority_min /* 160 */ | ||
1217 | .long sys_sched_rr_get_interval | ||
1218 | .long sys_nanosleep | ||
1219 | .long sys_mremap | ||
1220 | .long sys_setresuid | ||
1221 | .long sys_getresuid /* 165 */ | ||
1222 | .long sys_ni_syscall /* old sys_query_module */ | ||
1223 | .long sys_poll | ||
1224 | .long sys_nfsservctl | ||
1225 | .long sys_setresgid | ||
1226 | .long sys_getresgid /* 170 */ | ||
1227 | .long sys_prctl | ||
1228 | .long sys_rt_sigreturn | ||
1229 | .long sys_rt_sigaction | ||
1230 | .long sys_rt_sigprocmask | ||
1231 | .long sys_rt_sigpending /* 175 */ | ||
1232 | .long sys_rt_sigtimedwait | ||
1233 | .long sys_rt_sigqueueinfo | ||
1234 | .long sys_rt_sigsuspend | ||
1235 | .long sys_pread64 | ||
1236 | .long sys_pwrite64 /* 180 */ | ||
1237 | .long sys_chown | ||
1238 | .long sys_getcwd | ||
1239 | .long sys_capget | ||
1240 | .long sys_capset | ||
1241 | .long sys_sigaltstack /* 185 */ | ||
1242 | .long sys_sendfile | ||
1243 | .long sys_ni_syscall /* streams1 */ | ||
1244 | .long sys_ni_syscall /* streams2 */ | ||
1245 | .long ppc_vfork | ||
1246 | .long sys_getrlimit /* 190 */ | ||
1247 | .long sys_readahead | ||
1248 | .long sys_mmap2 | ||
1249 | .long sys_truncate64 | ||
1250 | .long sys_ftruncate64 | ||
1251 | .long sys_stat64 /* 195 */ | ||
1252 | .long sys_lstat64 | ||
1253 | .long sys_fstat64 | ||
1254 | .long sys_pciconfig_read | ||
1255 | .long sys_pciconfig_write | ||
1256 | .long sys_pciconfig_iobase /* 200 */ | ||
1257 | .long sys_ni_syscall /* 201 - reserved - MacOnLinux - new */ | ||
1258 | .long sys_getdents64 | ||
1259 | .long sys_pivot_root | ||
1260 | .long sys_fcntl64 | ||
1261 | .long sys_madvise /* 205 */ | ||
1262 | .long sys_mincore | ||
1263 | .long sys_gettid | ||
1264 | .long sys_tkill | ||
1265 | .long sys_setxattr | ||
1266 | .long sys_lsetxattr /* 210 */ | ||
1267 | .long sys_fsetxattr | ||
1268 | .long sys_getxattr | ||
1269 | .long sys_lgetxattr | ||
1270 | .long sys_fgetxattr | ||
1271 | .long sys_listxattr /* 215 */ | ||
1272 | .long sys_llistxattr | ||
1273 | .long sys_flistxattr | ||
1274 | .long sys_removexattr | ||
1275 | .long sys_lremovexattr | ||
1276 | .long sys_fremovexattr /* 220 */ | ||
1277 | .long sys_futex | ||
1278 | .long sys_sched_setaffinity | ||
1279 | .long sys_sched_getaffinity | ||
1280 | .long sys_ni_syscall | ||
1281 | .long sys_ni_syscall /* 225 - reserved for Tux */ | ||
1282 | .long sys_sendfile64 | ||
1283 | .long sys_io_setup | ||
1284 | .long sys_io_destroy | ||
1285 | .long sys_io_getevents | ||
1286 | .long sys_io_submit /* 230 */ | ||
1287 | .long sys_io_cancel | ||
1288 | .long sys_set_tid_address | ||
1289 | .long sys_fadvise64 | ||
1290 | .long sys_exit_group | ||
1291 | .long sys_lookup_dcookie /* 235 */ | ||
1292 | .long sys_epoll_create | ||
1293 | .long sys_epoll_ctl | ||
1294 | .long sys_epoll_wait | ||
1295 | .long sys_remap_file_pages | ||
1296 | .long sys_timer_create /* 240 */ | ||
1297 | .long sys_timer_settime | ||
1298 | .long sys_timer_gettime | ||
1299 | .long sys_timer_getoverrun | ||
1300 | .long sys_timer_delete | ||
1301 | .long sys_clock_settime /* 245 */ | ||
1302 | .long sys_clock_gettime | ||
1303 | .long sys_clock_getres | ||
1304 | .long sys_clock_nanosleep | ||
1305 | .long sys_swapcontext | ||
1306 | .long sys_tgkill /* 250 */ | ||
1307 | .long sys_utimes | ||
1308 | .long sys_statfs64 | ||
1309 | .long sys_fstatfs64 | ||
1310 | .long ppc_fadvise64_64 | ||
1311 | .long sys_ni_syscall /* 255 - rtas (used on ppc64) */ | ||
1312 | .long sys_debug_setcontext | ||
1313 | .long sys_ni_syscall /* 257 reserved for vserver */ | ||
1314 | .long sys_ni_syscall /* 258 reserved for new sys_remap_file_pages */ | ||
1315 | .long sys_ni_syscall /* 259 reserved for new sys_mbind */ | ||
1316 | .long sys_ni_syscall /* 260 reserved for new sys_get_mempolicy */ | ||
1317 | .long sys_ni_syscall /* 261 reserved for new sys_set_mempolicy */ | ||
1318 | .long sys_mq_open | ||
1319 | .long sys_mq_unlink | ||
1320 | .long sys_mq_timedsend | ||
1321 | .long sys_mq_timedreceive /* 265 */ | ||
1322 | .long sys_mq_notify | ||
1323 | .long sys_mq_getsetattr | ||
1324 | .long sys_kexec_load | ||
1325 | .long sys_add_key | ||
1326 | .long sys_request_key /* 270 */ | ||
1327 | .long sys_keyctl | ||
1328 | .long sys_waitid | ||
1329 | .long sys_ioprio_set | ||
1330 | .long sys_ioprio_get | ||
1331 | .long sys_inotify_init /* 275 */ | ||
1332 | .long sys_inotify_add_watch | ||
1333 | .long sys_inotify_rm_watch | ||
diff --git a/arch/ppc/kernel/ppc_ksyms.c b/arch/ppc/kernel/ppc_ksyms.c index 3a6e4bcb3c..82adb46013 100644 --- a/arch/ppc/kernel/ppc_ksyms.c +++ b/arch/ppc/kernel/ppc_ksyms.c | |||
@@ -93,15 +93,8 @@ EXPORT_SYMBOL(test_and_change_bit); | |||
93 | EXPORT_SYMBOL(strcpy); | 93 | EXPORT_SYMBOL(strcpy); |
94 | EXPORT_SYMBOL(strncpy); | 94 | EXPORT_SYMBOL(strncpy); |
95 | EXPORT_SYMBOL(strcat); | 95 | EXPORT_SYMBOL(strcat); |
96 | EXPORT_SYMBOL(strncat); | ||
97 | EXPORT_SYMBOL(strchr); | ||
98 | EXPORT_SYMBOL(strrchr); | ||
99 | EXPORT_SYMBOL(strpbrk); | ||
100 | EXPORT_SYMBOL(strstr); | ||
101 | EXPORT_SYMBOL(strlen); | 96 | EXPORT_SYMBOL(strlen); |
102 | EXPORT_SYMBOL(strnlen); | ||
103 | EXPORT_SYMBOL(strcmp); | 97 | EXPORT_SYMBOL(strcmp); |
104 | EXPORT_SYMBOL(strncmp); | ||
105 | EXPORT_SYMBOL(strcasecmp); | 98 | EXPORT_SYMBOL(strcasecmp); |
106 | EXPORT_SYMBOL(__div64_32); | 99 | EXPORT_SYMBOL(__div64_32); |
107 | 100 | ||
@@ -186,11 +179,15 @@ EXPORT_SYMBOL(flush_tlb_kernel_range); | |||
186 | EXPORT_SYMBOL(flush_tlb_page); | 179 | EXPORT_SYMBOL(flush_tlb_page); |
187 | EXPORT_SYMBOL(_tlbie); | 180 | EXPORT_SYMBOL(_tlbie); |
188 | #ifdef CONFIG_ALTIVEC | 181 | #ifdef CONFIG_ALTIVEC |
182 | #ifndef CONFIG_SMP | ||
189 | EXPORT_SYMBOL(last_task_used_altivec); | 183 | EXPORT_SYMBOL(last_task_used_altivec); |
184 | #endif | ||
190 | EXPORT_SYMBOL(giveup_altivec); | 185 | EXPORT_SYMBOL(giveup_altivec); |
191 | #endif /* CONFIG_ALTIVEC */ | 186 | #endif /* CONFIG_ALTIVEC */ |
192 | #ifdef CONFIG_SPE | 187 | #ifdef CONFIG_SPE |
188 | #ifndef CONFIG_SMP | ||
193 | EXPORT_SYMBOL(last_task_used_spe); | 189 | EXPORT_SYMBOL(last_task_used_spe); |
190 | #endif | ||
194 | EXPORT_SYMBOL(giveup_spe); | 191 | EXPORT_SYMBOL(giveup_spe); |
195 | #endif /* CONFIG_SPE */ | 192 | #endif /* CONFIG_SPE */ |
196 | #ifdef CONFIG_SMP | 193 | #ifdef CONFIG_SMP |
@@ -249,7 +246,6 @@ EXPORT_SYMBOL(memcpy); | |||
249 | EXPORT_SYMBOL(cacheable_memcpy); | 246 | EXPORT_SYMBOL(cacheable_memcpy); |
250 | EXPORT_SYMBOL(memset); | 247 | EXPORT_SYMBOL(memset); |
251 | EXPORT_SYMBOL(memmove); | 248 | EXPORT_SYMBOL(memmove); |
252 | EXPORT_SYMBOL(memscan); | ||
253 | EXPORT_SYMBOL(memcmp); | 249 | EXPORT_SYMBOL(memcmp); |
254 | EXPORT_SYMBOL(memchr); | 250 | EXPORT_SYMBOL(memchr); |
255 | 251 | ||
diff --git a/arch/ppc/platforms/4xx/bamboo.c b/arch/ppc/platforms/4xx/bamboo.c index 159b228eca..0ec53f0493 100644 --- a/arch/ppc/platforms/4xx/bamboo.c +++ b/arch/ppc/platforms/4xx/bamboo.c | |||
@@ -332,8 +332,8 @@ bamboo_early_serial_map(void) | |||
332 | port.irq = 0; | 332 | port.irq = 0; |
333 | port.uartclk = clocks.uart0; | 333 | port.uartclk = clocks.uart0; |
334 | port.regshift = 0; | 334 | port.regshift = 0; |
335 | port.iotype = SERIAL_IO_MEM; | 335 | port.iotype = UPIO_MEM; |
336 | port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; | 336 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; |
337 | port.line = 0; | 337 | port.line = 0; |
338 | 338 | ||
339 | if (early_serial_setup(&port) != 0) { | 339 | if (early_serial_setup(&port) != 0) { |
diff --git a/arch/ppc/platforms/4xx/bubinga.c b/arch/ppc/platforms/4xx/bubinga.c index 8110f55668..ce48a4f08c 100644 --- a/arch/ppc/platforms/4xx/bubinga.c +++ b/arch/ppc/platforms/4xx/bubinga.c | |||
@@ -97,8 +97,8 @@ bubinga_early_serial_map(void) | |||
97 | port.irq = ACTING_UART0_INT; | 97 | port.irq = ACTING_UART0_INT; |
98 | port.uartclk = uart_clock; | 98 | port.uartclk = uart_clock; |
99 | port.regshift = 0; | 99 | port.regshift = 0; |
100 | port.iotype = SERIAL_IO_MEM; | 100 | port.iotype = UPIO_MEM; |
101 | port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; | 101 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; |
102 | port.line = 0; | 102 | port.line = 0; |
103 | 103 | ||
104 | if (early_serial_setup(&port) != 0) { | 104 | if (early_serial_setup(&port) != 0) { |
diff --git a/arch/ppc/platforms/4xx/ebony.c b/arch/ppc/platforms/4xx/ebony.c index 64ebae19cd..9a828b6234 100644 --- a/arch/ppc/platforms/4xx/ebony.c +++ b/arch/ppc/platforms/4xx/ebony.c | |||
@@ -225,8 +225,8 @@ ebony_early_serial_map(void) | |||
225 | port.irq = 0; | 225 | port.irq = 0; |
226 | port.uartclk = clocks.uart0; | 226 | port.uartclk = clocks.uart0; |
227 | port.regshift = 0; | 227 | port.regshift = 0; |
228 | port.iotype = SERIAL_IO_MEM; | 228 | port.iotype = UPIO_MEM; |
229 | port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; | 229 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; |
230 | port.line = 0; | 230 | port.line = 0; |
231 | 231 | ||
232 | if (early_serial_setup(&port) != 0) { | 232 | if (early_serial_setup(&port) != 0) { |
diff --git a/arch/ppc/platforms/4xx/luan.c b/arch/ppc/platforms/4xx/luan.c index d810b736d9..21d29132ae 100644 --- a/arch/ppc/platforms/4xx/luan.c +++ b/arch/ppc/platforms/4xx/luan.c | |||
@@ -279,8 +279,8 @@ luan_early_serial_map(void) | |||
279 | port.irq = UART0_INT; | 279 | port.irq = UART0_INT; |
280 | port.uartclk = clocks.uart0; | 280 | port.uartclk = clocks.uart0; |
281 | port.regshift = 0; | 281 | port.regshift = 0; |
282 | port.iotype = SERIAL_IO_MEM; | 282 | port.iotype = UPIO_MEM; |
283 | port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; | 283 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; |
284 | port.line = 0; | 284 | port.line = 0; |
285 | 285 | ||
286 | if (early_serial_setup(&port) != 0) { | 286 | if (early_serial_setup(&port) != 0) { |
diff --git a/arch/ppc/platforms/4xx/ocotea.c b/arch/ppc/platforms/4xx/ocotea.c index 73b2c98158..4f355b6aca 100644 --- a/arch/ppc/platforms/4xx/ocotea.c +++ b/arch/ppc/platforms/4xx/ocotea.c | |||
@@ -248,8 +248,8 @@ ocotea_early_serial_map(void) | |||
248 | port.irq = UART0_INT; | 248 | port.irq = UART0_INT; |
249 | port.uartclk = clocks.uart0; | 249 | port.uartclk = clocks.uart0; |
250 | port.regshift = 0; | 250 | port.regshift = 0; |
251 | port.iotype = SERIAL_IO_MEM; | 251 | port.iotype = UPIO_MEM; |
252 | port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; | 252 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; |
253 | port.line = 0; | 253 | port.line = 0; |
254 | 254 | ||
255 | if (early_serial_setup(&port) != 0) { | 255 | if (early_serial_setup(&port) != 0) { |
diff --git a/arch/ppc/platforms/4xx/xilinx_ml300.c b/arch/ppc/platforms/4xx/xilinx_ml300.c index 0b1b77d986..e90d97f64f 100644 --- a/arch/ppc/platforms/4xx/xilinx_ml300.c +++ b/arch/ppc/platforms/4xx/xilinx_ml300.c | |||
@@ -95,8 +95,8 @@ ml300_early_serial_map(void) | |||
95 | port.irq = old_ports[i].irq; | 95 | port.irq = old_ports[i].irq; |
96 | port.uartclk = old_ports[i].baud_base * 16; | 96 | port.uartclk = old_ports[i].baud_base * 16; |
97 | port.regshift = old_ports[i].iomem_reg_shift; | 97 | port.regshift = old_ports[i].iomem_reg_shift; |
98 | port.iotype = SERIAL_IO_MEM; | 98 | port.iotype = UPIO_MEM; |
99 | port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; | 99 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; |
100 | port.line = i; | 100 | port.line = i; |
101 | 101 | ||
102 | if (early_serial_setup(&port) != 0) { | 102 | if (early_serial_setup(&port) != 0) { |
diff --git a/arch/ppc/platforms/4xx/yucca.c b/arch/ppc/platforms/4xx/yucca.c index e60f4bd437..b065b8babc 100644 --- a/arch/ppc/platforms/4xx/yucca.c +++ b/arch/ppc/platforms/4xx/yucca.c | |||
@@ -305,8 +305,8 @@ yucca_early_serial_map(void) | |||
305 | port.irq = UART0_INT; | 305 | port.irq = UART0_INT; |
306 | port.uartclk = clocks.uart0; | 306 | port.uartclk = clocks.uart0; |
307 | port.regshift = 0; | 307 | port.regshift = 0; |
308 | port.iotype = SERIAL_IO_MEM; | 308 | port.iotype = UPIO_MEM; |
309 | port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; | 309 | port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; |
310 | port.line = 0; | 310 | port.line = 0; |
311 | 311 | ||
312 | if (early_serial_setup(&port) != 0) { | 312 | if (early_serial_setup(&port) != 0) { |
diff --git a/arch/ppc/platforms/83xx/mpc834x_sys.c b/arch/ppc/platforms/83xx/mpc834x_sys.c index 012e1e652c..1a659bbc18 100644 --- a/arch/ppc/platforms/83xx/mpc834x_sys.c +++ b/arch/ppc/platforms/83xx/mpc834x_sys.c | |||
@@ -301,14 +301,14 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | |||
301 | struct uart_port p; | 301 | struct uart_port p; |
302 | 302 | ||
303 | memset(&p, 0, sizeof (p)); | 303 | memset(&p, 0, sizeof (p)); |
304 | p.iotype = SERIAL_IO_MEM; | 304 | p.iotype = UPIO_MEM; |
305 | p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4500); | 305 | p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4500); |
306 | p.uartclk = binfo->bi_busfreq; | 306 | p.uartclk = binfo->bi_busfreq; |
307 | 307 | ||
308 | gen550_init(0, &p); | 308 | gen550_init(0, &p); |
309 | 309 | ||
310 | memset(&p, 0, sizeof (p)); | 310 | memset(&p, 0, sizeof (p)); |
311 | p.iotype = SERIAL_IO_MEM; | 311 | p.iotype = UPIO_MEM; |
312 | p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4600); | 312 | p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4600); |
313 | p.uartclk = binfo->bi_busfreq; | 313 | p.uartclk = binfo->bi_busfreq; |
314 | 314 | ||
diff --git a/arch/ppc/platforms/85xx/mpc8540_ads.c b/arch/ppc/platforms/85xx/mpc8540_ads.c index 2eceb1e6f4..408d64f18e 100644 --- a/arch/ppc/platforms/85xx/mpc8540_ads.c +++ b/arch/ppc/platforms/85xx/mpc8540_ads.c | |||
@@ -162,14 +162,14 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | |||
162 | binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0); | 162 | binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0); |
163 | 163 | ||
164 | memset(&p, 0, sizeof (p)); | 164 | memset(&p, 0, sizeof (p)); |
165 | p.iotype = SERIAL_IO_MEM; | 165 | p.iotype = UPIO_MEM; |
166 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART0_OFFSET; | 166 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART0_OFFSET; |
167 | p.uartclk = binfo->bi_busfreq; | 167 | p.uartclk = binfo->bi_busfreq; |
168 | 168 | ||
169 | gen550_init(0, &p); | 169 | gen550_init(0, &p); |
170 | 170 | ||
171 | memset(&p, 0, sizeof (p)); | 171 | memset(&p, 0, sizeof (p)); |
172 | p.iotype = SERIAL_IO_MEM; | 172 | p.iotype = UPIO_MEM; |
173 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART1_OFFSET; | 173 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART1_OFFSET; |
174 | p.uartclk = binfo->bi_busfreq; | 174 | p.uartclk = binfo->bi_busfreq; |
175 | 175 | ||
diff --git a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c index b332ebae6b..1801ab392e 100644 --- a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c +++ b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c | |||
@@ -534,14 +534,14 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | |||
534 | binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0); | 534 | binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0); |
535 | 535 | ||
536 | memset(&p, 0, sizeof (p)); | 536 | memset(&p, 0, sizeof (p)); |
537 | p.iotype = SERIAL_IO_MEM; | 537 | p.iotype = UPIO_MEM; |
538 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART0_OFFSET; | 538 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART0_OFFSET; |
539 | p.uartclk = binfo->bi_busfreq; | 539 | p.uartclk = binfo->bi_busfreq; |
540 | 540 | ||
541 | gen550_init(0, &p); | 541 | gen550_init(0, &p); |
542 | 542 | ||
543 | memset(&p, 0, sizeof (p)); | 543 | memset(&p, 0, sizeof (p)); |
544 | p.iotype = SERIAL_IO_MEM; | 544 | p.iotype = UPIO_MEM; |
545 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART1_OFFSET; | 545 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART1_OFFSET; |
546 | p.uartclk = binfo->bi_busfreq; | 546 | p.uartclk = binfo->bi_busfreq; |
547 | 547 | ||
diff --git a/arch/ppc/platforms/85xx/sbc8560.c b/arch/ppc/platforms/85xx/sbc8560.c index e777ba824a..8a72221f81 100644 --- a/arch/ppc/platforms/85xx/sbc8560.c +++ b/arch/ppc/platforms/85xx/sbc8560.c | |||
@@ -64,7 +64,7 @@ sbc8560_early_serial_map(void) | |||
64 | uart_req.irq = MPC85xx_IRQ_EXT9; | 64 | uart_req.irq = MPC85xx_IRQ_EXT9; |
65 | uart_req.flags = STD_COM_FLAGS; | 65 | uart_req.flags = STD_COM_FLAGS; |
66 | uart_req.uartclk = BASE_BAUD * 16; | 66 | uart_req.uartclk = BASE_BAUD * 16; |
67 | uart_req.iotype = SERIAL_IO_MEM; | 67 | uart_req.iotype = UPIO_MEM; |
68 | uart_req.mapbase = UARTA_ADDR; | 68 | uart_req.mapbase = UARTA_ADDR; |
69 | uart_req.membase = ioremap(uart_req.mapbase, MPC85xx_UART0_SIZE); | 69 | uart_req.membase = ioremap(uart_req.mapbase, MPC85xx_UART0_SIZE); |
70 | uart_req.type = PORT_16650; | 70 | uart_req.type = PORT_16650; |
diff --git a/arch/ppc/platforms/85xx/tqm85xx.c b/arch/ppc/platforms/85xx/tqm85xx.c index b436f4d0a3..a5e38ba627 100644 --- a/arch/ppc/platforms/85xx/tqm85xx.c +++ b/arch/ppc/platforms/85xx/tqm85xx.c | |||
@@ -346,14 +346,14 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | |||
346 | binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0); | 346 | binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0); |
347 | 347 | ||
348 | memset(&p, 0, sizeof (p)); | 348 | memset(&p, 0, sizeof (p)); |
349 | p.iotype = SERIAL_IO_MEM; | 349 | p.iotype = UPIO_MEM; |
350 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART0_OFFSET; | 350 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART0_OFFSET; |
351 | p.uartclk = binfo->bi_busfreq; | 351 | p.uartclk = binfo->bi_busfreq; |
352 | 352 | ||
353 | gen550_init(0, &p); | 353 | gen550_init(0, &p); |
354 | 354 | ||
355 | memset(&p, 0, sizeof (p)); | 355 | memset(&p, 0, sizeof (p)); |
356 | p.iotype = SERIAL_IO_MEM; | 356 | p.iotype = UPIO_MEM; |
357 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART1_OFFSET; | 357 | p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART1_OFFSET; |
358 | p.uartclk = binfo->bi_busfreq; | 358 | p.uartclk = binfo->bi_busfreq; |
359 | 359 | ||
diff --git a/arch/ppc/platforms/chestnut.c b/arch/ppc/platforms/chestnut.c index 48a4a510d5..aefcc0e7be 100644 --- a/arch/ppc/platforms/chestnut.c +++ b/arch/ppc/platforms/chestnut.c | |||
@@ -116,7 +116,7 @@ chestnut_early_serial_map(void) | |||
116 | port.uartclk = BASE_BAUD * 16; | 116 | port.uartclk = BASE_BAUD * 16; |
117 | port.irq = UART0_INT; | 117 | port.irq = UART0_INT; |
118 | port.flags = STD_COM_FLAGS | UPF_IOREMAP; | 118 | port.flags = STD_COM_FLAGS | UPF_IOREMAP; |
119 | port.iotype = SERIAL_IO_MEM; | 119 | port.iotype = UPIO_MEM; |
120 | port.mapbase = CHESTNUT_UART0_IO_BASE; | 120 | port.mapbase = CHESTNUT_UART0_IO_BASE; |
121 | port.regshift = 0; | 121 | port.regshift = 0; |
122 | 122 | ||
diff --git a/arch/ppc/platforms/ev64260.c b/arch/ppc/platforms/ev64260.c index 32358b3fb2..ffde8f6f63 100644 --- a/arch/ppc/platforms/ev64260.c +++ b/arch/ppc/platforms/ev64260.c | |||
@@ -330,7 +330,7 @@ ev64260_early_serial_map(void) | |||
330 | port.irq = EV64260_UART_0_IRQ; | 330 | port.irq = EV64260_UART_0_IRQ; |
331 | port.uartclk = BASE_BAUD * 16; | 331 | port.uartclk = BASE_BAUD * 16; |
332 | port.regshift = 2; | 332 | port.regshift = 2; |
333 | port.iotype = SERIAL_IO_MEM; | 333 | port.iotype = UPIO_MEM; |
334 | port.flags = STD_COM_FLAGS; | 334 | port.flags = STD_COM_FLAGS; |
335 | 335 | ||
336 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) | 336 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) |
diff --git a/arch/ppc/platforms/radstone_ppc7d.c b/arch/ppc/platforms/radstone_ppc7d.c index 708b8739ec..872c0a3ba3 100644 --- a/arch/ppc/platforms/radstone_ppc7d.c +++ b/arch/ppc/platforms/radstone_ppc7d.c | |||
@@ -100,7 +100,7 @@ static void __init ppc7d_early_serial_map(void) | |||
100 | serial_req.uartclk = UART_CLK; | 100 | serial_req.uartclk = UART_CLK; |
101 | serial_req.irq = 4; | 101 | serial_req.irq = 4; |
102 | serial_req.flags = STD_COM_FLAGS; | 102 | serial_req.flags = STD_COM_FLAGS; |
103 | serial_req.iotype = SERIAL_IO_MEM; | 103 | serial_req.iotype = UPIO_MEM; |
104 | serial_req.membase = (u_char *) PPC7D_SERIAL_0; | 104 | serial_req.membase = (u_char *) PPC7D_SERIAL_0; |
105 | 105 | ||
106 | gen550_init(0, &serial_req); | 106 | gen550_init(0, &serial_req); |
diff --git a/arch/ppc/platforms/spruce.c b/arch/ppc/platforms/spruce.c index 5ad70d357c..69e1de7971 100644 --- a/arch/ppc/platforms/spruce.c +++ b/arch/ppc/platforms/spruce.c | |||
@@ -176,8 +176,8 @@ spruce_early_serial_map(void) | |||
176 | memset(&serial_req, 0, sizeof(serial_req)); | 176 | memset(&serial_req, 0, sizeof(serial_req)); |
177 | serial_req.uartclk = uart_clk; | 177 | serial_req.uartclk = uart_clk; |
178 | serial_req.irq = UART0_INT; | 178 | serial_req.irq = UART0_INT; |
179 | serial_req.flags = ASYNC_BOOT_AUTOCONF; | 179 | serial_req.flags = UPF_BOOT_AUTOCONF; |
180 | serial_req.iotype = SERIAL_IO_MEM; | 180 | serial_req.iotype = UPIO_MEM; |
181 | serial_req.membase = (u_char *)UART0_IO_BASE; | 181 | serial_req.membase = (u_char *)UART0_IO_BASE; |
182 | serial_req.regshift = 0; | 182 | serial_req.regshift = 0; |
183 | 183 | ||
diff --git a/arch/ppc/syslib/mv64x60.c b/arch/ppc/syslib/mv64x60.c index 94ea346b7b..1f01b7e237 100644 --- a/arch/ppc/syslib/mv64x60.c +++ b/arch/ppc/syslib/mv64x60.c | |||
@@ -313,7 +313,7 @@ static struct platform_device mpsc1_device = { | |||
313 | }; | 313 | }; |
314 | #endif | 314 | #endif |
315 | 315 | ||
316 | #ifdef CONFIG_MV643XX_ETH | 316 | #if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) |
317 | static struct resource mv64x60_eth_shared_resources[] = { | 317 | static struct resource mv64x60_eth_shared_resources[] = { |
318 | [0] = { | 318 | [0] = { |
319 | .name = "ethernet shared base", | 319 | .name = "ethernet shared base", |
@@ -456,7 +456,7 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = { | |||
456 | &mpsc0_device, | 456 | &mpsc0_device, |
457 | &mpsc1_device, | 457 | &mpsc1_device, |
458 | #endif | 458 | #endif |
459 | #ifdef CONFIG_MV643XX_ETH | 459 | #if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) |
460 | &mv64x60_eth_shared_device, | 460 | &mv64x60_eth_shared_device, |
461 | #endif | 461 | #endif |
462 | #ifdef CONFIG_MV643XX_ETH_0 | 462 | #ifdef CONFIG_MV643XX_ETH_0 |
diff --git a/arch/ppc/syslib/ocp.c b/arch/ppc/syslib/ocp.c index ab34b1d607..2fe28ded2c 100644 --- a/arch/ppc/syslib/ocp.c +++ b/arch/ppc/syslib/ocp.c | |||
@@ -189,8 +189,8 @@ ocp_device_resume(struct device *dev) | |||
189 | struct bus_type ocp_bus_type = { | 189 | struct bus_type ocp_bus_type = { |
190 | .name = "ocp", | 190 | .name = "ocp", |
191 | .match = ocp_device_match, | 191 | .match = ocp_device_match, |
192 | .probe = ocp_driver_probe, | 192 | .probe = ocp_device_probe, |
193 | .remove = ocp_driver_remove, | 193 | .remove = ocp_device_remove, |
194 | .suspend = ocp_device_suspend, | 194 | .suspend = ocp_device_suspend, |
195 | .resume = ocp_device_resume, | 195 | .resume = ocp_device_resume, |
196 | }; | 196 | }; |
diff --git a/arch/ppc/syslib/ppc83xx_setup.c b/arch/ppc/syslib/ppc83xx_setup.c index 1b5fe9e398..7bada82527 100644 --- a/arch/ppc/syslib/ppc83xx_setup.c +++ b/arch/ppc/syslib/ppc83xx_setup.c | |||
@@ -108,7 +108,7 @@ mpc83xx_early_serial_map(void) | |||
108 | 108 | ||
109 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) | 109 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) |
110 | memset(&serial_req, 0, sizeof (serial_req)); | 110 | memset(&serial_req, 0, sizeof (serial_req)); |
111 | serial_req.iotype = SERIAL_IO_MEM; | 111 | serial_req.iotype = UPIO_MEM; |
112 | serial_req.mapbase = pdata[0].mapbase; | 112 | serial_req.mapbase = pdata[0].mapbase; |
113 | serial_req.membase = pdata[0].membase; | 113 | serial_req.membase = pdata[0].membase; |
114 | serial_req.regshift = 0; | 114 | serial_req.regshift = 0; |
diff --git a/arch/ppc/syslib/ppc85xx_setup.c b/arch/ppc/syslib/ppc85xx_setup.c index 1a47ff4b83..e4dda43fda 100644 --- a/arch/ppc/syslib/ppc85xx_setup.c +++ b/arch/ppc/syslib/ppc85xx_setup.c | |||
@@ -90,7 +90,7 @@ mpc85xx_early_serial_map(void) | |||
90 | 90 | ||
91 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) | 91 | #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) |
92 | memset(&serial_req, 0, sizeof (serial_req)); | 92 | memset(&serial_req, 0, sizeof (serial_req)); |
93 | serial_req.iotype = SERIAL_IO_MEM; | 93 | serial_req.iotype = UPIO_MEM; |
94 | serial_req.mapbase = pdata[0].mapbase; | 94 | serial_req.mapbase = pdata[0].mapbase; |
95 | serial_req.membase = pdata[0].membase; | 95 | serial_req.membase = pdata[0].membase; |
96 | serial_req.regshift = 0; | 96 | serial_req.regshift = 0; |
diff --git a/arch/ppc/xmon/adb.c b/arch/ppc/xmon/adb.c deleted file mode 100644 index e91384dccc..0000000000 --- a/arch/ppc/xmon/adb.c +++ /dev/null | |||
@@ -1,212 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1996 Paul Mackerras. | ||
3 | */ | ||
4 | #include "nonstdio.h" | ||
5 | #include "privinst.h" | ||
6 | |||
7 | #define scanhex xmon_scanhex | ||
8 | #define skipbl xmon_skipbl | ||
9 | |||
10 | #define ADB_B (*(volatile unsigned char *)0xf3016000) | ||
11 | #define ADB_SR (*(volatile unsigned char *)0xf3017400) | ||
12 | #define ADB_ACR (*(volatile unsigned char *)0xf3017600) | ||
13 | #define ADB_IFR (*(volatile unsigned char *)0xf3017a00) | ||
14 | |||
15 | static inline void eieio(void) { asm volatile ("eieio" : :); } | ||
16 | |||
17 | #define N_ADB_LOG 1000 | ||
18 | struct adb_log { | ||
19 | unsigned char b; | ||
20 | unsigned char ifr; | ||
21 | unsigned char acr; | ||
22 | unsigned int time; | ||
23 | } adb_log[N_ADB_LOG]; | ||
24 | int n_adb_log; | ||
25 | |||
26 | void | ||
27 | init_adb_log(void) | ||
28 | { | ||
29 | adb_log[0].b = ADB_B; | ||
30 | adb_log[0].ifr = ADB_IFR; | ||
31 | adb_log[0].acr = ADB_ACR; | ||
32 | adb_log[0].time = get_dec(); | ||
33 | n_adb_log = 0; | ||
34 | } | ||
35 | |||
36 | void | ||
37 | dump_adb_log(void) | ||
38 | { | ||
39 | unsigned t, t0; | ||
40 | struct adb_log *ap; | ||
41 | int i; | ||
42 | |||
43 | ap = adb_log; | ||
44 | t0 = ap->time; | ||
45 | for (i = 0; i <= n_adb_log; ++i, ++ap) { | ||
46 | t = t0 - ap->time; | ||
47 | printf("b=%x ifr=%x acr=%x at %d.%.7d\n", ap->b, ap->ifr, ap->acr, | ||
48 | t / 1000000000, (t % 1000000000) / 100); | ||
49 | } | ||
50 | } | ||
51 | |||
52 | void | ||
53 | adb_chklog(void) | ||
54 | { | ||
55 | struct adb_log *ap = &adb_log[n_adb_log + 1]; | ||
56 | |||
57 | ap->b = ADB_B; | ||
58 | ap->ifr = ADB_IFR; | ||
59 | ap->acr = ADB_ACR; | ||
60 | if (ap->b != ap[-1].b || (ap->ifr & 4) != (ap[-1].ifr & 4) | ||
61 | || ap->acr != ap[-1].acr) { | ||
62 | ap->time = get_dec(); | ||
63 | ++n_adb_log; | ||
64 | } | ||
65 | } | ||
66 | |||
67 | int | ||
68 | adb_bitwait(int bmask, int bval, int fmask, int fval) | ||
69 | { | ||
70 | int i; | ||
71 | struct adb_log *ap; | ||
72 | |||
73 | for (i = 10000; i > 0; --i) { | ||
74 | adb_chklog(); | ||
75 | ap = &adb_log[n_adb_log]; | ||
76 | if ((ap->b & bmask) == bval && (ap->ifr & fmask) == fval) | ||
77 | return 0; | ||
78 | } | ||
79 | return -1; | ||
80 | } | ||
81 | |||
82 | int | ||
83 | adb_wait(void) | ||
84 | { | ||
85 | if (adb_bitwait(0, 0, 4, 4) < 0) { | ||
86 | printf("adb: ready wait timeout\n"); | ||
87 | return -1; | ||
88 | } | ||
89 | return 0; | ||
90 | } | ||
91 | |||
92 | void | ||
93 | adb_readin(void) | ||
94 | { | ||
95 | int i, j; | ||
96 | unsigned char d[64]; | ||
97 | |||
98 | if (ADB_B & 8) { | ||
99 | printf("ADB_B: %x\n", ADB_B); | ||
100 | return; | ||
101 | } | ||
102 | i = 0; | ||
103 | adb_wait(); | ||
104 | j = ADB_SR; | ||
105 | eieio(); | ||
106 | ADB_B &= ~0x20; | ||
107 | eieio(); | ||
108 | for (;;) { | ||
109 | if (adb_wait() < 0) | ||
110 | break; | ||
111 | d[i++] = ADB_SR; | ||
112 | eieio(); | ||
113 | if (ADB_B & 8) | ||
114 | break; | ||
115 | ADB_B ^= 0x10; | ||
116 | eieio(); | ||
117 | } | ||
118 | ADB_B |= 0x30; | ||
119 | if (adb_wait() == 0) | ||
120 | j = ADB_SR; | ||
121 | for (j = 0; j < i; ++j) | ||
122 | printf("%.2x ", d[j]); | ||
123 | printf("\n"); | ||
124 | } | ||
125 | |||
126 | int | ||
127 | adb_write(unsigned char *d, int i) | ||
128 | { | ||
129 | int j; | ||
130 | unsigned x; | ||
131 | |||
132 | if ((ADB_B & 8) == 0) { | ||
133 | printf("r: "); | ||
134 | adb_readin(); | ||
135 | } | ||
136 | for (;;) { | ||
137 | ADB_ACR = 0x1c; | ||
138 | eieio(); | ||
139 | ADB_SR = d[0]; | ||
140 | eieio(); | ||
141 | ADB_B &= ~0x20; | ||
142 | eieio(); | ||
143 | if (ADB_B & 8) | ||
144 | break; | ||
145 | ADB_ACR = 0xc; | ||
146 | eieio(); | ||
147 | ADB_B |= 0x20; | ||
148 | eieio(); | ||
149 | adb_readin(); | ||
150 | } | ||
151 | adb_wait(); | ||
152 | for (j = 1; j < i; ++j) { | ||
153 | ADB_SR = d[j]; | ||
154 | eieio(); | ||
155 | ADB_B ^= 0x10; | ||
156 | eieio(); | ||
157 | if (adb_wait() < 0) | ||
158 | break; | ||
159 | } | ||
160 | ADB_ACR = 0xc; | ||
161 | eieio(); | ||
162 | x = ADB_SR; | ||
163 | eieio(); | ||
164 | ADB_B |= 0x30; | ||
165 | return j; | ||
166 | } | ||
167 | |||
168 | void | ||
169 | adbcmds(void) | ||
170 | { | ||
171 | char cmd; | ||
172 | unsigned rtcu, rtcl, dec, pdec, x; | ||
173 | int i, j; | ||
174 | unsigned char d[64]; | ||
175 | |||
176 | cmd = skipbl(); | ||
177 | switch (cmd) { | ||
178 | case 't': | ||
179 | for (;;) { | ||
180 | rtcl = get_rtcl(); | ||
181 | rtcu = get_rtcu(); | ||
182 | dec = get_dec(); | ||
183 | printf("rtc u=%u l=%u dec=%x (%d = %d.%.7d)\n", | ||
184 | rtcu, rtcl, dec, pdec - dec, (pdec - dec) / 1000000000, | ||
185 | ((pdec - dec) % 1000000000) / 100); | ||
186 | pdec = dec; | ||
187 | if (cmd == 'x') | ||
188 | break; | ||
189 | while (xmon_read(stdin, &cmd, 1) != 1) | ||
190 | ; | ||
191 | } | ||
192 | break; | ||
193 | case 'r': | ||
194 | init_adb_log(); | ||
195 | while (adb_bitwait(8, 0, 0, 0) == 0) | ||
196 | adb_readin(); | ||
197 | break; | ||
198 | case 'w': | ||
199 | i = 0; | ||
200 | while (scanhex(&x)) | ||
201 | d[i++] = x; | ||
202 | init_adb_log(); | ||
203 | j = adb_write(d, i); | ||
204 | printf("sent %d bytes\n", j); | ||
205 | while (adb_bitwait(8, 0, 0, 0) == 0) | ||
206 | adb_readin(); | ||
207 | break; | ||
208 | case 'l': | ||
209 | dump_adb_log(); | ||
210 | break; | ||
211 | } | ||
212 | } | ||
diff --git a/arch/ppc/xmon/start.c b/arch/ppc/xmon/start.c index 4344cbe9b5..ff86b2d814 100644 --- a/arch/ppc/xmon/start.c +++ b/arch/ppc/xmon/start.c | |||
@@ -6,16 +6,11 @@ | |||
6 | #include <asm/machdep.h> | 6 | #include <asm/machdep.h> |
7 | #include <asm/io.h> | 7 | #include <asm/io.h> |
8 | #include <asm/page.h> | 8 | #include <asm/page.h> |
9 | #include <linux/adb.h> | ||
10 | #include <linux/pmu.h> | ||
11 | #include <linux/cuda.h> | ||
12 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
13 | #include <linux/errno.h> | 10 | #include <linux/errno.h> |
14 | #include <linux/sysrq.h> | 11 | #include <linux/sysrq.h> |
15 | #include <linux/bitops.h> | 12 | #include <linux/bitops.h> |
16 | #include <asm/xmon.h> | 13 | #include <asm/xmon.h> |
17 | #include <asm/prom.h> | ||
18 | #include <asm/bootx.h> | ||
19 | #include <asm/machdep.h> | 14 | #include <asm/machdep.h> |
20 | #include <asm/errno.h> | 15 | #include <asm/errno.h> |
21 | #include <asm/processor.h> | 16 | #include <asm/processor.h> |
@@ -26,9 +21,7 @@ static volatile unsigned char *sccc, *sccd; | |||
26 | unsigned int TXRDY, RXRDY, DLAB; | 21 | unsigned int TXRDY, RXRDY, DLAB; |
27 | static int xmon_expect(const char *str, unsigned int timeout); | 22 | static int xmon_expect(const char *str, unsigned int timeout); |
28 | 23 | ||
29 | static int use_screen; | ||
30 | static int via_modem; | 24 | static int via_modem; |
31 | static int xmon_use_sccb; | ||
32 | 25 | ||
33 | #define TB_SPEED 25000000 | 26 | #define TB_SPEED 25000000 |
34 | 27 | ||
@@ -46,47 +39,6 @@ void buf_access(void) | |||
46 | sccd[3] &= ~DLAB; /* reset DLAB */ | 39 | sccd[3] &= ~DLAB; /* reset DLAB */ |
47 | } | 40 | } |
48 | 41 | ||
49 | extern int adb_init(void); | ||
50 | |||
51 | #ifdef CONFIG_PPC_CHRP | ||
52 | /* | ||
53 | * This looks in the "ranges" property for the primary PCI host bridge | ||
54 | * to find the physical address of the start of PCI/ISA I/O space. | ||
55 | * It is basically a cut-down version of pci_process_bridge_OF_ranges. | ||
56 | */ | ||
57 | static unsigned long chrp_find_phys_io_base(void) | ||
58 | { | ||
59 | struct device_node *node; | ||
60 | unsigned int *ranges; | ||
61 | unsigned long base = CHRP_ISA_IO_BASE; | ||
62 | int rlen = 0; | ||
63 | int np; | ||
64 | |||
65 | node = find_devices("isa"); | ||
66 | if (node != NULL) { | ||
67 | node = node->parent; | ||
68 | if (node == NULL || node->type == NULL | ||
69 | || strcmp(node->type, "pci") != 0) | ||
70 | node = NULL; | ||
71 | } | ||
72 | if (node == NULL) | ||
73 | node = find_devices("pci"); | ||
74 | if (node == NULL) | ||
75 | return base; | ||
76 | |||
77 | ranges = (unsigned int *) get_property(node, "ranges", &rlen); | ||
78 | np = prom_n_addr_cells(node) + 5; | ||
79 | while ((rlen -= np * sizeof(unsigned int)) >= 0) { | ||
80 | if ((ranges[0] >> 24) == 1 && ranges[2] == 0) { | ||
81 | /* I/O space starting at 0, grab the phys base */ | ||
82 | base = ranges[np - 3]; | ||
83 | break; | ||
84 | } | ||
85 | ranges += np; | ||
86 | } | ||
87 | return base; | ||
88 | } | ||
89 | #endif /* CONFIG_PPC_CHRP */ | ||
90 | 42 | ||
91 | #ifdef CONFIG_MAGIC_SYSRQ | 43 | #ifdef CONFIG_MAGIC_SYSRQ |
92 | static void sysrq_handle_xmon(int key, struct pt_regs *regs, | 44 | static void sysrq_handle_xmon(int key, struct pt_regs *regs, |
@@ -109,22 +61,6 @@ xmon_map_scc(void) | |||
109 | #ifdef CONFIG_PPC_MULTIPLATFORM | 61 | #ifdef CONFIG_PPC_MULTIPLATFORM |
110 | volatile unsigned char *base; | 62 | volatile unsigned char *base; |
111 | 63 | ||
112 | #ifdef CONFIG_PPC_CHRP | ||
113 | base = (volatile unsigned char *) isa_io_base; | ||
114 | if (_machine == _MACH_chrp) | ||
115 | base = (volatile unsigned char *) | ||
116 | ioremap(chrp_find_phys_io_base(), 0x1000); | ||
117 | |||
118 | sccc = base + 0x3fd; | ||
119 | sccd = base + 0x3f8; | ||
120 | if (xmon_use_sccb) { | ||
121 | sccc -= 0x100; | ||
122 | sccd -= 0x100; | ||
123 | } | ||
124 | TXRDY = 0x20; | ||
125 | RXRDY = 1; | ||
126 | DLAB = 0x80; | ||
127 | #endif /* CONFIG_PPC_CHRP */ | ||
128 | #elif defined(CONFIG_GEMINI) | 64 | #elif defined(CONFIG_GEMINI) |
129 | /* should already be mapped by the kernel boot */ | 65 | /* should already be mapped by the kernel boot */ |
130 | sccc = (volatile unsigned char *) 0xffeffb0d; | 66 | sccc = (volatile unsigned char *) 0xffeffb0d; |
@@ -143,22 +79,9 @@ xmon_map_scc(void) | |||
143 | register_sysrq_key('x', &sysrq_xmon_op); | 79 | register_sysrq_key('x', &sysrq_xmon_op); |
144 | } | 80 | } |
145 | 81 | ||
146 | static int scc_initialized = 0; | 82 | static int scc_initialized; |
147 | 83 | ||
148 | void xmon_init_scc(void); | 84 | void xmon_init_scc(void); |
149 | extern void cuda_poll(void); | ||
150 | |||
151 | static inline void do_poll_adb(void) | ||
152 | { | ||
153 | #ifdef CONFIG_ADB_PMU | ||
154 | if (sys_ctrler == SYS_CTRLER_PMU) | ||
155 | pmu_poll_adb(); | ||
156 | #endif /* CONFIG_ADB_PMU */ | ||
157 | #ifdef CONFIG_ADB_CUDA | ||
158 | if (sys_ctrler == SYS_CTRLER_CUDA) | ||
159 | cuda_poll(); | ||
160 | #endif /* CONFIG_ADB_CUDA */ | ||
161 | } | ||
162 | 85 | ||
163 | int | 86 | int |
164 | xmon_write(void *handle, void *ptr, int nb) | 87 | xmon_write(void *handle, void *ptr, int nb) |
@@ -176,20 +99,12 @@ xmon_write(void *handle, void *ptr, int nb) | |||
176 | break; | 99 | break; |
177 | #endif | 100 | #endif |
178 | 101 | ||
179 | #ifdef CONFIG_BOOTX_TEXT | ||
180 | if (use_screen) { | ||
181 | /* write it on the screen */ | ||
182 | for (i = 0; i < nb; ++i) | ||
183 | btext_drawchar(*p++); | ||
184 | goto out; | ||
185 | } | ||
186 | #endif | ||
187 | if (!scc_initialized) | 102 | if (!scc_initialized) |
188 | xmon_init_scc(); | 103 | xmon_init_scc(); |
189 | ct = 0; | 104 | ct = 0; |
190 | for (i = 0; i < nb; ++i) { | 105 | for (i = 0; i < nb; ++i) { |
191 | while ((*sccc & TXRDY) == 0) | 106 | while ((*sccc & TXRDY) == 0) |
192 | do_poll_adb(); | 107 | ; |
193 | c = p[i]; | 108 | c = p[i]; |
194 | if (c == '\n' && !ct) { | 109 | if (c == '\n' && !ct) { |
195 | c = '\r'; | 110 | c = '\r'; |
@@ -203,7 +118,6 @@ xmon_write(void *handle, void *ptr, int nb) | |||
203 | eieio(); | 118 | eieio(); |
204 | } | 119 | } |
205 | 120 | ||
206 | out: | ||
207 | #ifdef CONFIG_SMP | 121 | #ifdef CONFIG_SMP |
208 | if (!locked) | 122 | if (!locked) |
209 | clear_bit(0, &xmon_write_lock); | 123 | clear_bit(0, &xmon_write_lock); |
@@ -212,65 +126,7 @@ xmon_write(void *handle, void *ptr, int nb) | |||
212 | } | 126 | } |
213 | 127 | ||
214 | int xmon_wants_key; | 128 | int xmon_wants_key; |
215 | int xmon_adb_keycode; | ||
216 | |||
217 | #ifdef CONFIG_BOOTX_TEXT | ||
218 | static int xmon_adb_shiftstate; | ||
219 | |||
220 | static unsigned char xmon_keytab[128] = | ||
221 | "asdfhgzxcv\000bqwer" /* 0x00 - 0x0f */ | ||
222 | "yt123465=97-80]o" /* 0x10 - 0x1f */ | ||
223 | "u[ip\rlj'k;\\,/nm." /* 0x20 - 0x2f */ | ||
224 | "\t `\177\0\033\0\0\0\0\0\0\0\0\0\0" /* 0x30 - 0x3f */ | ||
225 | "\0.\0*\0+\0\0\0\0\0/\r\0-\0" /* 0x40 - 0x4f */ | ||
226 | "\0\0000123456789\0\0\0"; /* 0x50 - 0x5f */ | ||
227 | |||
228 | static unsigned char xmon_shift_keytab[128] = | ||
229 | "ASDFHGZXCV\000BQWER" /* 0x00 - 0x0f */ | ||
230 | "YT!@#$^%+(&_*)}O" /* 0x10 - 0x1f */ | ||
231 | "U{IP\rLJ\"K:|<?NM>" /* 0x20 - 0x2f */ | ||
232 | "\t ~\177\0\033\0\0\0\0\0\0\0\0\0\0" /* 0x30 - 0x3f */ | ||
233 | "\0.\0*\0+\0\0\0\0\0/\r\0-\0" /* 0x40 - 0x4f */ | ||
234 | "\0\0000123456789\0\0\0"; /* 0x50 - 0x5f */ | ||
235 | |||
236 | static int | ||
237 | xmon_get_adb_key(void) | ||
238 | { | ||
239 | int k, t, on; | ||
240 | 129 | ||
241 | xmon_wants_key = 1; | ||
242 | for (;;) { | ||
243 | xmon_adb_keycode = -1; | ||
244 | t = 0; | ||
245 | on = 0; | ||
246 | do { | ||
247 | if (--t < 0) { | ||
248 | on = 1 - on; | ||
249 | btext_drawchar(on? 0xdb: 0x20); | ||
250 | btext_drawchar('\b'); | ||
251 | t = 200000; | ||
252 | } | ||
253 | do_poll_adb(); | ||
254 | } while (xmon_adb_keycode == -1); | ||
255 | k = xmon_adb_keycode; | ||
256 | if (on) | ||
257 | btext_drawstring(" \b"); | ||
258 | |||
259 | /* test for shift keys */ | ||
260 | if ((k & 0x7f) == 0x38 || (k & 0x7f) == 0x7b) { | ||
261 | xmon_adb_shiftstate = (k & 0x80) == 0; | ||
262 | continue; | ||
263 | } | ||
264 | if (k >= 0x80) | ||
265 | continue; /* ignore up transitions */ | ||
266 | k = (xmon_adb_shiftstate? xmon_shift_keytab: xmon_keytab)[k]; | ||
267 | if (k != 0) | ||
268 | break; | ||
269 | } | ||
270 | xmon_wants_key = 0; | ||
271 | return k; | ||
272 | } | ||
273 | #endif /* CONFIG_BOOTX_TEXT */ | ||
274 | 130 | ||
275 | int | 131 | int |
276 | xmon_read(void *handle, void *ptr, int nb) | 132 | xmon_read(void *handle, void *ptr, int nb) |
@@ -278,18 +134,11 @@ xmon_read(void *handle, void *ptr, int nb) | |||
278 | char *p = ptr; | 134 | char *p = ptr; |
279 | int i; | 135 | int i; |
280 | 136 | ||
281 | #ifdef CONFIG_BOOTX_TEXT | ||
282 | if (use_screen) { | ||
283 | for (i = 0; i < nb; ++i) | ||
284 | *p++ = xmon_get_adb_key(); | ||
285 | return i; | ||
286 | } | ||
287 | #endif | ||
288 | if (!scc_initialized) | 137 | if (!scc_initialized) |
289 | xmon_init_scc(); | 138 | xmon_init_scc(); |
290 | for (i = 0; i < nb; ++i) { | 139 | for (i = 0; i < nb; ++i) { |
291 | while ((*sccc & RXRDY) == 0) | 140 | while ((*sccc & RXRDY) == 0) |
292 | do_poll_adb(); | 141 | ; |
293 | buf_access(); | 142 | buf_access(); |
294 | *p++ = *sccd; | 143 | *p++ = *sccd; |
295 | } | 144 | } |
@@ -300,7 +149,7 @@ int | |||
300 | xmon_read_poll(void) | 149 | xmon_read_poll(void) |
301 | { | 150 | { |
302 | if ((*sccc & RXRDY) == 0) { | 151 | if ((*sccc & RXRDY) == 0) { |
303 | do_poll_adb(); | 152 | ; |
304 | return -1; | 153 | return -1; |
305 | } | 154 | } |
306 | buf_access(); | 155 | buf_access(); |
@@ -310,15 +159,6 @@ xmon_read_poll(void) | |||
310 | void | 159 | void |
311 | xmon_init_scc(void) | 160 | xmon_init_scc(void) |
312 | { | 161 | { |
313 | if ( _machine == _MACH_chrp ) | ||
314 | { | ||
315 | sccd[3] = 0x83; eieio(); /* LCR = 8N1 + DLAB */ | ||
316 | sccd[0] = 12; eieio(); /* DLL = 9600 baud */ | ||
317 | sccd[1] = 0; eieio(); | ||
318 | sccd[2] = 0; eieio(); /* FCR = 0 */ | ||
319 | sccd[3] = 3; eieio(); /* LCR = 8N1 */ | ||
320 | sccd[1] = 0; eieio(); /* IER = 0 */ | ||
321 | } | ||
322 | scc_initialized = 1; | 162 | scc_initialized = 1; |
323 | if (via_modem) { | 163 | if (via_modem) { |
324 | for (;;) { | 164 | for (;;) { |
@@ -334,22 +174,6 @@ xmon_init_scc(void) | |||
334 | } | 174 | } |
335 | } | 175 | } |
336 | 176 | ||
337 | #if 0 | ||
338 | extern int (*prom_entry)(void *); | ||
339 | |||
340 | int | ||
341 | xmon_exit(void) | ||
342 | { | ||
343 | struct prom_args { | ||
344 | char *service; | ||
345 | } args; | ||
346 | |||
347 | for (;;) { | ||
348 | args.service = "exit"; | ||
349 | (*prom_entry)(&args); | ||
350 | } | ||
351 | } | ||
352 | #endif | ||
353 | 177 | ||
354 | void *xmon_stdin; | 178 | void *xmon_stdin; |
355 | void *xmon_stdout; | 179 | void *xmon_stdout; |
diff --git a/arch/ppc/xmon/xmon.c b/arch/ppc/xmon/xmon.c index bdaf6597b4..06fa44b5c6 100644 --- a/arch/ppc/xmon/xmon.c +++ b/arch/ppc/xmon/xmon.c | |||
@@ -12,8 +12,6 @@ | |||
12 | #include <linux/kallsyms.h> | 12 | #include <linux/kallsyms.h> |
13 | #include <asm/ptrace.h> | 13 | #include <asm/ptrace.h> |
14 | #include <asm/string.h> | 14 | #include <asm/string.h> |
15 | #include <asm/prom.h> | ||
16 | #include <asm/bootx.h> | ||
17 | #include <asm/machdep.h> | 15 | #include <asm/machdep.h> |
18 | #include <asm/xmon.h> | 16 | #include <asm/xmon.h> |
19 | #include "nonstdio.h" | 17 | #include "nonstdio.h" |
@@ -101,9 +99,6 @@ void cacheflush(void); | |||
101 | static void cpu_cmd(void); | 99 | static void cpu_cmd(void); |
102 | #endif /* CONFIG_SMP */ | 100 | #endif /* CONFIG_SMP */ |
103 | static void csum(void); | 101 | static void csum(void); |
104 | #ifdef CONFIG_BOOTX_TEXT | ||
105 | static void vidcmds(void); | ||
106 | #endif | ||
107 | static void bootcmds(void); | 102 | static void bootcmds(void); |
108 | static void proccall(void); | 103 | static void proccall(void); |
109 | static void printtime(void); | 104 | static void printtime(void); |
@@ -522,11 +517,6 @@ cmds(struct pt_regs *excp) | |||
522 | cpu_cmd(); | 517 | cpu_cmd(); |
523 | break; | 518 | break; |
524 | #endif /* CONFIG_SMP */ | 519 | #endif /* CONFIG_SMP */ |
525 | #ifdef CONFIG_BOOTX_TEXT | ||
526 | case 'v': | ||
527 | vidcmds(); | ||
528 | break; | ||
529 | #endif | ||
530 | case 'z': | 520 | case 'z': |
531 | bootcmds(); | 521 | bootcmds(); |
532 | break; | 522 | break; |
@@ -618,43 +608,6 @@ static void cpu_cmd(void) | |||
618 | } | 608 | } |
619 | #endif /* CONFIG_SMP */ | 609 | #endif /* CONFIG_SMP */ |
620 | 610 | ||
621 | #ifdef CONFIG_BOOTX_TEXT | ||
622 | extern boot_infos_t disp_bi; | ||
623 | |||
624 | static void vidcmds(void) | ||
625 | { | ||
626 | int c = inchar(); | ||
627 | unsigned int val, w; | ||
628 | extern int boot_text_mapped; | ||
629 | |||
630 | if (!boot_text_mapped) | ||
631 | return; | ||
632 | if (c != '\n' && scanhex(&val)) { | ||
633 | switch (c) { | ||
634 | case 'd': | ||
635 | w = disp_bi.dispDeviceRowBytes | ||
636 | / (disp_bi.dispDeviceDepth >> 3); | ||
637 | disp_bi.dispDeviceDepth = val; | ||
638 | disp_bi.dispDeviceRowBytes = w * (val >> 3); | ||
639 | return; | ||
640 | case 'p': | ||
641 | disp_bi.dispDeviceRowBytes = val; | ||
642 | return; | ||
643 | case 'w': | ||
644 | disp_bi.dispDeviceRect[2] = val; | ||
645 | return; | ||
646 | case 'h': | ||
647 | disp_bi.dispDeviceRect[3] = val; | ||
648 | return; | ||
649 | } | ||
650 | } | ||
651 | printf("W = %d (0x%x) H = %d (0x%x) D = %d (0x%x) P = %d (0x%x)\n", | ||
652 | disp_bi.dispDeviceRect[2], disp_bi.dispDeviceRect[2], | ||
653 | disp_bi.dispDeviceRect[3], disp_bi.dispDeviceRect[3], | ||
654 | disp_bi.dispDeviceDepth, disp_bi.dispDeviceDepth, | ||
655 | disp_bi.dispDeviceRowBytes, disp_bi.dispDeviceRowBytes); | ||
656 | } | ||
657 | #endif /* CONFIG_BOOTX_TEXT */ | ||
658 | 611 | ||
659 | static unsigned short fcstab[256] = { | 612 | static unsigned short fcstab[256] = { |
660 | 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, | 613 | 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, |
@@ -1020,7 +973,6 @@ dump_hash_table(void) | |||
1020 | } | 973 | } |
1021 | #else | 974 | #else |
1022 | 975 | ||
1023 | #ifndef CONFIG_PPC64BRIDGE | ||
1024 | static void | 976 | static void |
1025 | dump_hash_table_seg(unsigned seg, unsigned start, unsigned end) | 977 | dump_hash_table_seg(unsigned seg, unsigned start, unsigned end) |
1026 | { | 978 | { |
@@ -1079,66 +1031,6 @@ dump_hash_table_seg(unsigned seg, unsigned start, unsigned end) | |||
1079 | printf(" ... %x\n", last_va); | 1031 | printf(" ... %x\n", last_va); |
1080 | } | 1032 | } |
1081 | 1033 | ||
1082 | #else /* CONFIG_PPC64BRIDGE */ | ||
1083 | static void | ||
1084 | dump_hash_table_seg(unsigned seg, unsigned start, unsigned end) | ||
1085 | { | ||
1086 | extern void *Hash; | ||
1087 | extern unsigned long Hash_size; | ||
1088 | unsigned *htab = Hash; | ||
1089 | unsigned hsize = Hash_size; | ||
1090 | unsigned v, hmask, va, last_va; | ||
1091 | int found, last_found, i; | ||
1092 | unsigned *hg, w1, last_w2, last_va0; | ||
1093 | |||
1094 | last_found = 0; | ||
1095 | hmask = hsize / 128 - 1; | ||
1096 | va = start; | ||
1097 | start = (start >> 12) & 0xffff; | ||
1098 | end = (end >> 12) & 0xffff; | ||
1099 | for (v = start; v < end; ++v) { | ||
1100 | found = 0; | ||
1101 | hg = htab + (((v ^ seg) & hmask) * 32); | ||
1102 | w1 = 1 | (seg << 12) | ((v & 0xf800) >> 4); | ||
1103 | for (i = 0; i < 8; ++i, hg += 4) { | ||
1104 | if (hg[1] == w1) { | ||
1105 | found = 1; | ||
1106 | break; | ||
1107 | } | ||
1108 | } | ||
1109 | if (!found) { | ||
1110 | w1 ^= 2; | ||
1111 | hg = htab + ((~(v ^ seg) & hmask) * 32); | ||
1112 | for (i = 0; i < 8; ++i, hg += 4) { | ||
1113 | if (hg[1] == w1) { | ||
1114 | found = 1; | ||
1115 | break; | ||
1116 | } | ||
1117 | } | ||
1118 | } | ||
1119 | if (!(last_found && found && (hg[3] & ~0x180) == last_w2 + 4096)) { | ||
1120 | if (last_found) { | ||
1121 | if (last_va != last_va0) | ||
1122 | printf(" ... %x", last_va); | ||
1123 | printf("\n"); | ||
1124 | } | ||
1125 | if (found) { | ||
1126 | printf("%x to %x", va, hg[3]); | ||
1127 | last_va0 = va; | ||
1128 | } | ||
1129 | last_found = found; | ||
1130 | } | ||
1131 | if (found) { | ||
1132 | last_w2 = hg[3] & ~0x180; | ||
1133 | last_va = va; | ||
1134 | } | ||
1135 | va += 4096; | ||
1136 | } | ||
1137 | if (last_found) | ||
1138 | printf(" ... %x\n", last_va); | ||
1139 | } | ||
1140 | #endif /* CONFIG_PPC64BRIDGE */ | ||
1141 | |||
1142 | static unsigned hash_ctx; | 1034 | static unsigned hash_ctx; |
1143 | static unsigned hash_start; | 1035 | static unsigned hash_start; |
1144 | static unsigned hash_end; | 1036 | static unsigned hash_end; |