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
53
src/mainboard/emulation/qemu-power8/Kconfig
Normal file
53
src/mainboard/emulation/qemu-power8/Kconfig
Normal file
@@ -0,0 +1,53 @@
|
||||
##
|
||||
## This file is part of the coreboot project.
|
||||
##
|
||||
## Copyright (C) 2014 Google Inc.
|
||||
##
|
||||
## This software is licensed under the terms of the GNU General Public
|
||||
## License version 2, as published by the Free Software Foundation, and
|
||||
## may be copied, distributed, and modified under those terms.
|
||||
##
|
||||
## 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.
|
||||
|
||||
# To execute, do:
|
||||
# qemu-system-??
|
||||
|
||||
if BOARD_EMULATION_QEMU_POWER8
|
||||
|
||||
config BOARD_SPECIFIC_OPTIONS # dummy
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_4096
|
||||
select ARCH_BOOTBLOCK_POWER8
|
||||
select HAVE_UART_SPECIAL
|
||||
select ARCH_POWER8
|
||||
|
||||
config MAINBOARD_DIR
|
||||
string
|
||||
default "emulation/qemu-power8"
|
||||
|
||||
config MAINBOARD_PART_NUMBER
|
||||
string
|
||||
default "QEMU POWER8"
|
||||
|
||||
config MAX_CPUS
|
||||
int
|
||||
default 1
|
||||
|
||||
config MAINBOARD_VENDOR
|
||||
string
|
||||
default "QEMU"
|
||||
|
||||
config DRAM_SIZE_MB
|
||||
int
|
||||
default 32768
|
||||
|
||||
# Memory map for qemu power8
|
||||
|
||||
config RAMTOP
|
||||
hex
|
||||
default 0x1000000
|
||||
|
||||
endif # BOARD_EMULATION_QEMU_POWER8
|
2
src/mainboard/emulation/qemu-power8/Kconfig.name
Normal file
2
src/mainboard/emulation/qemu-power8/Kconfig.name
Normal file
@@ -0,0 +1,2 @@
|
||||
config BOARD_EMULATION_QEMU_POWER8
|
||||
bool "QEMU power8"
|
25
src/mainboard/emulation/qemu-power8/Makefile.inc
Normal file
25
src/mainboard/emulation/qemu-power8/Makefile.inc
Normal file
@@ -0,0 +1,25 @@
|
||||
##
|
||||
## This file is part of the coreboot project.
|
||||
##
|
||||
## Copyright (C) 2013 Google Inc.
|
||||
##
|
||||
## This software is licensed under the terms of the GNU General Public
|
||||
## License version 2, as published by the Free Software Foundation, and
|
||||
## may be copied, distributed, and modified under those terms.
|
||||
##
|
||||
## 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.
|
||||
|
||||
bootblock-y += bootblock.c
|
||||
bootblock-y += uart.c
|
||||
romstage-y += cbmem.c
|
||||
ramstage-y += cbmem.c
|
||||
romstage-y += romstage.c
|
||||
romstage-y += uart.c
|
||||
ramstage-y += uart.c
|
||||
|
||||
bootblock-y += memlayout.ld
|
||||
romstage-y += memlayout.ld
|
||||
ramstage-y += memlayout.ld
|
2
src/mainboard/emulation/qemu-power8/board_info.txt
Normal file
2
src/mainboard/emulation/qemu-power8/board_info.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Board name: QEMU POWER8
|
||||
Category: emulation
|
29
src/mainboard/emulation/qemu-power8/bootblock.c
Normal file
29
src/mainboard/emulation/qemu-power8/bootblock.c
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright 2013 Google Inc.
|
||||
*
|
||||
* 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 <bootblock_common.h>
|
||||
#include <console/console.h>
|
||||
#include <program_loading.h>
|
||||
|
||||
// the qemu part of all this is very, very non-hardware like.
|
||||
// so it gets its own bootblock.
|
||||
void main(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) {
|
||||
console_init();
|
||||
}
|
||||
|
||||
run_romstage();
|
||||
}
|
25
src/mainboard/emulation/qemu-power8/cbmem.c
Normal file
25
src/mainboard/emulation/qemu-power8/cbmem.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright (C) 2013 Google, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* 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 <cbmem.h>
|
||||
|
||||
void *cbmem_top(void)
|
||||
{
|
||||
/* Top of cbmem is at lowest usable DRAM address below 4GiB. */
|
||||
/* For now, last 1M of 4G */
|
||||
void *ptr = (void *) ((1ULL << 32) - 1048576);
|
||||
return ptr;
|
||||
}
|
||||
|
17
src/mainboard/emulation/qemu-power8/devicetree.cb
Normal file
17
src/mainboard/emulation/qemu-power8/devicetree.cb
Normal file
@@ -0,0 +1,17 @@
|
||||
##
|
||||
## This file is part of the coreboot project.
|
||||
##
|
||||
## Copyright (C) 2014 Google, Inc.
|
||||
##
|
||||
## This software is licensed under the terms of the GNU General Public
|
||||
## License version 2, as published by the Free Software Foundation, and
|
||||
## may be copied, distributed, and modified under those terms.
|
||||
##
|
||||
## 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.
|
||||
|
||||
chip cpu/qemu-power8
|
||||
device cpu_cluster 0 on end
|
||||
end
|
36
src/mainboard/emulation/qemu-power8/mainboard.c
Normal file
36
src/mainboard/emulation/qemu-power8/mainboard.c
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright (C) 2014 Google, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* 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 <device/device.h>
|
||||
#include <cbmem.h>
|
||||
|
||||
static void mainboard_enable(device_t dev)
|
||||
{
|
||||
|
||||
if (!dev) {
|
||||
printk(BIOS_EMERG, "No dev0; die\n");
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
// Where does ram live?
|
||||
ram_resource(dev, 0, 2048, 32768);
|
||||
cbmem_recovery(0);
|
||||
}
|
||||
|
||||
struct chip_operations mainboard_ops = {
|
||||
.enable_dev = mainboard_enable,
|
||||
};
|
29
src/mainboard/emulation/qemu-power8/memlayout.ld
Normal file
29
src/mainboard/emulation/qemu-power8/memlayout.ld
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright 2014 Google Inc.
|
||||
*
|
||||
* 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 <memlayout.h>
|
||||
|
||||
#include <arch/header.ld>
|
||||
|
||||
// TODO: fill in these blanks for Power8.
|
||||
SECTIONS
|
||||
{
|
||||
DRAM_START(0x0)
|
||||
BOOTBLOCK(0x0, 64K)
|
||||
ROMSTAGE(0x20000, 128K)
|
||||
STACK(0x40000, 0x3ff00)
|
||||
PRERAM_CBMEM_CONSOLE(0x80000, 8K)
|
||||
RAMSTAGE(0x100000, 16M)
|
||||
}
|
23
src/mainboard/emulation/qemu-power8/romstage.c
Normal file
23
src/mainboard/emulation/qemu-power8/romstage.c
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright (C) 2013 Google, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* 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 <program_loading.h>
|
||||
|
||||
void main(void)
|
||||
{
|
||||
console_init();
|
||||
run_ramstage();
|
||||
}
|
57
src/mainboard/emulation/qemu-power8/uart.c
Normal file
57
src/mainboard/emulation/qemu-power8/uart.c
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright 2014 Google Inc.
|
||||
*
|
||||
* 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 <types.h>
|
||||
#include <console/uart.h>
|
||||
#include <arch/io.h>
|
||||
#include <boot/coreboot_tables.h>
|
||||
|
||||
static uint8_t *buf = (void *)0;
|
||||
uintptr_t uart_platform_base(int idx)
|
||||
{
|
||||
return (uintptr_t) buf;
|
||||
}
|
||||
|
||||
void uart_init(int idx)
|
||||
{
|
||||
}
|
||||
|
||||
unsigned char uart_rx_byte(int idx)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void uart_tx_byte(int idx, unsigned char data)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void uart_tx_flush(int idx)
|
||||
{
|
||||
}
|
||||
|
||||
#ifndef __PRE_RAM__
|
||||
void uart_fill_lb(void *data)
|
||||
{
|
||||
struct lb_serial serial;
|
||||
|
||||
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
|
||||
serial.baseaddr = 0;
|
||||
serial.baud = 115200;
|
||||
serial.regwidth = 1;
|
||||
lb_add_serial(&serial, data);
|
||||
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user