1. 12 Dec, 2011 2 commits
    • Will Deacon's avatar
      ARM: reset: implement soft_restart for jumping to a physical address · 290130a1
      Will Deacon authored
      Tools such as kexec and CPU hotplug require a way to reset the processor
      and branch to some code in physical space. This requires various bits of
      jiggery pokery with the caches and MMU which, when it goes wrong, tends
      to lock up the system.
      
      This patch fleshes out the soft_restart implementation so that it
      branches to the reset code using the identity mapping. This requires us
      to change to a temporary stack, held within the kernel image as a static
      array, to avoid conflicting with the new view of memory.
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      290130a1
    • Will Deacon's avatar
      ARM: lib: add call_with_stack function for safely changing stack · 2d81f1fe
      Will Deacon authored
      When disabling the MMU, it is necessary to take out a 1:1 identity map
      of the reset code so that it can safely be executed with and without
      the MMU active. To avoid the situation where the physical address of the
      reset code aliases with the virtual address of the active stack (which
      cannot be included in the 1:1 mapping), it is desirable to change to a
      new stack at a location which is less likely to alias.
      
      This code adds a new lib function, call_with_stack:
      
      	void call_with_stack(void (*fn)(void *), void *arg, void *sp);
      
      which changes the stack to point at the sp parameter, before invoking
      fn(arg) with the new stack selected.
      Reviewed-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
      Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatarDave Martin <dave.martin@linaro.org>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      2d81f1fe
  2. 11 Dec, 2011 1 commit
  3. 08 Dec, 2011 16 commits
  4. 06 Dec, 2011 9 commits
  5. 05 Dec, 2011 4 commits
  6. 03 Dec, 2011 1 commit
  7. 02 Dec, 2011 7 commits