Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/elf32_machdep.c
Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | |||||
extern const char *freebsd32_syscallnames[]; | extern const char *freebsd32_syscallnames[]; | ||||
extern char aarch32_sigcode[]; | extern char aarch32_sigcode[]; | ||||
extern int sz_aarch32_sigcode; | extern int sz_aarch32_sigcode; | ||||
static int freebsd32_fetch_syscall_args(struct thread *td); | static int freebsd32_fetch_syscall_args(struct thread *td); | ||||
static void freebsd32_setregs(struct thread *td, struct image_params *imgp, | static void freebsd32_setregs(struct thread *td, struct image_params *imgp, | ||||
u_long stack); | u_long stack); | ||||
static void freebsd32_set_syscall_retval(struct thread *, int); | static void freebsd32_set_syscall_retval(struct thread *, int); | ||||
static boolean_t elf32_arm_abi_supported(struct image_params *); | static boolean_t elf32_arm_abi_supported(struct image_params *, int32_t *, | ||||
uint32_t *); | |||||
extern void freebsd32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask); | extern void freebsd32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask); | ||||
static struct sysentvec elf32_freebsd_sysvec = { | static struct sysentvec elf32_freebsd_sysvec = { | ||||
.sv_size = SYS_MAXSYSCALL, | .sv_size = SYS_MAXSYSCALL, | ||||
.sv_table = freebsd32_sysent, | .sv_table = freebsd32_sysent, | ||||
.sv_errsize = 0, | .sv_errsize = 0, | ||||
.sv_errtbl = NULL, | .sv_errtbl = NULL, | ||||
Show All 40 Lines | static Elf32_Brandinfo freebsd32_brand_info = { | ||||
.flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE, | .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE, | ||||
.header_supported= elf32_arm_abi_supported, | .header_supported= elf32_arm_abi_supported, | ||||
}; | }; | ||||
SYSINIT(elf32, SI_SUB_EXEC, SI_ORDER_FIRST, | SYSINIT(elf32, SI_SUB_EXEC, SI_ORDER_FIRST, | ||||
(sysinit_cfunc_t)elf32_insert_brand_entry, &freebsd32_brand_info); | (sysinit_cfunc_t)elf32_insert_brand_entry, &freebsd32_brand_info); | ||||
static boolean_t | static boolean_t | ||||
elf32_arm_abi_supported(struct image_params *imgp) | elf32_arm_abi_supported(struct image_params *imgp, int32_t *osrel __unused, | ||||
uint32_t *fctl0 __unused) | |||||
{ | { | ||||
const Elf32_Ehdr *hdr; | const Elf32_Ehdr *hdr; | ||||
/* Check if we support AArch32 */ | /* Check if we support AArch32 */ | ||||
if (ID_AA64PFR0_EL0_VAL(READ_SPECIALREG(id_aa64pfr0_el1)) != | if (ID_AA64PFR0_EL0_VAL(READ_SPECIALREG(id_aa64pfr0_el1)) != | ||||
ID_AA64PFR0_EL0_64_32) | ID_AA64PFR0_EL0_64_32) | ||||
return (FALSE); | return (FALSE); | ||||
▲ Show 20 Lines • Show All 122 Lines • Show Last 20 Lines |