arm64: sve: coredump bug fix in non-sve environment.
Change-Id: I4cba5580b6367c67bef457c0273e9b70ad4a0756
This commit is contained in:
committed by
Masamichi Takagi
parent
fe53c6e0a5
commit
9e3dd53c58
@ -4,6 +4,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ptrace.h>
|
#include <ptrace.h>
|
||||||
#include <cls.h>
|
#include <cls.h>
|
||||||
|
#include <hwcap.h>
|
||||||
|
|
||||||
#define align32(x) ((((x) + 3) / 4) * 4)
|
#define align32(x) ((((x) + 3) / 4) * 4)
|
||||||
|
|
||||||
@ -40,6 +41,9 @@ int arch_get_thread_core_info_size(void)
|
|||||||
const struct user_regset_view *view = current_user_regset_view();
|
const struct user_regset_view *view = current_user_regset_view();
|
||||||
const struct user_regset *regset = find_regset(view, NT_ARM_SVE);
|
const struct user_regset *regset = find_regset(view, NT_ARM_SVE);
|
||||||
|
|
||||||
|
if (unlikely(!(elf_hwcap & HWCAP_SVE))) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return sizeof(struct note) + align32(sizeof("LINUX"))
|
return sizeof(struct note) + align32(sizeof("LINUX"))
|
||||||
+ regset_size(cpu_local_var(current), regset);
|
+ regset_size(cpu_local_var(current), regset);
|
||||||
}
|
}
|
||||||
@ -50,6 +54,10 @@ void arch_fill_thread_core_info(struct note *head,
|
|||||||
const struct user_regset_view *view = current_user_regset_view();
|
const struct user_regset_view *view = current_user_regset_view();
|
||||||
const struct user_regset *regset = find_regset(view, NT_ARM_SVE);
|
const struct user_regset *regset = find_regset(view, NT_ARM_SVE);
|
||||||
|
|
||||||
|
if (unlikely(!(elf_hwcap & HWCAP_SVE))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* pre saved registers */
|
/* pre saved registers */
|
||||||
save_fp_regs(thread);
|
save_fp_regs(thread);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user