diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 12:45:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 12:45:57 -0400 |
commit | e945e849e18006c131fe59252ab920c6b5f7959c (patch) | |
tree | a86b1a299c5cebed14889fb638cb6808417b5f4a /include/asm-sparc64 | |
parent | 77a50df2b14c8d3ee3c58c21c4a0e0157570df09 (diff) | |
parent | 194f1a68b93e959ede6ec363db4714e630bdbb6a (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc: video drivers: add facility level
sparc: tcx.c make tcx_init and tcx_exit static
sparc: ffb.c make ffb_init and ffb_exit static
sparc: cg14.c make cg14_init and cg15_exit static
sparc: bw2.c fix bw2_exit
sparc64: Fix accidental syscall restart on child return from clone/fork/vfork.
sparc64: Clean up handling of pt_regs trap type encoding.
sparc: Remove old style signal frame support.
sparc64: Kill bogus RT_ALIGNEDSZ macro from signal.c
sparc: sunzilog.c remove unused argument
sparc: fix drivers/video/tcx.c warning
sparc64: Kill unused local ISA bus layer.
input: Rewrite sparcspkr device probing.
sparc64: Do not ignore 'pmu' device ranges.
sparc64: Kill ISA_FLOPPY_WORKS code.
sparc64: Kill CONFIG_SPARC32_COMPAT
sparc64: Cleanups and corrections for arch/sparc64/Kconfig
sparc64: Fix wedged irq regression.
Diffstat (limited to 'include/asm-sparc64')
-rw-r--r-- | include/asm-sparc64/floppy.h | 84 | ||||
-rw-r--r-- | include/asm-sparc64/isa.h | 47 | ||||
-rw-r--r-- | include/asm-sparc64/ptrace.h | 23 | ||||
-rw-r--r-- | include/asm-sparc64/thread_info.h | 6 |
4 files changed, 25 insertions, 135 deletions
diff --git a/include/asm-sparc64/floppy.h b/include/asm-sparc64/floppy.h index c47f58d6c15c..ca19f80a9b7d 100644 --- a/include/asm-sparc64/floppy.h +++ b/include/asm-sparc64/floppy.h | |||
@@ -293,7 +293,6 @@ static int sun_fd_eject(int drive) | |||
293 | 293 | ||
294 | #ifdef CONFIG_PCI | 294 | #ifdef CONFIG_PCI |
295 | #include <asm/ebus.h> | 295 | #include <asm/ebus.h> |
296 | #include <asm/isa.h> | ||
297 | #include <asm/ns87303.h> | 296 | #include <asm/ns87303.h> |
298 | 297 | ||
299 | static struct ebus_dma_info sun_pci_fd_ebus_dma; | 298 | static struct ebus_dma_info sun_pci_fd_ebus_dma; |
@@ -558,82 +557,6 @@ static int __init ebus_fdthree_p(struct linux_ebus_device *edev) | |||
558 | } | 557 | } |
559 | #endif | 558 | #endif |
560 | 559 | ||
561 | #ifdef CONFIG_PCI | ||
562 | #undef ISA_FLOPPY_WORKS | ||
563 | |||
564 | #ifdef ISA_FLOPPY_WORKS | ||
565 | static unsigned long __init isa_floppy_init(void) | ||
566 | { | ||
567 | struct sparc_isa_bridge *isa_br; | ||
568 | struct sparc_isa_device *isa_dev = NULL; | ||
569 | |||
570 | for_each_isa(isa_br) { | ||
571 | for_each_isadev(isa_dev, isa_br) { | ||
572 | if (!strcmp(isa_dev->prom_node->name, "dma")) { | ||
573 | struct sparc_isa_device *child = | ||
574 | isa_dev->child; | ||
575 | |||
576 | while (child) { | ||
577 | if (!strcmp(child->prom_node->name, | ||
578 | "floppy")) { | ||
579 | isa_dev = child; | ||
580 | goto isa_done; | ||
581 | } | ||
582 | child = child->next; | ||
583 | } | ||
584 | } | ||
585 | } | ||
586 | } | ||
587 | isa_done: | ||
588 | if (!isa_dev) | ||
589 | return 0; | ||
590 | |||
591 | /* We could use DMA on devices behind the ISA bridge, but... | ||
592 | * | ||
593 | * There is a slight problem. Normally on x86 kit the x86 processor | ||
594 | * delays I/O port instructions when the ISA bus "dma in progress" | ||
595 | * signal is active. Well, sparc64 systems do not monitor this | ||
596 | * signal thus we would need to block all I/O port accesses in software | ||
597 | * when a dma transfer is active for some device. | ||
598 | */ | ||
599 | |||
600 | sun_fdc = (struct sun_flpy_controller *)isa_dev->resource.start; | ||
601 | FLOPPY_IRQ = isa_dev->irq; | ||
602 | |||
603 | sun_fdops.fd_inb = sun_pci_fd_inb; | ||
604 | sun_fdops.fd_outb = sun_pci_fd_outb; | ||
605 | |||
606 | can_use_virtual_dma = use_virtual_dma = 1; | ||
607 | sun_fdops.fd_enable_dma = sun_fd_enable_dma; | ||
608 | sun_fdops.fd_disable_dma = sun_fd_disable_dma; | ||
609 | sun_fdops.fd_set_dma_mode = sun_fd_set_dma_mode; | ||
610 | sun_fdops.fd_set_dma_addr = sun_fd_set_dma_addr; | ||
611 | sun_fdops.fd_set_dma_count = sun_fd_set_dma_count; | ||
612 | sun_fdops.get_dma_residue = sun_get_dma_residue; | ||
613 | |||
614 | sun_fdops.fd_request_irq = sun_fd_request_irq; | ||
615 | sun_fdops.fd_free_irq = sun_fd_free_irq; | ||
616 | |||
617 | /* Floppy eject is manual. Actually, could determine this | ||
618 | * via presence of 'manual' property in OBP node. | ||
619 | */ | ||
620 | sun_fdops.fd_eject = sun_pci_fd_eject; | ||
621 | |||
622 | fdc_status = (unsigned long) &sun_fdc->status_82077; | ||
623 | |||
624 | allowed_drive_mask = 0; | ||
625 | sun_floppy_types[0] = 0; | ||
626 | sun_floppy_types[1] = 4; | ||
627 | |||
628 | sun_pci_broken_drive = 1; | ||
629 | sun_fdops.fd_outb = sun_pci_fd_broken_outb; | ||
630 | |||
631 | return sun_floppy_types[0]; | ||
632 | } | ||
633 | #endif /* ISA_FLOPPY_WORKS */ | ||
634 | |||
635 | #endif | ||
636 | |||
637 | static unsigned long __init sun_floppy_init(void) | 560 | static unsigned long __init sun_floppy_init(void) |
638 | { | 561 | { |
639 | char state[128]; | 562 | char state[128]; |
@@ -667,13 +590,8 @@ static unsigned long __init sun_floppy_init(void) | |||
667 | } | 590 | } |
668 | } | 591 | } |
669 | ebus_done: | 592 | ebus_done: |
670 | if (!edev) { | 593 | if (!edev) |
671 | #ifdef ISA_FLOPPY_WORKS | ||
672 | return isa_floppy_init(); | ||
673 | #else | ||
674 | return 0; | 594 | return 0; |
675 | #endif | ||
676 | } | ||
677 | 595 | ||
678 | state_prop = of_get_property(edev->prom_node, "status", NULL); | 596 | state_prop = of_get_property(edev->prom_node, "status", NULL); |
679 | if (state_prop && !strncmp(state_prop, "disabled", 8)) | 597 | if (state_prop && !strncmp(state_prop, "disabled", 8)) |
diff --git a/include/asm-sparc64/isa.h b/include/asm-sparc64/isa.h deleted file mode 100644 index ecd9290f78d4..000000000000 --- a/include/asm-sparc64/isa.h +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | /* $Id: isa.h,v 1.1 2001/05/11 04:31:55 davem Exp $ | ||
2 | * isa.h: Sparc64 layer for PCI to ISA bridge devices. | ||
3 | * | ||
4 | * Copyright (C) 2001 David S. Miller (davem@redhat.com) | ||
5 | */ | ||
6 | |||
7 | #ifndef __SPARC64_ISA_H | ||
8 | #define __SPARC64_ISA_H | ||
9 | |||
10 | #include <asm/oplib.h> | ||
11 | #include <asm/prom.h> | ||
12 | #include <asm/of_device.h> | ||
13 | |||
14 | struct sparc_isa_bridge; | ||
15 | |||
16 | struct sparc_isa_device { | ||
17 | struct of_device ofdev; | ||
18 | struct sparc_isa_device *next; | ||
19 | struct sparc_isa_device *child; | ||
20 | struct sparc_isa_bridge *bus; | ||
21 | struct device_node *prom_node; | ||
22 | struct resource resource; | ||
23 | unsigned int irq; | ||
24 | }; | ||
25 | #define to_isa_device(d) container_of(d, struct sparc_isa_device, ofdev.dev) | ||
26 | |||
27 | struct sparc_isa_bridge { | ||
28 | struct of_device ofdev; | ||
29 | struct sparc_isa_bridge *next; | ||
30 | struct sparc_isa_device *devices; | ||
31 | struct pci_dev *self; | ||
32 | int index; | ||
33 | struct device_node *prom_node; | ||
34 | }; | ||
35 | #define to_isa_bridge(d) container_of(d, struct sparc_isa_bridge, ofdev.dev) | ||
36 | |||
37 | extern struct sparc_isa_bridge *isa_chain; | ||
38 | |||
39 | extern void isa_init(void); | ||
40 | |||
41 | #define for_each_isa(bus) \ | ||
42 | for((bus) = isa_chain; (bus); (bus) = (bus)->next) | ||
43 | |||
44 | #define for_each_isadev(dev, bus) \ | ||
45 | for((dev) = (bus)->devices; (dev); (dev) = (dev)->next) | ||
46 | |||
47 | #endif /* !(__SPARC64_ISA_H) */ | ||
diff --git a/include/asm-sparc64/ptrace.h b/include/asm-sparc64/ptrace.h index b4b951d570bb..714b81956f32 100644 --- a/include/asm-sparc64/ptrace.h +++ b/include/asm-sparc64/ptrace.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: ptrace.h,v 1.14 2002/02/09 19:49:32 davem Exp $ */ | ||
2 | #ifndef _SPARC64_PTRACE_H | 1 | #ifndef _SPARC64_PTRACE_H |
3 | #define _SPARC64_PTRACE_H | 2 | #define _SPARC64_PTRACE_H |
4 | 3 | ||
@@ -8,10 +7,15 @@ | |||
8 | * stack during a system call and basically all traps. | 7 | * stack during a system call and basically all traps. |
9 | */ | 8 | */ |
10 | 9 | ||
10 | /* This magic value must have the low 9 bits clear, | ||
11 | * as that is where we encode the %tt value, see below. | ||
12 | */ | ||
11 | #define PT_REGS_MAGIC 0x57ac6c00 | 13 | #define PT_REGS_MAGIC 0x57ac6c00 |
12 | 14 | ||
13 | #ifndef __ASSEMBLY__ | 15 | #ifndef __ASSEMBLY__ |
14 | 16 | ||
17 | #include <linux/types.h> | ||
18 | |||
15 | struct pt_regs { | 19 | struct pt_regs { |
16 | unsigned long u_regs[16]; /* globals and ins */ | 20 | unsigned long u_regs[16]; /* globals and ins */ |
17 | unsigned long tstate; | 21 | unsigned long tstate; |
@@ -33,6 +37,23 @@ struct pt_regs { | |||
33 | unsigned int magic; | 37 | unsigned int magic; |
34 | }; | 38 | }; |
35 | 39 | ||
40 | static inline int pt_regs_trap_type(struct pt_regs *regs) | ||
41 | { | ||
42 | return regs->magic & 0x1ff; | ||
43 | } | ||
44 | |||
45 | static inline int pt_regs_clear_trap_type(struct pt_regs *regs) | ||
46 | { | ||
47 | return regs->magic &= ~0x1ff; | ||
48 | } | ||
49 | |||
50 | static inline bool pt_regs_is_syscall(struct pt_regs *regs) | ||
51 | { | ||
52 | int tt = pt_regs_trap_type(regs); | ||
53 | |||
54 | return (tt == 0x110 || tt == 0x111 || tt == 0x16d); | ||
55 | } | ||
56 | |||
36 | struct pt_regs32 { | 57 | struct pt_regs32 { |
37 | unsigned int psr; | 58 | unsigned int psr; |
38 | unsigned int pc; | 59 | unsigned int pc; |
diff --git a/include/asm-sparc64/thread_info.h b/include/asm-sparc64/thread_info.h index 98252cd44dd6..71e42d1a80d9 100644 --- a/include/asm-sparc64/thread_info.h +++ b/include/asm-sparc64/thread_info.h | |||
@@ -1,5 +1,4 @@ | |||
1 | /* $Id: thread_info.h,v 1.1 2002/02/10 00:00:58 davem Exp $ | 1 | /* thread_info.h: sparc64 low-level thread information |
2 | * thread_info.h: sparc64 low-level thread information | ||
3 | * | 2 | * |
4 | * Copyright (C) 2002 David S. Miller (davem@redhat.com) | 3 | * Copyright (C) 2002 David S. Miller (davem@redhat.com) |
5 | */ | 4 | */ |
@@ -223,7 +222,7 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
223 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ | 222 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ |
224 | #define TIF_PERFCTR 4 /* performance counters active */ | 223 | #define TIF_PERFCTR 4 /* performance counters active */ |
225 | #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */ | 224 | #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */ |
226 | #define TIF_NEWSIGNALS 6 /* wants new-style signals */ | 225 | /* flag bit 6 is available */ |
227 | #define TIF_32BIT 7 /* 32-bit binary */ | 226 | #define TIF_32BIT 7 /* 32-bit binary */ |
228 | /* flag bit 8 is available */ | 227 | /* flag bit 8 is available */ |
229 | #define TIF_SECCOMP 9 /* secure computing */ | 228 | #define TIF_SECCOMP 9 /* secure computing */ |
@@ -242,7 +241,6 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
242 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) | 241 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) |
243 | #define _TIF_PERFCTR (1<<TIF_PERFCTR) | 242 | #define _TIF_PERFCTR (1<<TIF_PERFCTR) |
244 | #define _TIF_UNALIGNED (1<<TIF_UNALIGNED) | 243 | #define _TIF_UNALIGNED (1<<TIF_UNALIGNED) |
245 | #define _TIF_NEWSIGNALS (1<<TIF_NEWSIGNALS) | ||
246 | #define _TIF_32BIT (1<<TIF_32BIT) | 244 | #define _TIF_32BIT (1<<TIF_32BIT) |
247 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) | 245 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) |
248 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 246 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |