|
@@ -220,6 +220,23 @@ void __putstr(const char *s)
|
|
|
outb(0xff & (pos >> 1), vidport+1);
|
|
|
}
|
|
|
|
|
|
+void __puthex(unsigned long value)
|
|
|
+{
|
|
|
+ char alpha[2] = "0";
|
|
|
+ int bits;
|
|
|
+
|
|
|
+ for (bits = sizeof(value) * 8 - 4; bits >= 0; bits -= 4) {
|
|
|
+ unsigned long digit = (value >> bits) & 0xf;
|
|
|
+
|
|
|
+ if (digit < 0xA)
|
|
|
+ alpha[0] = '0' + digit;
|
|
|
+ else
|
|
|
+ alpha[0] = 'a' + (digit - 0xA);
|
|
|
+
|
|
|
+ __putstr(alpha);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static void error(char *x)
|
|
|
{
|
|
|
error_putstr("\n\n");
|
|
@@ -399,6 +416,13 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap,
|
|
|
free_mem_ptr = heap; /* Heap */
|
|
|
free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
|
|
|
|
|
|
+ /* Report initial kernel position details. */
|
|
|
+ debug_putaddr(input_data);
|
|
|
+ debug_putaddr(input_len);
|
|
|
+ debug_putaddr(output);
|
|
|
+ debug_putaddr(output_len);
|
|
|
+ debug_putaddr(run_size);
|
|
|
+
|
|
|
/*
|
|
|
* The memory hole needed for the kernel is the larger of either
|
|
|
* the entire decompressed kernel plus relocation table, or the
|