From: Vladimir Serbinenko Date: Sun, 8 Dec 2013 17:27:40 +0000 (+0100) Subject: * grub-core/kern/ia64/efi/init.c (grub_arch_sync_caches): Move to ... X-Git-Tag: grub-2.02-beta1~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78b2b0a1a0f282071e4616881ae64070bfefe7f8;p=thirdparty%2Fgrub.git * grub-core/kern/ia64/efi/init.c (grub_arch_sync_caches): Move to ... * grub-core/kern/ia64/cache.c (grub_arch_sync_caches): ... here. --- diff --git a/ChangeLog b/ChangeLog index d03b15c6d..200393209 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-12-08 Vladimir Serbinenko + + * grub-core/kern/ia64/efi/init.c (grub_arch_sync_caches): Move to ... + * grub-core/kern/ia64/cache.c (grub_arch_sync_caches): ... here. + 2013-12-08 Vladimir Serbinenko * grub-core/kern/emu/main.c: Silence missing prototypes to allow emu diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def index 0a4eba56b..060de4449 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -193,6 +193,7 @@ kernel = { ia64_efi = kern/ia64/efi/init.c; ia64_efi = kern/ia64/dl.c; ia64_efi = kern/ia64/dl_helper.c; + ia64_efi = kern/ia64/cache.c; arm_efi = kern/arm/efi/init.c; arm_efi = kern/arm/efi/misc.c; diff --git a/grub-core/kern/ia64/cache.c b/grub-core/kern/ia64/cache.c new file mode 100644 index 000000000..13efd308f --- /dev/null +++ b/grub-core/kern/ia64/cache.c @@ -0,0 +1,35 @@ +/* init.c - initialize an ia64-based EFI system */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2008 Free Software Foundation, Inc. + * + * GRUB 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, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB 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 GRUB. If not, see . + */ + +#include +#include + +void +grub_arch_sync_caches (void *address, grub_size_t len) +{ + /* Cache line length is at least 32. */ + len += (grub_uint64_t)address & 0x1f; + grub_uint64_t a = (grub_uint64_t)address & ~0x1f; + + /* Flush data. */ + for (len = (len + 31) & ~0x1f; len > 0; len -= 0x20, a += 0x20) + asm volatile ("fc.i %0" : : "r" (a)); + /* Sync and serialize. Maybe extra. */ + asm volatile (";; sync.i;; srlz.i;;"); +} diff --git a/grub-core/kern/ia64/efi/init.c b/grub-core/kern/ia64/efi/init.c index f00509833..b5ecbd091 100644 --- a/grub-core/kern/ia64/efi/init.c +++ b/grub-core/kern/ia64/efi/init.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -74,17 +73,3 @@ grub_machine_fini (int flags) if (flags & GRUB_LOADER_FLAG_NORETURN) grub_efi_fini (); } - -void -grub_arch_sync_caches (void *address, grub_size_t len) -{ - /* Cache line length is at least 32. */ - len += (grub_uint64_t)address & 0x1f; - grub_uint64_t a = (grub_uint64_t)address & ~0x1f; - - /* Flush data. */ - for (len = (len + 31) & ~0x1f; len > 0; len -= 0x20, a += 0x20) - asm volatile ("fc.i %0" : : "r" (a)); - /* Sync and serialize. Maybe extra. */ - asm volatile (";; sync.i;; srlz.i;;"); -}