forked from Imagelibrary/rtems
LEON3: fix console close handling
On SMP rtems_interrupt_lock_context must be used. Most tests fail with a NULL pointer exception when exiting, except on NGMP where main memory is at 0x00000000.
This commit is contained in:
@@ -355,12 +355,12 @@ static int leon3_console_last_close(int major, int minor, void *arg)
|
|||||||
{
|
{
|
||||||
struct rtems_termios_tty *tty = leon3_console_get_tty(arg);
|
struct rtems_termios_tty *tty = leon3_console_get_tty(arg);
|
||||||
struct apbuart_priv *uart = leon3_console_get_uart(minor);
|
struct apbuart_priv *uart = leon3_console_get_uart(minor);
|
||||||
rtems_interrupt_level level;
|
rtems_interrupt_lock_context lock_ctx;
|
||||||
|
|
||||||
/* Turn off RX interrupts */
|
/* Turn off RX interrupts */
|
||||||
rtems_termios_interrupt_lock_acquire(tty, level);
|
rtems_termios_interrupt_lock_acquire(tty, &lock_ctx);
|
||||||
uart->regs->ctrl &= ~(LEON_REG_UART_CTRL_RI);
|
uart->regs->ctrl &= ~(LEON_REG_UART_CTRL_RI);
|
||||||
rtems_termios_interrupt_lock_release(tty, level);
|
rtems_termios_interrupt_lock_release(tty, &lock_ctx);
|
||||||
|
|
||||||
/**** Flush device ****/
|
/**** Flush device ****/
|
||||||
while (uart->sending) {
|
while (uart->sending) {
|
||||||
|
|||||||
Reference in New Issue
Block a user