diff options
Diffstat (limited to 'qemu/roms/SLOF/board-js2x/rtas/rtas_out.c')
-rw-r--r-- | qemu/roms/SLOF/board-js2x/rtas/rtas_out.c | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/qemu/roms/SLOF/board-js2x/rtas/rtas_out.c b/qemu/roms/SLOF/board-js2x/rtas/rtas_out.c deleted file mode 100644 index ce4c00bd2..000000000 --- a/qemu/roms/SLOF/board-js2x/rtas/rtas_out.c +++ /dev/null @@ -1,120 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <cpu.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <stdint.h> -#include <unistd.h> -#include <rtas.h> -#include <hw.h> -#include "rtas_board.h" - -volatile unsigned char *uart; -volatile unsigned char u4Flag; - -void io_init(void); -unsigned long check_flash_image(unsigned long rombase, unsigned long length, - unsigned long start_crc); - -void -io_init(void) -{ - // read ID register: only if it is a PC87427, enable serial2 - store8_ci(0xf400002e, 0x20); - if (load8_ci(0xf400002f) != 0xf2) { - uart = (volatile unsigned char *) 0xf40003f8; - u4Flag = 0; - } else { - uart = (volatile unsigned char *) 0xf40002f8; - u4Flag = 1; - } -} - -static void -display_char(char ch) -{ - volatile int i = 0; - volatile unsigned char *uart = (volatile unsigned char *) 0xf40002f8; - int cnt = 2; - while (cnt--) { - set_ci(); - while (!(uart[5] & 0x20)) { - i++; - } - uart[0] = ch; - clr_ci(); - uart += 0x100; - } -} - -ssize_t -write(int fd __attribute((unused)), const void *buf, size_t cnt) -{ - while (cnt--) { - display_char(*(char *) buf); - if (*(char *) buf++ == '\n') - display_char('\r'); - } - return 0; -} - -void * -sbrk(int incr __attribute((unused))) -{ - return (void *) -1; -} - - - -void -rtas_display_character(rtas_args_t * pArgs) -{ - int retVal = 0; - display_char((char) pArgs->args[0]); - pArgs->args[1] = retVal; -} - -unsigned long -check_flash_image(unsigned long rombase, unsigned long length, - unsigned long start_crc) -{ - const uint32_t CrcTableHigh[16] = { - 0x00000000, 0x4C11DB70, 0x9823B6E0, 0xD4326D90, - 0x34867077, 0x7897AB07, 0xACA5C697, 0xE0B41DE7, - 0x690CE0EE, 0x251D3B9E, 0xF12F560E, 0xBD3E8D7E, - 0x5D8A9099, 0x119B4BE9, 0xC5A92679, 0x89B8FD09 - }; - const uint32_t CrcTableLow[16] = { - 0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, - 0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005, - 0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61, - 0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD - }; - - char *Buffer = (char *) rombase; - uint32_t AccumCRC = start_crc; - char val; - uint32_t Temp; - while (length-- > 0) { - set_ci(); - val = *Buffer; - clr_ci(); - Temp = ((AccumCRC >> 24) ^ val) & 0x000000ff; - AccumCRC <<= 8; - AccumCRC ^= CrcTableHigh[Temp / 16]; - AccumCRC ^= CrcTableLow[Temp % 16]; - ++Buffer; - } - return AccumCRC; -} |