123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /*++
- Copyright (c) 2015 Minoca Corp. All Rights Reserved
- Module Name:
- Raspberry Pi 2 UEFI Firmware
- Abstract:
- This module implements UEFI firmware for the Raspberry Pi 2.
- Author:
- Chris Stevens 19-Mar-2015
- Environment:
- Firmware
- --*/
- function build() {
- plat = "rpi2";
- text_address = "0x00008000";
- sources = [
- "armv7/entry.S",
- "armv7/smpa.S",
- "armv7/timera.S",
- "debug.c",
- "fwvol.c",
- "intr.c",
- "main.c",
- "memmap.c",
- "ramdenum.c",
- ":" + plat + "fwv.o",
- "smbios.c",
- "smp.c",
- "timer.c",
- ];
- includes = [
- "$//uefi/include"
- ];
- sources_config = {
- "CFLAGS": ["-fshort-wchar"]
- };
- link_ldflags = [
- "-nostdlib",
- "-Wl,--no-wchar-size-warning",
- "-static"
- ];
- link_config = {
- "LDFLAGS": link_ldflags
- };
- common_libs = [
- "//uefi/core:ueficore",
- "//kernel/kd:kdboot",
- "//uefi/core:ueficore",
- "//uefi/archlib:uefiarch",
- "//lib/fatlib:fat",
- "//lib/basevid:basevid",
- "//lib/rtl/base:basertlb",
- "//kernel/kd/kdusb:kdnousb",
- "//kernel:archboot",
- "//uefi/core:emptyrd",
- ];
- libs = [
- "//uefi/dev/pl11:pl11",
- "//uefi/dev/bcm2709:bcm2709",
- "//uefi/dev/sd/core:sd",
- ];
- libs += common_libs;
- platfw = plat + "fw";
- elf = {
- "label": platfw + ".elf",
- "inputs": sources + libs,
- "sources_config": sources_config,
- "includes": includes,
- "config": link_config,
- "text_address": text_address
- };
- entries = executable(elf);
- //
- // Build the firmware volume.
- //
- ffs = [
- "//uefi/core/runtime:rtbase.ffs",
- "//uefi/plat/" + plat + "/runtime:" + plat + "rt.ffs",
- "//uefi/plat/" + plat + "/acpi:acpi.ffs"
- ];
- fw_volume = uefi_fwvol_o(plat, ffs);
- entries += fw_volume;
- //
- // Flatten the firmware image.
- //
- flattened = {
- "label": platfw,
- "inputs": [":" + platfw + ".elf"],
- "implicit": ["//uefi/plat/rpi2/blobs:blobs"],
- "binplace": TRUE
- };
- entries += flattened_binary(flattened);
- return entries;
- }
- return build();
|