我正在尝试编写一个发出一个 SMC 调用的程序。搜索了前面的问题,我的理解是Linux内核中没有真正的API来实现ARM SMC?我正在研究基于 msm8974 的原型,并且想知道最好的方法是什么。
我仍在学习部分魔术以及链接器如何映射程序集导出“标签”?宏?(不知道他们叫什么)到C程序。请告诉我是否真的需要通读 GNU 链接器文档以了解这是如何发生的。
@罗斯里奇-谢谢。SMC,Secure Monitor Call,是与 ARM Trust Zone 服务交互的指令。我的问题是如何实现这个调用。这里的大多数帖子和答案都暗示这样的接口在 Linux 内核树上还不可用。所以,我知道我必须在汇编中编写它。@Notlikethat - 嘿伙计。我正在使用不同的平台。为我的平台(Qualcomm Snapdragon)实施这些其他实施在高层次上涉及什么?
@Notlikethat - 这是我在 /arch/arm/kerel 下看到的内容:
sansari@ubuntu:~/WORKING_DIRECTORY/arch/arm/kernel$ ls
arch_timer.c entry-common.S kprobes-arm.c perf_event_v6.c suspend.c
armksyms.c entry-header.S kprobes.c perf_event_v7.c swp_emulate.c
arthur.c etm.c kprobes-common.c perf_event_xscale.c sys_arm.c
asm-offsets.c fiqasm.S kprobes.h pj4-cp0.c sys_oabi-compat.c
atags.c fiq.c kprobes-test-arm.c pmu.c tcm.c
atags.h ftrace.c kprobes-test.c process.c tcm.h
bios32.c head-common.S kprobes-test.h ptrace.c thumbee.c
calls.S head-nommu.S kprobes-test-thumb.c relocate_kernel.S time.c
compat.c head.S kprobes-thumb.c return_address.c topology.c
compat.h hw_breakpoint.c leds.c sched_clock.c traps.c
cpuidle.c init_task.c machine_kexec.c setup.c unwind.c
crash_dump.c insn.c Makefile signal.c update_vsyscall_arm.c
debug.S insn.h module.c signal.h update_vsyscall_arm.h
devtree.c io.c opcodes.c sleep.S user_accessible_timer.c
dma.c irq.c patch.c smp.c vmlinux.lds.S
dma-isa.c isa.c patch.h smp_scu.c xscale-cp0.c
early_printk.c iwmmxt.S perf_event.c smp_tlb.c
elf.c jump_label.c perf_event_msm.c smp_twd.c
entry-armv.S kgdb.c perf_event_msm_krait.c stacktrace.c
也许我需要一个更新的内核?
@Notlikethat - 请您指出有关您提到 EXINOS 和 ... 的实现的文档吗?
@all-感谢您的帮助和解释。阿伦 - 这绝对有帮助。