Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6

* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6:
[PARISC] Add NOTES section
[PARISC] Use compat_sys_getdents
[PARISC] Do not allow STI_CONSOLE to be modular
[PARISC] Clean up sti_flush
[PARISC] Add dummy isa_(bus|virt)_to_(virt|bus) inlines
[PARISC] Add empty <asm-parisc/vga.h>

+25 -154
-141
arch/parisc/kernel/sys_parisc32.c
··· 285 285 return err; 286 286 } 287 287 288 - struct linux32_dirent { 289 - u32 d_ino; 290 - compat_off_t d_off; 291 - u16 d_reclen; 292 - char d_name[1]; 293 - }; 294 - 295 - struct old_linux32_dirent { 296 - u32 d_ino; 297 - u32 d_offset; 298 - u16 d_namlen; 299 - char d_name[1]; 300 - }; 301 - 302 - struct getdents32_callback { 303 - struct linux32_dirent __user * current_dir; 304 - struct linux32_dirent __user * previous; 305 - int count; 306 - int error; 307 - }; 308 - 309 - struct readdir32_callback { 310 - struct old_linux32_dirent __user * dirent; 311 - int count; 312 - }; 313 - 314 - #define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de))) 315 - static int filldir32 (void *__buf, const char *name, int namlen, 316 - loff_t offset, u64 ino, unsigned int d_type) 317 - { 318 - struct linux32_dirent __user * dirent; 319 - struct getdents32_callback * buf = (struct getdents32_callback *) __buf; 320 - int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 1, 4); 321 - u32 d_ino; 322 - 323 - buf->error = -EINVAL; /* only used if we fail.. */ 324 - if (reclen > buf->count) 325 - return -EINVAL; 326 - d_ino = ino; 327 - if (sizeof(d_ino) < sizeof(ino) && d_ino != ino) 328 - return -EOVERFLOW; 329 - dirent = buf->previous; 330 - if (dirent) 331 - put_user(offset, &dirent->d_off); 332 - dirent = buf->current_dir; 333 - buf->previous = dirent; 334 - put_user(d_ino, &dirent->d_ino); 335 - put_user(reclen, &dirent->d_reclen); 336 - copy_to_user(dirent->d_name, name, namlen); 337 - put_user(0, dirent->d_name + namlen); 338 - dirent = ((void __user *)dirent) + reclen; 339 - buf->current_dir = dirent; 340 - buf->count -= reclen; 341 - return 0; 342 - } 343 - 344 - asmlinkage long 345 - sys32_getdents (unsigned int fd, void __user * dirent, unsigned int count) 346 - { 347 - struct file * file; 348 - struct linux32_dirent __user * lastdirent; 349 - struct getdents32_callback buf; 350 - int error; 351 - 352 - error = -EFAULT; 353 - if (!access_ok(VERIFY_WRITE, dirent, count)) 354 - goto out; 355 - 356 - error = -EBADF; 357 - file = fget(fd); 358 - if (!file) 359 - goto out; 360 - 361 - buf.current_dir = (struct linux32_dirent __user *) dirent; 362 - buf.previous = NULL; 363 - buf.count = count; 364 - buf.error = 0; 365 - 366 - error = vfs_readdir(file, filldir32, &buf); 367 - if (error < 0) 368 - goto out_putf; 369 - error = buf.error; 370 - lastdirent = buf.previous; 371 - if (lastdirent) { 372 - if (put_user(file->f_pos, &lastdirent->d_off)) 373 - error = -EFAULT; 374 - else 375 - error = count - buf.count; 376 - } 377 - 378 - out_putf: 379 - fput(file); 380 - out: 381 - return error; 382 - } 383 - 384 - static int fillonedir32(void * __buf, const char * name, int namlen, 385 - loff_t offset, u64 ino, unsigned int d_type) 386 - { 387 - struct readdir32_callback * buf = (struct readdir32_callback *) __buf; 388 - struct old_linux32_dirent __user * dirent; 389 - u32 d_ino; 390 - 391 - if (buf->count) 392 - return -EINVAL; 393 - d_ino = ino; 394 - if (sizeof(d_ino) < sizeof(ino) && d_ino != ino) 395 - return -EOVERFLOW; 396 - buf->count++; 397 - dirent = buf->dirent; 398 - put_user(d_ino, &dirent->d_ino); 399 - put_user(offset, &dirent->d_offset); 400 - put_user(namlen, &dirent->d_namlen); 401 - copy_to_user(dirent->d_name, name, namlen); 402 - put_user(0, dirent->d_name + namlen); 403 - return 0; 404 - } 405 - 406 - asmlinkage long 407 - sys32_readdir (unsigned int fd, void __user * dirent, unsigned int count) 408 - { 409 - int error; 410 - struct file * file; 411 - struct readdir32_callback buf; 412 - 413 - error = -EBADF; 414 - file = fget(fd); 415 - if (!file) 416 - goto out; 417 - 418 - buf.count = 0; 419 - buf.dirent = dirent; 420 - 421 - error = vfs_readdir(file, fillonedir32, &buf); 422 - if (error >= 0) 423 - error = buf.count; 424 - fput(file); 425 - out: 426 - return error; 427 - } 428 - 429 288 /*** copied from mips64 ***/ 430 289 /* 431 290 * Ooo, nasty. We need here to frob 32-bit unsigned longs to
+1 -3
arch/parisc/kernel/syscall_table.S
··· 222 222 ENTRY_SAME(setfsgid) 223 223 /* I think this might work */ 224 224 ENTRY_SAME(llseek) /* 140 */ 225 - /* struct linux_dirent has longs, like 'unsigned long d_ino' which 226 - * almost definitely should be 'ino_t d_ino' but it's too late now */ 227 - ENTRY_DIFF(getdents) 225 + ENTRY_COMP(getdents) 228 226 /* it is POSSIBLE that select will be OK because even though fd_set 229 227 * contains longs, the macros and sizes are clever. */ 230 228 ENTRY_COMP(select)
+2
arch/parisc/kernel/vmlinux.lds.S
··· 81 81 __ex_table : { *(__ex_table) } 82 82 __stop___ex_table = .; 83 83 84 + NOTES 85 + 84 86 __start___unwind = .; /* unwind info */ 85 87 .PARISC.unwind : { *(.PARISC.unwind) } 86 88 __stop___unwind = .;
+1 -1
drivers/video/console/Kconfig
··· 145 145 oriented. 146 146 147 147 config STI_CONSOLE 148 - tristate "STI text console" 148 + bool "STI text console" 149 149 depends on PARISC 150 150 default y 151 151 help
+5 -9
drivers/video/console/sticore.c
··· 232 232 } 233 233 234 234 235 - /* FIXME: Do we have another solution for this ? */ 236 - static void sti_flush(unsigned long from, unsigned long len) 235 + static void sti_flush(unsigned long start, unsigned long end) 237 236 { 238 - flush_data_cache(); 239 - flush_kernel_dcache_range(from, len); 240 - flush_icache_range(from, from+len); 237 + flush_icache_range(start, end); 241 238 } 242 239 243 240 void __devinit 244 241 sti_rom_copy(unsigned long base, unsigned long count, void *dest) 245 242 { 246 - unsigned long dest_len = count; 247 243 unsigned long dest_start = (unsigned long) dest; 248 244 249 245 /* this still needs to be revisited (see arch/parisc/mm/init.c:246) ! */ ··· 256 260 dest++; 257 261 } 258 262 259 - sti_flush(dest_start, dest_len); 263 + sti_flush(dest_start, (unsigned long)dest); 260 264 } 261 265 262 266 ··· 659 663 static void __devinit 660 664 sti_bmode_rom_copy(unsigned long base, unsigned long count, void *dest) 661 665 { 662 - unsigned long dest_len = count; 663 666 unsigned long dest_start = (unsigned long) dest; 664 667 665 668 while (count) { ··· 667 672 base += 4; 668 673 dest++; 669 674 } 670 - sti_flush(dest_start, dest_len); 675 + 676 + sti_flush(dest_start, (unsigned long)dest); 671 677 } 672 678 673 679 static struct sti_rom * __devinit
+10
include/asm-parisc/io.h
··· 15 15 #define virt_to_bus virt_to_phys 16 16 #define bus_to_virt phys_to_virt 17 17 18 + static inline unsigned long isa_bus_to_virt(unsigned long addr) { 19 + BUG(); 20 + return 0; 21 + } 22 + 23 + static inline unsigned long isa_virt_to_bus(void *addr) { 24 + BUG(); 25 + return 0; 26 + } 27 + 18 28 /* 19 29 * Memory mapped I/O 20 30 *
+6
include/asm-parisc/vga.h
··· 1 + #ifndef __ASM_PARISC_VGA_H__ 2 + #define __ASM_PARISC_VGA_H__ 3 + 4 + /* nothing */ 5 + 6 + #endif __ASM_PARISC_VGA_H__