============
- start_kernel()->init_IRQ()->irqchip_init()->of_irq_init()->combiner_init()
- IRQ 설정과 동작과정을 알아봅니다.
-
spsr_irq , r0, 일반 모드 비법
-
Note movs: 명령을 PC에 사용할 때.ARM의 모드를 변경
-
Exception retrun)
-
SPSR_irq에 저장된 값을 CPSR로 로드함.
__irq_svc:
svc_entry
- .fnstart 함수의 시작.
- (.save {r0 - pc})
- Generate Unwinder
- stack에 R0~PC까지저장.
sub sp, sp, #(S_FRAME_SIZE + \stack_hole - 4)
- S_FRAME_SIZE: 72, stack_hole: 0
- 1st log
1342489..78084c4 master -> origin/master
Updating 1342489..78084c4
Fast-forward
"Reference/Cortex\342\204\242-A_Series_Programmer_Guide.pdf" | Bin 0 -> 4235851 bytes
arch/arm/include/asm/unified.h | 4 +++-
arch/arm/include/uapi/asm/ptrace.h | 6 +++++-
arch/arm/kernel/entry-armv.S | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
arch/arm/kernel/setup.c | 3 +++
5 files changed, 88 insertions(+), 4 deletions(-)
create mode 100644 "Reference/Cortex\342\204\242-A_Series_Programmer_Guide.pdf"
- 2nd log
78084c4..ca77f3b master -> origin/master
Updating 78084c4..ca77f3b
Fast-forward
arch/arm/include/asm/ptrace.h | 1 +
arch/arm/include/asm/unified.h | 3 +-
arch/arm/kernel/asm-offsets.c | 4 ++
arch/arm/kernel/entry-armv.S | 96 ++++++++++++++++++++++++++++++++++++++---
arch/arm/kernel/irq.c | 8 ++++
drivers/irqchip/irq-gic.c | 26 +++++++++++
include/asm-generic/current.h | 1 +
include/asm-generic/irq_regs.h | 11 +++++
include/asm-generic/preempt.h | 6 +++
include/linux/compiler-gcc.h | 1 +
include/linux/irqchip/arm-gic.h | 2 +
include/linux/irqflags.h | 1 +
include/linux/preempt.h | 1 +
include/linux/preempt_mask.h | 8 ++++
include/linux/sched.h | 4 ++
include/linux/smp.h | 1 +
include/trace/events/rcu.h | 1 +
kernel/irq/irqdomain.c | 2 +
kernel/rcu/tree.c | 25 ++++++++++-
kernel/rcu/tree.h | 5 ++-
kernel/rcu/tree_plugin.h | 1 +
kernel/sched/core.c | 7 +++
kernel/softirq.c | 28 +++++++++++-
23 files changed, 231 insertions(+), 12 deletions(-)