|
|
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.