|
|
1.1 ! root 1: /****************************************************************************** ! 2: * Copyright (c) 2004, 2008 IBM Corporation ! 3: * All rights reserved. ! 4: * This program and the accompanying materials ! 5: * are made available under the terms of the BSD License ! 6: * which accompanies this distribution, and is available at ! 7: * http://www.opensource.org/licenses/bsd-license.php ! 8: * ! 9: * Contributors: ! 10: * IBM Corporation - initial implementation ! 11: *****************************************************************************/ ! 12: #include "macros.h" ! 13: #include "calculatecrc.h" ! 14: #include "calculatecrc.h" ! 15: ! 16: .text ! 17: ! 18: /**************************************************************************** ! 19: * prints a 0-terminated string to serial console ! 20: * ! 21: * Input: ! 22: * R3 - pointer to string in memory ! 23: * ! 24: * Returns: - ! 25: * ! 26: * Modifies Registers: ! 27: * R3, R4, R5, R6, R7, R8, R9 ! 28: ****************************************************************************/ ! 29: ASM_ENTRY(io_print) ! 30: mflr r8 ! 31: mr r9, r3 ! 32: ! 33: 0: ! 34: lbz r3, 0(r9) ! 35: cmpwi r3, 0 ! 36: beq 1f ! 37: bl io_putchar ! 38: addi r9, r9, 1 ! 39: b 0b ! 40: 1: ! 41: mtlr r8 ! 42: blr ! 43: ! 44: /**************************************************************************** ! 45: * prints Hex integer to the UART and the NVRAM (using board io_putchar) ! 46: * ! 47: * Input: ! 48: * R3 - integer to print ! 49: * ! 50: * Returns: - ! 51: * ! 52: * Modifies Registers: ! 53: * R3, R4, R5, R6, R7, R8, R9 ! 54: ****************************************************************************/ ! 55: #define _io_gen_print_nib(reg, src, shift) \ ! 56: srdi reg, src, shift; \ ! 57: andi. reg, reg, 0x0F; \ ! 58: cmpwi reg, 0x0A; \ ! 59: blt 0f; \ ! 60: addi reg, reg, ('A'-'0'-10); \ ! 61: 0:; \ ! 62: addi reg, reg, '0'; \ ! 63: bl io_putchar ! 64: ! 65: ASM_ENTRY(io_printhex64) ! 66: mflr r8 ! 67: mr r9, r3 ! 68: ! 69: _io_printhex64: ! 70: _io_gen_print_nib(r3, r9, 60) ! 71: _io_gen_print_nib(r3, r9, 56) ! 72: _io_gen_print_nib(r3, r9, 52) ! 73: _io_gen_print_nib(r3, r9, 48) ! 74: _io_gen_print_nib(r3, r9, 44) ! 75: _io_gen_print_nib(r3, r9, 40) ! 76: _io_gen_print_nib(r3, r9, 36) ! 77: _io_gen_print_nib(r3, r9, 32) ! 78: _io_printhex32: ! 79: _io_gen_print_nib(r3, r9, 28) ! 80: _io_gen_print_nib(r3, r9, 24) ! 81: _io_gen_print_nib(r3, r9, 20) ! 82: _io_gen_print_nib(r3, r9, 16) ! 83: _io_printhex16: ! 84: _io_gen_print_nib(r3, r9, 12) ! 85: _io_gen_print_nib(r3, r9, 8) ! 86: _io_printhex8: ! 87: _io_gen_print_nib(r3, r9, 4) ! 88: _io_gen_print_nib(r3, r9, 0) ! 89: ! 90: mtlr r8 ! 91: blr ! 92: ! 93: ASM_ENTRY(io_printhex32) ! 94: mflr r8 ! 95: mr r9, r3 ! 96: b _io_printhex32 ! 97: ! 98: ASM_ENTRY(io_printhex16) ! 99: mflr r8 ! 100: mr r9, r3 ! 101: b _io_printhex16 ! 102: ! 103: ASM_ENTRY(io_printhex8) ! 104: mflr r8 ! 105: mr r9, r3 ! 106: b _io_printhex8 ! 107: ! 108: ! 109: /**************************************************************************** ! 110: * print the address and its contents as 64-bit hex values ! 111: * ! 112: * Input: ! 113: * R3 - Address to read from ! 114: * ! 115: * Returns: - ! 116: * ! 117: * Modifies Registers: ! 118: * R3, R4, R5, R6, R7, R8, R9, R10 ! 119: ****************************************************************************/ ! 120: #if 0 /* currently unused */ ! 121: ASM_ENTRY(io_dump) ! 122: mflr r10 ! 123: bl io_printhex64 ! 124: li r3,':' ! 125: bl io_putchar ! 126: ld r9,0(r9) ! 127: mr r8,r10 ! 128: b _io_printhex64 ! 129: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.