11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * License. See the file "COPYING" in the main directory of this archive 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * for more details. 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1996 David S. Miller (dm@sgi.com) 725985edcedea6396277003854657b5f3cb31a628Lucas De Marchi * Compatibility with board caches, Ulf Carlsson 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/kernel.h> 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/sgialib.h> 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/bcache.h> 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 147034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle * IP22 boardcache is not compatible with board caches. Thus we disable it 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * during romvec action. Since r4xx0.c is always compiled and linked with your 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * kernel, this shouldn't cause any harm regardless what MIPS processor you 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * have. 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The ARC write and read functions seem to interfere with the serial lines 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * in some way. You should be careful with them. 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid prom_putchar(char c) 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ULONG cnt; 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds CHAR it = c; 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds bc_disable(); 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ArcWrite(1, &it, 1, &cnt); 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds bc_enable(); 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldschar prom_getchar(void) 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ULONG cnt; 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds CHAR c; 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds bc_disable(); 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ArcRead(0, &c, 1, &cnt); 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds bc_enable(); 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return c; 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 44