emulation/qemu-power8: initial mainboard and arch commit
This builds and produces an image. The next step is to get a 'halt' instruction into the boot block and then attach with qemu. I can't get the powerpc64le-linux-gnu-ld.bfd to recognize any output arch but powerpc. That makes no sense to me. Change-Id: Ia2a5fe07a1457e7b6974ab1473539c7447d7a449 Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-on: https://review.coreboot.org/13704 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
committed by
Martin Roth
parent
41462bd0c3
commit
9831244cb8
70
src/arch/power8/tables.c
Normal file
70
src/arch/power8/tables.c
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright (C) 2003 Eric Biederman
|
||||
* Copyright (C) 2005 Steve Magnani
|
||||
* Copyright (C) 2008-2009 coresystems GmbH
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <console/console.h>
|
||||
#include <cpu/cpu.h>
|
||||
#include <boot/tables.h>
|
||||
#include <boot/coreboot_tables.h>
|
||||
#include <string.h>
|
||||
#include <cbmem.h>
|
||||
#include <lib.h>
|
||||
|
||||
#define MAX_COREBOOT_TABLE_SIZE (8 * 1024)
|
||||
|
||||
// WTF. this does not agree with the prototype!
|
||||
static struct lb_memory *wtf_write_tables(void)
|
||||
{
|
||||
unsigned long table_pointer, new_table_pointer;
|
||||
|
||||
post_code(0x9d);
|
||||
|
||||
table_pointer = (unsigned long)cbmem_add(CBMEM_ID_CBTABLE,
|
||||
MAX_COREBOOT_TABLE_SIZE);
|
||||
if (!table_pointer) {
|
||||
printk(BIOS_ERR, "Could not add CBMEM for coreboot table.\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
new_table_pointer = write_coreboot_table(0UL, 0UL,
|
||||
table_pointer, table_pointer);
|
||||
|
||||
if (new_table_pointer > (table_pointer + MAX_COREBOOT_TABLE_SIZE)) {
|
||||
printk(BIOS_ERR, "coreboot table didn't fit (%lx/%x bytes)\n",
|
||||
new_table_pointer - table_pointer,
|
||||
MAX_COREBOOT_TABLE_SIZE);
|
||||
}
|
||||
|
||||
printk(BIOS_DEBUG, "coreboot table: %ld bytes.\n",
|
||||
new_table_pointer - table_pointer);
|
||||
|
||||
post_code(0x9e);
|
||||
|
||||
/* Print CBMEM sections */
|
||||
cbmem_list();
|
||||
|
||||
// return get_lb_mem();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void lb_arch_add_records(struct lb_header *header)
|
||||
{
|
||||
}
|
||||
|
||||
void write_tables(void)
|
||||
{
|
||||
wtf_write_tables();
|
||||
}
|
Reference in New Issue
Block a user