<font style="display: inline; font-size: 14px; font-family: Verdana;" __editorwarp__="1">Yes, i will!</font><br><div><div style="padding-top:10px;"><div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "punit vara";<punitvara@gmail.com>;</div><div><b>Date: </b> Sat, Jun 17, 2017 11:44 PM</div><div><b>To: </b> "Sichen Zhao"<1473996754@qq.com>; <wbr></div><div><b>Cc: </b> "rtems-devel@rtems.org"<devel@rtems.org>; "Christian Mauderer"<christian.mauderer@embedded-brains.de>; <wbr></div><div><b>Subject: </b> Re: [PATCH] Fix beagle bsp irq issue</div></div><div><br></div>Good job Sichen. Keep it up<br><br>On Sat, Jun 17, 2017 at 8:01 PM, Sichen Zhao <1473996754@qq.com> wrote:<br>> Enable/disable vector routines now check for a valid vector.<br>> Without these guards, the enable/disable vector routines<br>> will not work with the interrupt server.<br>> ---<br>>  c/src/lib/libbsp/arm/beagle/irq.c | 22 ++++++++++++++--------<br>>  1 file changed, 14 insertions(+), 8 deletions(-)<br>><br>> diff --git a/c/src/lib/libbsp/arm/beagle/irq.c b/c/src/lib/libbsp/arm/beagle/irq.c<br>> index d080a5e..35750ba 100644<br>> --- a/c/src/lib/libbsp/arm/beagle/irq.c<br>> +++ b/c/src/lib/libbsp/arm/beagle/irq.c<br>> @@ -98,11 +98,14 @@ static uint32_t omap_get_mir_reg(rtems_vector_number vector, uint32_t *const mas<br>>  rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)<br>>  {<br>>    uint32_t mask, cur;<br>> -  uint32_t mir_reg = omap_get_mir_reg(vector, &mask);<br>><br>> -  cur = mmio_read(omap_intr.base + mir_reg);<br>> -  mmio_write(omap_intr.base + mir_reg, cur & ~mask);<br>> -  flush_data_cache();<br>> +  if (bsp_interrupt_is_valid_vector(vector)) {<br>> +    uint32_t mir_reg = omap_get_mir_reg(vector, &mask);<br>> +<br>> +    cur = mmio_read(omap_intr.base + mir_reg);<br>> +    mmio_write(omap_intr.base + mir_reg, cur & ~mask);<br>> +    flush_data_cache();<br>> +  }<br>><br>>    return RTEMS_SUCCESSFUL;<br>>  }<br>> @@ -110,11 +113,14 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)<br>>  rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)<br>>  {<br>>    uint32_t mask, cur;<br>> -  uint32_t mir_reg = omap_get_mir_reg(vector, &mask);<br>><br>> -  cur = mmio_read(omap_intr.base + mir_reg);<br>> -  mmio_write(omap_intr.base + mir_reg, cur | mask);<br>> -  flush_data_cache();<br>> +  if (bsp_interrupt_is_valid_vector(vector)) {<br>> +    uint32_t mir_reg = omap_get_mir_reg(vector, &mask);<br>> +<br>> +    cur = mmio_read(omap_intr.base + mir_reg);<br>> +    mmio_write(omap_intr.base + mir_reg, cur | mask);<br>> +    flush_data_cache();<br>> +  }<br>><br>>    return RTEMS_SUCCESSFUL;<br>>  }<br>> --<br>> 2.7.4<br>><br></div></div></div>