diff options
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/Makefile | 1 | ||||
-rw-r--r-- | arch/alpha/kernel/core_t2.c | 2 | ||||
-rw-r--r-- | arch/alpha/kernel/pci.c | 17 | ||||
-rw-r--r-- | arch/alpha/kernel/traps.c | 3 | ||||
-rw-r--r-- | arch/alpha/kernel/vmlinux.lds.S | 14 |
5 files changed, 29 insertions, 8 deletions
diff --git a/arch/alpha/Makefile b/arch/alpha/Makefile index 4e1a8e2c4541..4759fe751aa1 100644 --- a/arch/alpha/Makefile +++ b/arch/alpha/Makefile | |||
@@ -13,6 +13,7 @@ NM := $(NM) -B | |||
13 | LDFLAGS_vmlinux := -static -N #-relax | 13 | LDFLAGS_vmlinux := -static -N #-relax |
14 | CHECKFLAGS += -D__alpha__ -m64 | 14 | CHECKFLAGS += -D__alpha__ -m64 |
15 | cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data | 15 | cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data |
16 | cflags-y += $(call cc-option, -fno-jump-tables) | ||
16 | 17 | ||
17 | cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4 | 18 | cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4 |
18 | cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5 | 19 | cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5 |
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c index c0750291b44a..d9980d47ab81 100644 --- a/arch/alpha/kernel/core_t2.c +++ b/arch/alpha/kernel/core_t2.c | |||
@@ -74,6 +74,8 @@ | |||
74 | # define DBG(args) | 74 | # define DBG(args) |
75 | #endif | 75 | #endif |
76 | 76 | ||
77 | DEFINE_SPINLOCK(t2_hae_lock); | ||
78 | |||
77 | static volatile unsigned int t2_mcheck_any_expected; | 79 | static volatile unsigned int t2_mcheck_any_expected; |
78 | static volatile unsigned int t2_mcheck_last_taken; | 80 | static volatile unsigned int t2_mcheck_last_taken; |
79 | 81 | ||
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c index 36ab22a7ea12..5cf45fc51343 100644 --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c | |||
@@ -71,6 +71,23 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_i | |||
71 | static void __init | 71 | static void __init |
72 | quirk_cypress(struct pci_dev *dev) | 72 | quirk_cypress(struct pci_dev *dev) |
73 | { | 73 | { |
74 | /* The Notorious Cy82C693 chip. */ | ||
75 | |||
76 | /* The generic legacy mode IDE fixup in drivers/pci/probe.c | ||
77 | doesn't work correctly with the Cypress IDE controller as | ||
78 | it has non-standard register layout. Fix that. */ | ||
79 | if (dev->class >> 8 == PCI_CLASS_STORAGE_IDE) { | ||
80 | dev->resource[2].start = dev->resource[3].start = 0; | ||
81 | dev->resource[2].end = dev->resource[3].end = 0; | ||
82 | dev->resource[2].flags = dev->resource[3].flags = 0; | ||
83 | if (PCI_FUNC(dev->devfn) == 2) { | ||
84 | dev->resource[0].start = 0x170; | ||
85 | dev->resource[0].end = 0x177; | ||
86 | dev->resource[1].start = 0x376; | ||
87 | dev->resource[1].end = 0x376; | ||
88 | } | ||
89 | } | ||
90 | |||
74 | /* The Cypress bridge responds on the PCI bus in the address range | 91 | /* The Cypress bridge responds on the PCI bus in the address range |
75 | 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no | 92 | 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no |
76 | way to turn this off. The bridge also supports several extended | 93 | way to turn this off. The bridge also supports several extended |
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index dc57790250d2..c778779007fc 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c | |||
@@ -447,7 +447,7 @@ struct unaligned_stat { | |||
447 | 447 | ||
448 | 448 | ||
449 | /* Macro for exception fixup code to access integer registers. */ | 449 | /* Macro for exception fixup code to access integer registers. */ |
450 | #define una_reg(r) (regs->regs[(r) >= 16 && (r) <= 18 ? (r)+19 : (r)]) | 450 | #define una_reg(r) (_regs[(r) >= 16 && (r) <= 18 ? (r)+19 : (r)]) |
451 | 451 | ||
452 | 452 | ||
453 | asmlinkage void | 453 | asmlinkage void |
@@ -456,6 +456,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg, | |||
456 | { | 456 | { |
457 | long error, tmp1, tmp2, tmp3, tmp4; | 457 | long error, tmp1, tmp2, tmp3, tmp4; |
458 | unsigned long pc = regs->pc - 4; | 458 | unsigned long pc = regs->pc - 4; |
459 | unsigned long *_regs = regs->regs; | ||
459 | const struct exception_table_entry *fixup; | 460 | const struct exception_table_entry *fixup; |
460 | 461 | ||
461 | unaligned[0].count++; | 462 | unaligned[0].count++; |
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index f13249be17c5..ef37fc1acaea 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S | |||
@@ -25,6 +25,13 @@ SECTIONS | |||
25 | } :kernel | 25 | } :kernel |
26 | _etext = .; /* End of text section */ | 26 | _etext = .; /* End of text section */ |
27 | 27 | ||
28 | NOTES :kernel :note | ||
29 | .dummy : { | ||
30 | *(.dummy) | ||
31 | } :kernel | ||
32 | |||
33 | RODATA | ||
34 | |||
28 | /* Exception table */ | 35 | /* Exception table */ |
29 | . = ALIGN(16); | 36 | . = ALIGN(16); |
30 | __ex_table : { | 37 | __ex_table : { |
@@ -33,13 +40,6 @@ SECTIONS | |||
33 | __stop___ex_table = .; | 40 | __stop___ex_table = .; |
34 | } | 41 | } |
35 | 42 | ||
36 | NOTES :kernel :note | ||
37 | .dummy : { | ||
38 | *(.dummy) | ||
39 | } :kernel | ||
40 | |||
41 | RODATA | ||
42 | |||
43 | /* Will be freed after init */ | 43 | /* Will be freed after init */ |
44 | . = ALIGN(PAGE_SIZE); | 44 | . = ALIGN(PAGE_SIZE); |
45 | /* Init code and data */ | 45 | /* Init code and data */ |