共 14 篇文章 |
|
The I/O instructions IN and OUTare provided to move data between I/O ports and the EAX (32-bit I/O), the AX (16-bit I/O), or AL (8-bit I/O) general registers. IN andOUTinstructions address I/O ports either directly, with the address of one of up to 256 port addresses coded in the instruction, or indirectly via the DX ... 阅40 转0 评0 公众公开 23-01-13 17:03 |
由于x86 cpu对pci标准的完美支持,所以x86 cpu还支持pci的io空间访问和pci的配置空间访问: io空间:pci标准规定的io地址空间最大可以有4G,但是x86只实现了64k的大小。}PCI_OP_READ(byte, u8, 1)PCI_OP_READ(word, u16, 2)PCI_OP_READ(dword, u32, 4)PCI_OP_WRITE(byte, u8, 1)PCI_OP_WRITE(word, u16, 2)PCI_OP_WRITE(dword, u32, 4)}struct ... 阅971 转2 评0 公众公开 22-09-16 22:37 |
2.1. 4KB页面线性地址翻译2.2. 4MB页面线性地址翻译2.3. CR3和分页结构项2.4. 物理地址组成。CR3生成PML4T物理基地址4.5.2. PML4E生成PDPT的物理基地址4.5.3. 4KB页和2MB页PDPTE生成PDT的物理基地址4.5.4. 1GB页PDPTE生成页面的物理基地址4.5.5. 4KB页PDE生成PT的物理基地址4.5.6. 4KB页PTE生成页面的物理基地址4.5.7. 2MB页PDE生成页面的物理... 阅315 转0 评0 公众公开 22-09-14 15:11 |
其中Local APIC与 I/O APIC之间采用的是3线的APIC总线进行通信。I/O APIC的寄存器分为两个类型的寄存器,第一种是用于访问 I/O APIC 寄存器的内存映射寄存器(Table 1所示),第二种是实际的 I/O APIC的寄存器(Table 2所示) 这两类的寄存器的用法为使用IOREGSEL寄存器中填入需要访问 Table 2 中的哪一个寄存器,之后在IOWIN寄存器对其进行访... 阅449 转1 评0 公众公开 22-08-20 19:44 |
一个进程的内核态pgd(4K)和用户态pgd(4K)放在一起形成一个8K的pgd。cr3的bit47-bit11为pgd的物理地址,最低位bit12来进行pgd切换:bit12=0 为内核态pgd,bit12=1 为用户态pgd。.macro SAVE_AND_SWITCH_TO_KERNEL_CR3 scratch_reg:req save_reg:reqALTERNATIVE "jmp .Ldone_\@", "", X86_FEATURE_PTImovq%cr3, \scratch_reg... 阅188 转0 评0 公众公开 22-08-20 18:23 |
PTI(page table isolation)背景。diff --git a/arch/x86/include/asm/pti.h b/arch/x86/include/asm/pti.hnew file mode 100644index 0000000..0b5ef05--- /dev/null+++ b/arch/x86/include/asm/pti.h@@ -0,0 +1,14 @@+// SPDX-License-Identifier: GPL-2.0+#ifndef _ASM_X86_PTI_H+#define _ASM_X86_PTI_H+#ifndef __ASSEMBLY__++#ifdef CONFI... 阅29 转0 评0 公众公开 22-08-20 18:22 |
CPL 权限级别代表着访问者的权限,也就是说当前正在执行代码的权限,要理解权限控制的逻辑,你需要明白下面两点:要调用 interrupt handler 那么首先你必须要有权限去访问 IDT 表中的 gate,这表示:CPL 的权限必须不低于 DPLg (gate 所要求的权限),这样你才有权限去访问 gateinterrupt handler 会在高权限级别里执行,也就是说 interrupt ha... 阅334 转0 评0 公众公开 22-08-20 17:03 |
IA32和x64架构分段数据结构 翻译自《Intel? 64 and IA-32 Architectures Software Developer Manuals》IA-32系统级寄存器和数据结构:内存管理寄存器:逻辑地址到线性地址的翻译:32位段描述符:32位调用门描述符:64位调用门描述符:32位IDT门描述符:64位中断/陷阱门:64位TSS/LDT描述符:全局描述符和局部描述符:描述符表描述符格式: 阅26 转0 评0 公众公开 22-08-16 10:32 |
操作系统:CPU工作模式。按照 CPU 功能升级迭代的顺序,CPU 的工作模式有实模式、保护模式、长模式,这几种工作模式下 CPU 执行程序的方式截然不同,下面我们一起来探讨这几种工作模式。实模式下的寄存器:实模式下访问内存。可以看出,段寄存器中不再存放段基地址,而是具体段描述符的索引,访问一个内存地址时,段寄存器中的索引首先会结合 G... 阅134 转0 评0 公众公开 22-08-16 09:59 |