verstage: use common program.ld for linking

There's no reason to have a separate verstage.ld now
that there is a unified stage linking strategy. Moreover
verstage support is throughout the code base as it is
so bring in those link script macros into the common
memlayout.h as that removes one more specific thing a
board/chipset needs to do in order to turn on verstage.

BUG=chrome-os-partner:44827
BRANCH=None
TEST=None

Change-Id: I1195e06e06c1f81a758f68a026167689c19589dd
Signed-off-by: Aaron Durbin <adubin@chromium.org>
Reviewed-on: http://review.coreboot.org/11516
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Aaron Durbin 2015-09-05 10:27:12 -05:00
parent 14714e1303
commit e5bad5cd3d
14 changed files with 28 additions and 123 deletions

View File

@ -132,4 +132,31 @@
. += sz;
#endif
/* Careful: required work buffer size depends on RW properties such as key size
* and algorithm -- what works for you might stop working after an update. Do
* NOT lower the asserted minimum without consulting vboot devs (rspangler)! */
#define VBOOT2_WORK(addr, size) \
REGION(vboot2_work, addr, size, 16) \
_ = ASSERT(size >= 12K, "vboot2 work buffer must be at least 12K!");
#if ENV_VERSTAGE
#define VERSTAGE(addr, sz) \
SET_COUNTER(verstage, addr) \
_ = ASSERT(_eprogram - _program <= sz, \
STR(Verstage exceeded its allotted size! (sz))); \
INCLUDE "lib/program.verstage.ld"
#define OVERLAP_VERSTAGE_ROMSTAGE(addr, size) VERSTAGE(addr, size)
#else
#define VERSTAGE(addr, sz) \
SET_COUNTER(verstage, addr) \
. += sz;
#define OVERLAP_VERSTAGE_ROMSTAGE(addr, size) ROMSTAGE(addr, size)
#endif
#define WATCHDOG_TOMBSTONE(addr, size) \
REGION(watchdog_tombstone, addr, size, 4) \
_ = ASSERT(size == 4, "watchdog tombstones should be exactly 4 byte!");
#endif /* __MEMLAYOUT_H */

View File

@ -199,6 +199,7 @@ endif
romstage-y += program.ld
ramstage-y += program.ld
verstage-y += program.ld
ifeq ($(CONFIG_RELOCATABLE_MODULES),y)
ramstage-y += rmodule.c

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -19,7 +19,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -18,7 +18,6 @@
*/
#include <memlayout.h>
#include <vendorcode/google/chromeos/memlayout.h>
#include <arch/header.ld>

View File

@ -1,54 +0,0 @@
/*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc.
*/
/* This file contains macro definitions for memlayout.ld linker scripts. */
#ifndef __CHROMEOS_MEMLAYOUT_H
#define __CHROMEOS_MEMLAYOUT_H
/* Careful: required work buffer size depends on RW properties such as key size
* and algorithm -- what works for you might stop working after an update. Do
* NOT lower the asserted minimum without consulting vboot devs (rspangler)! */
#define VBOOT2_WORK(addr, size) \
REGION(vboot2_work, addr, size, 16) \
_ = ASSERT(size >= 12K, "vboot2 work buffer must be at least 12K!");
#ifdef __VERSTAGE__
#define VERSTAGE(addr, sz) \
SET_COUNTER(VERSTAGE, addr) \
_ = ASSERT(_everstage - _verstage <= sz, \
STR(Verstage exceeded its allotted size! (sz))); \
INCLUDE "vendorcode/google/chromeos/vboot2/verstage.verstage.ld"
#else
#define VERSTAGE(addr, sz) \
SET_COUNTER(VERSTAGE, addr) \
. += sz;
#endif
#ifdef __VERSTAGE__
#define OVERLAP_VERSTAGE_ROMSTAGE(addr, size) VERSTAGE(addr, size)
#else
#define OVERLAP_VERSTAGE_ROMSTAGE(addr, size) ROMSTAGE(addr, size)
#endif
#define WATCHDOG_TOMBSTONE(addr, size) \
REGION(watchdog_tombstone, addr, size, 4) \
_ = ASSERT(size == 4, "watchdog tombstones should be exactly 4 byte!");
#endif /* __CHROMEOS_MEMLAYOUT_H */

View File

@ -42,8 +42,6 @@ romstage-y += vboot_handoff.c common.c
ramstage-y += common.c
verstage-y += verstage.ld
ifeq ($(CONFIG_SEPARATE_VERSTAGE),y)
VB_FIRMWARE_ARCH := $(ARCHDIR-$(ARCH-verstage-y))
else

View File

@ -1,58 +0,0 @@
/*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc.
*/
/* This file is included inside a SECTIONS block */
.text . : {
_program = .;
_verstage = .;
*(.text._start);
*(.text.stage_entry);
*(.text);
*(.text.*);
} : to_load
.data . : {
*(.rodata);
*(.rodata.*);
*(.data);
*(.data.*);
. = ALIGN(8);
}
.bss . : {
. = ALIGN(8);
_bss = .;
*(.bss)
*(.bss.*)
*(.sbss)
*(.sbss.*)
_ebss = .;
_everstage = .;
_eprogram = .;
}
/* Discard the sections we don't need/want */
/DISCARD/ : {
*(.comment)
*(.note)
*(.comment.*)
*(.note.*)
*(.eh_frame);
}