在内核中查找进程的程序计数器

我正在尝试跟踪内核中特定进程的PC值。
为此,我查看了内核源代码并发现pc存储在task_struct->stack ,为了理解堆栈,我需要将其转换为struct thread_info *
因此,在gdb中,我设置了一个断点b scheduler_tick (每10ms调用一次)。 但是,当我打印出p/x ((struct thread_info *)curr->stack)->cpu_context.pc ,我收到的值为$4 = 0x804d19d8

我预计PC将低于0x80000000因为我的内核中的0x80000000以上的地址被配置为内核空间。 在查看内核的objdump输出时,我看到pc指向__schedule

对于我从用户空间开始的进程,PC不应该指向用户空间指令吗?
我的理解是,当一个中断被触发时,寄存器状态被保存,中断被服务,然后寄存器状态被恢复,所以程序继续,就像“没有”发生一样。