MA35D1 打RT_PREEMPT后编译异常

cwlin0 |浏览121次
收藏|2023/08/04 13:58

往MA35D1内核5.10.140版本打入RT_PREEMPT实时补丁编译内核报错,出现下面错误:

          drivers/spi/spi-ma35d1-qspi.c: In function ‘nuvoton_spi_probe’:
          ./include/linux/spinlock_types_rt.h:32:2: error: expected expression before ‘{’ token
               32 | { .lock = __RT_SPIN_INITIALIZER(name.lock), \
                    | ^
          drivers/spi/spi-ma35d1-qspi.c:973:42: note: in expansion of macro ‘__SPIN_LOCK_UNLOCKED’
             973 | nuvoton->slave_txdone.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_txdone.lock);
                    | ^~~~~~~~~~~~~~~~~~~~
          ./include/linux/spinlock_types_rt.h:32:2: error: expected expression before ‘{’ token
               32 | { .lock = __RT_SPIN_INITIALIZER(name.lock), \
                    | ^
          drivers/spi/spi-ma35d1-qspi.c:977:42: note: in expansion of macro ‘__SPIN_LOCK_UNLOCKED’
             977 | nuvoton->slave_rxdone.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_rxdone.lock);
                   

满意回答

2023/08/04 14:23

参考文档里的下面方式修改即可:

修改./driver/spi/spi-ma35d1-spi.c line 905

修改./driver/spi/spi-ma35d1-spi.c line 969

原代碼為

nuvoton->slave_done.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_done.lock);

修改為

#ifndef CONFIG_PREEMPT_RT

nuvoton->slave_done.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_done.lock);

#else

nuvoton->slave_done.lock = (spinlock_t)__SPIN_LOCK_UNLOCKED(nuvoton->slave_done);

#endif


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...