aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2016-07-24 09:27:11 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-08-22 15:26:51 +1000
commitad0eb2ca2ca7cab621f990a694746198cbc94ed1 (patch)
tree6e54f3b96625ebdd95fe8e6188c6fbbd51082490 /hw
parent3476b2ad3a5a53c92ec5e358dd9c28f5ef09c96d (diff)
downloadskiboot-ad0eb2ca2ca7cab621f990a694746198cbc94ed1.zip
skiboot-ad0eb2ca2ca7cab621f990a694746198cbc94ed1.tar.gz
skiboot-ad0eb2ca2ca7cab621f990a694746198cbc94ed1.tar.bz2
Rename rvwinkle patch to reset patch and install at boot
The patch code itself is unchanged (for now...). Install it during boot so we will be able to use power management instructions. We can't just have a proper exception code built at 0x100 as this is otherwise one of our entry points. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/slw.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/hw/slw.c b/hw/slw.c
index 9299430..9336679 100644
--- a/hw/slw.c
+++ b/hw/slw.c
@@ -151,17 +151,15 @@ static void slw_do_rvwinkle(void *data)
static void slw_patch_reset(void)
{
- extern uint32_t rvwinkle_patch_start;
- extern uint32_t rvwinkle_patch_end;
uint32_t *src, *dst, *sav;
- BUILD_ASSERT((&rvwinkle_patch_end - &rvwinkle_patch_start) <=
+ BUILD_ASSERT((&reset_patch_end - &reset_patch_start) <=
MAX_RESET_PATCH_SIZE);
- src = &rvwinkle_patch_start;
+ src = &reset_patch_start;
dst = (uint32_t *)0x100;
sav = slw_saved_reset;
- while(src < &rvwinkle_patch_end) {
+ while(src < &reset_patch_end) {
*(sav++) = *(dst);
*(dst++) = *(src++);
}
@@ -170,14 +168,14 @@ static void slw_patch_reset(void)
static void slw_unpatch_reset(void)
{
- extern uint32_t rvwinkle_patch_start;
- extern uint32_t rvwinkle_patch_end;
+ extern uint32_t reset_patch_start;
+ extern uint32_t reset_patch_end;
uint32_t *src, *dst, *sav;
- src = &rvwinkle_patch_start;
+ src = &reset_patch_start;
dst = (uint32_t *)0x100;
sav = slw_saved_reset;
- while(src < &rvwinkle_patch_end) {
+ while(src < &reset_patch_end) {
*(dst++) = *(sav++);
src++;
}