.. | .. |
---|
94 | 94 | void set_fiq_handler(void *start, unsigned int length) |
---|
95 | 95 | { |
---|
96 | 96 | void *base = vectors_page; |
---|
97 | | - unsigned offset = FIQ_OFFSET; |
---|
| 97 | + unsigned int volatile offset = FIQ_OFFSET; |
---|
98 | 98 | |
---|
| 99 | + offset &= 0xfffffffc; |
---|
99 | 100 | memcpy(base + offset, start, length); |
---|
100 | 101 | if (!cache_is_vipt_nonaliasing()) |
---|
101 | | - flush_icache_range((unsigned long)base + offset, offset + |
---|
102 | | - length); |
---|
| 102 | + flush_icache_range((unsigned long)base + offset, |
---|
| 103 | + (unsigned long)base + offset + length); |
---|
103 | 104 | flush_icache_range(0xffff0000 + offset, 0xffff0000 + offset + length); |
---|
104 | 105 | } |
---|
105 | 106 | |
---|