arch/s390/kernel/stacktrace.c

Source file repositories/reference/linux-study-clean/arch/s390/kernel/stacktrace.c

File Facts

System
Linux kernel
Corpus path
arch/s390/kernel/stacktrace.c
Extension
.c
Size
3566 bytes
Lines
149
Domain
Architecture Layer
Bucket
arch/s390
Inferred role
Architecture Layer: implementation source
Status
source implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

if (!sp && ip_within_vdso(ip)) {
			sf_vdso = (void __user *)sf;
			if (__get_user(ip, &sf_vdso->return_address))
				break;
			sp = (unsigned long)sf + STACK_FRAME_VDSO_OVERHEAD;
			sf = (void __user *)sp;
			if (__get_user(sp, &sf->back_chain))
				break;
		} else {
			sf = (void __user *)sp;
			if (__get_user(ip, &sf->gprs[8]))
				break;
		}
		/* Validate SP and RA (ABI requires SP to be 8 byte aligned). */
		if (sp & 0x7 || ip_invalid(ip))
			break;
		if (!store_ip(consume_entry, cookie, entry, perf, ip))
			break;
	}
	pagefault_enable();
}

void arch_stack_walk_user(stack_trace_consume_fn consume_entry, void *cookie,
			  const struct pt_regs *regs)
{
	arch_stack_walk_user_common(consume_entry, cookie, NULL, regs, false);
}

Annotation

Implementation Notes