[RFC v3 1/9] arm: fiq: arbitrary mappings from IRQ to FIQ virqs

Daniel Thompson daniel.thompson at linaro.org
Thu Jun 5 06:08:30 PDT 2014


On 05/06/14 12:51, Russell King - ARM Linux wrote:
> On Thu, Jun 05, 2014 at 10:53:06AM +0100, Daniel Thompson wrote:
>>  static int fiq_def_op(void *ref, int relinquish)
>>  {
>> -	if (!relinquish)
>> +	if (!relinquish) {
>> +		unsigned offset = FIQ_OFFSET;
>> +		no_fiq_insn = *(unsigned long *)(0xffff0000 + offset);
>>  		set_fiq_handler(&no_fiq_insn, sizeof(no_fiq_insn));
>> +	}
> ...
>>  void __init init_FIQ(int start)
>>  {
>> -	unsigned offset = FIQ_OFFSET;
>> -	no_fiq_insn = *(unsigned long *)(0xffff0000 + offset);
>>  	fiq_start = start;
>>  }
> 
> This is wrong - when the default handler is "reinstalled", this change has
> the effect that we read the first instruction of the existing handler, and
> then write that same instruction back, rather than replacing the first
> instruction with the value that was there at boot.

Thanks. I'll fix this.



More information about the linux-arm-kernel mailing list