File tree Expand file tree Collapse file tree 2 files changed +25
-10
lines changed Expand file tree Collapse file tree 2 files changed +25
-10
lines changed Original file line number Diff line number Diff line change @@ -164,21 +164,34 @@ void __putstr(const char *s)
164
164
outb (0xff & (pos >> 1 ), vidport + 1 );
165
165
}
166
166
167
- void __puthex (unsigned long value )
167
+ static noinline void __putnum (unsigned long value , unsigned int base ,
168
+ int mindig )
168
169
{
169
- char alpha [ 2 ] = "0" ;
170
- int bits ;
170
+ char buf [ 8 * sizeof ( value ) + 1 ] ;
171
+ char * p ;
171
172
172
- for ( bits = sizeof (value ) * 8 - 4 ; bits >= 0 ; bits -= 4 ) {
173
- unsigned long digit = ( value >> bits ) & 0xf ;
173
+ p = buf + sizeof (buf );
174
+ * -- p = '\0' ;
174
175
175
- if ( digit < 0xA )
176
- alpha [ 0 ] = '0' + digit ;
177
- else
178
- alpha [ 0 ] = 'a' + ( digit - 0xA ) ;
176
+ while ( mindig -- > 0 || value ) {
177
+ unsigned char digit = value % base ;
178
+ digit += ( digit >= 10 ) ? ( 'a' - 10 ) : '0' ;
179
+ * -- p = digit ;
179
180
180
- __putstr ( alpha ) ;
181
+ value /= base ;
181
182
}
183
+
184
+ __putstr (p );
185
+ }
186
+
187
+ void __puthex (unsigned long value )
188
+ {
189
+ __putnum (value , 16 , sizeof (value )* 2 );
190
+ }
191
+
192
+ void __putdec (unsigned long value )
193
+ {
194
+ __putnum (value , 10 , 1 );
182
195
}
183
196
184
197
#ifdef CONFIG_X86_NEED_RELOCS
Original file line number Diff line number Diff line change @@ -63,8 +63,10 @@ void *malloc(int size);
63
63
void free (void * where );
64
64
void __putstr (const char * s );
65
65
void __puthex (unsigned long value );
66
+ void __putdec (unsigned long value );
66
67
#define error_putstr (__x ) __putstr(__x)
67
68
#define error_puthex (__x ) __puthex(__x)
69
+ #define error_putdec (__x ) __putdec(__x)
68
70
69
71
#ifdef CONFIG_X86_VERBOSE_BOOTUP
70
72
You can’t perform that action at this time.
0 commit comments