diff options
Diffstat (limited to 'arch/sh/kernel/io_trapped.c')
-rw-r--r-- | arch/sh/kernel/io_trapped.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c index 77dfecb64373..69be603aa2d7 100644 --- a/arch/sh/kernel/io_trapped.c +++ b/arch/sh/kernel/io_trapped.c | |||
@@ -112,14 +112,15 @@ void __iomem *match_trapped_io_handler(struct list_head *list, | |||
112 | struct trapped_io *tiop; | 112 | struct trapped_io *tiop; |
113 | struct resource *res; | 113 | struct resource *res; |
114 | int k, len; | 114 | int k, len; |
115 | unsigned long flags; | ||
115 | 116 | ||
116 | spin_lock_irq(&trapped_lock); | 117 | spin_lock_irqsave(&trapped_lock, flags); |
117 | list_for_each_entry(tiop, list, list) { | 118 | list_for_each_entry(tiop, list, list) { |
118 | voffs = 0; | 119 | voffs = 0; |
119 | for (k = 0; k < tiop->num_resources; k++) { | 120 | for (k = 0; k < tiop->num_resources; k++) { |
120 | res = tiop->resource + k; | 121 | res = tiop->resource + k; |
121 | if (res->start == offset) { | 122 | if (res->start == offset) { |
122 | spin_unlock_irq(&trapped_lock); | 123 | spin_unlock_irqrestore(&trapped_lock, flags); |
123 | return tiop->virt_base + voffs; | 124 | return tiop->virt_base + voffs; |
124 | } | 125 | } |
125 | 126 | ||
@@ -127,7 +128,7 @@ void __iomem *match_trapped_io_handler(struct list_head *list, | |||
127 | voffs += roundup(len, PAGE_SIZE); | 128 | voffs += roundup(len, PAGE_SIZE); |
128 | } | 129 | } |
129 | } | 130 | } |
130 | spin_unlock_irq(&trapped_lock); | 131 | spin_unlock_irqrestore(&trapped_lock, flags); |
131 | return NULL; | 132 | return NULL; |
132 | } | 133 | } |
133 | EXPORT_SYMBOL_GPL(match_trapped_io_handler); | 134 | EXPORT_SYMBOL_GPL(match_trapped_io_handler); |
@@ -283,7 +284,8 @@ int handle_trapped_io(struct pt_regs *regs, unsigned long address) | |||
283 | return 0; | 284 | return 0; |
284 | } | 285 | } |
285 | 286 | ||
286 | tmp = handle_unaligned_access(instruction, regs, &trapped_io_access); | 287 | tmp = handle_unaligned_access(instruction, regs, |
288 | &trapped_io_access, 1); | ||
287 | set_fs(oldfs); | 289 | set_fs(oldfs); |
288 | return tmp == 0; | 290 | return tmp == 0; |
289 | } | 291 | } |