1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /***************************************************************************
4 * Copyright (C) 2007 by Pavel Chromy *
6 ***************************************************************************/
10 /* debug channel read (debugger->MCU) */
13 volatile uint32 dcc_reg;
16 asm volatile ("mrc p14, 0, %0, C0, C0" : "=r" (dcc_reg) :);
17 } while ((dcc_reg&1) == 0);
19 asm volatile ("mrc p14, 0, %0, C1, C0" : "=r" (dcc_reg) :);
24 /* debug channel write (MCU->debugger) */
25 int dcc_wr(uint32 data)
27 volatile uint32 dcc_reg;
30 asm volatile ("mrc p14, 0, %0, C0, C0" : "=r" (dcc_reg) :);
31 /* operation controlled by master, cancel operation
32 upon reception of data for immediate response */
33 if (dcc_reg&1) return -1;
36 asm volatile ("mcr p14, 0, %0, C1, C0" : : "r" (data));