diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/lib.sh | 1 | ||||
-rw-r--r-- | include/rom.sh | 12 | ||||
-rw-r--r-- | include/vendor.sh | 18 |
3 files changed, 21 insertions, 10 deletions
diff --git a/include/lib.sh b/include/lib.sh index 4911c34f..4e56b34a 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -10,6 +10,7 @@ _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" ifdtool="elf/ifdtool/default/ifdtool" cbfstool="elf/cbfstool/default/cbfstool" +rmodtool="elf/cbfstool/default/rmodtool" tmpgit="$PWD/tmp/gitclone" grubdata="config/data/grub" err="err_" diff --git a/include/rom.sh b/include/rom.sh index 0ea791d2..01a8607f 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -84,10 +84,14 @@ check_coreboot_utils() utilmode="" && [ -n "$mode" ] && utilmode="clean" x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs - [ -z "$mode" ] && [ ! -f "$utilelfdir/$util" ] && \ - x_ mkdir -p "$utilelfdir" && \ - x_ cp "$utilsrcdir/$util" "elf/$util/$1" - [ -z "$mode" ] || x_ rm -Rf "$utilelfdir"; continue + if [ -z "$mode" ] && [ ! -f "$utilelfdir/$util" ]; then + x_ mkdir -p "$utilelfdir" + x_ cp "$utilsrcdir/$util" "$utilelfdir" + [ "$util" = "cbfstool" ] || continue + x_ cp "$utilsrcdir/rmodtool" "$utilelfdir" + elif [ -n "$mode" ]; then + x_ rm -Rf "$utilelfdir" + fi; continue done; return 0 } diff --git a/include/vendor.sh b/include/vendor.sh index 7d1356f2..5fad62fb 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -383,6 +383,7 @@ readcfg() cbdir="src/coreboot/$tree" cbfstool="elf/cbfstool/$tree/cbfstool" + rmodtool="elf/cbfstool/$tree/rmodtool" mecleaner="$PWD/$cbdir/util/me_cleaner/me_cleaner.py" kbc1126_ec_dump="$PWD/$cbdir/util/kbc1126/kbc1126_ec_dump" cbfstool="elf/cbfstool/$tree/cbfstool" @@ -425,10 +426,10 @@ patch_rom() rom="$1" readkconfig || return 1 - [ "$CONFIG_HAVE_MRC" = "y" ] && inject "mrc.bin" "$CONFIG_MRC_FILE" \ - "mrc" "0xfffa0000" [ -n "$CONFIG_HAVE_REFCODE_BLOB" ] && inject "fallback/refcode" \ "$CONFIG_REFCODE_BLOB_FILE" "stage" + [ "$CONFIG_HAVE_MRC" = "y" ] && inject "mrc.bin" "$CONFIG_MRC_FILE" \ + "mrc" "0xfffa0000" [ "$CONFIG_HAVE_ME_BIN" = "y" ] && inject IFD "$CONFIG_ME_BIN_PATH" me [ "$CONFIG_KBC1126_FIRMWARE" = "y" ] && inject ecfw1.bin \ "$CONFIG_KBC1126_FW1" raw "$CONFIG_KBC1126_FW1_OFFSET" && inject \ @@ -487,10 +488,15 @@ inject() "$cbfstool" "$rom" remove -n "$cbfsname" || \ $err "inject $rom: can't remove $cbfsname"; return 0 fi - [ "$_t" != "stage" ] || "$cbfstool" "$rom" add-stage -f \ - "$_dest" -n "$cbfsname" -t stage -c lzma || $err "$rom: !add ref" - [ "$_t" = "stage" ] || "$cbfstool" "$rom" add -f "$_dest" \ - -n "$cbfsname" -t $_t $_offset || $err "$rom !add $_t ($_dest)"; : + if [ "$_t" = "stage" ]; then # the only stage we handle in refcode + x_ mkdir -p tmp; x_ rm -f "tmp/refcode" + "$rmodtool" -i "$_dest" -o "tmp/refcode" || "!reloc refcode" + "$cbfstool" "$rom" add-stage -f "tmp/refcode" -n "$cbfsname" \ + -t stage || $err "$rom: !add ref" + else + "$cbfstool" "$rom" add -f "$_dest" -n "$cbfsname" \ + -t $_t $_offset || $err "$rom !add $_t ($_dest)" + fi; : } modify_gbe() |