Changeset dc0b964 in mainline for kernel/arch/ia32/include
- Timestamp:
- 2010-11-24T14:23:14Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 85369b1, b89e1d3
- Parents:
- 8b3bff5
- Location:
- kernel/arch/ia32/include
- Files:
-
- 12 edited
-
boot/boot.h (modified) (1 diff)
-
boot/memmap.h (modified) (1 diff)
-
context.h (modified) (3 diffs)
-
context_offset.h (modified) (4 diffs)
-
cpu.h (modified) (1 diff)
-
drivers/i8259.h (modified) (1 diff)
-
istate.h (modified) (2 diffs)
-
mm/as.h (modified) (2 diffs)
-
mm/page.h (modified) (4 diffs)
-
smp/ap.h (modified) (1 diff)
-
smp/apic.h (modified) (12 diffs)
-
types.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/include/boot/boot.h
r8b3bff5 rdc0b964 38 38 #define BOOT_OFFSET 0x108000 39 39 #define AP_BOOT_OFFSET 0x8000 40 #define BOOT_STACK_SIZE 0x 40040 #define BOOT_STACK_SIZE 0x0400 41 41 42 42 #define MULTIBOOT_HEADER_MAGIC 0x1BADB002 -
kernel/arch/ia32/include/boot/memmap.h
r8b3bff5 rdc0b964 70 70 71 71 extern e820memmap_t e820table[MEMMAP_E820_MAX_RECORDS]; 72 extern uint8_t e820counter; 72 extern uint8_t e820counter; 73 73 74 74 #endif -
kernel/arch/ia32/include/context.h
r8b3bff5 rdc0b964 27 27 */ 28 28 29 /** @addtogroup ia32 29 /** @addtogroup ia32 30 30 * @{ 31 31 */ … … 40 40 #include <typedefs.h> 41 41 42 #define STACK_ITEM_SIZE 442 #define STACK_ITEM_SIZE 4 43 43 44 44 /* … … 48 48 * One item is put onto stack to support get_stack_base(). 49 49 */ 50 #define SP_DELTA (8 + STACK_ITEM_SIZE)50 #define SP_DELTA (8 + STACK_ITEM_SIZE) 51 51 52 52 #define context_set(c, _pc, stack, size) \ -
kernel/arch/ia32/include/context_offset.h
r8b3bff5 rdc0b964 27 27 */ 28 28 29 /** @addtogroup ia32 29 /** @addtogroup ia32 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ia32_CONTEXT_OFFSET_H_ 37 37 38 #define OFFSET_SP 0x039 #define OFFSET_PC 0x440 #define OFFSET_EBX 0x841 #define OFFSET_ESI 0xC42 #define OFFSET_EDI 0x1043 #define OFFSET_EBP 0x1438 #define OFFSET_SP 0x00 39 #define OFFSET_PC 0x04 40 #define OFFSET_EBX 0x08 41 #define OFFSET_ESI 0x0C 42 #define OFFSET_EDI 0x10 43 #define OFFSET_EBP 0x14 44 44 45 #ifdef KERNEL 46 # define OFFSET_IPL0x1845 #ifdef KERNEL 46 #define OFFSET_IPL 0x18 47 47 #else 48 # define OFFSET_TLS0x1848 #define OFFSET_TLS 0x18 49 49 #endif 50 50 51 #ifdef __ASM__ 51 52 52 #ifdef __ASM__ 53 54 # ctx: address of the structure with saved context 53 # ctx: address of the structure with saved context 55 54 # pc: return address 56 55 57 56 .macro CONTEXT_SAVE_ARCH_CORE ctx:req pc:req 58 movl %esp,OFFSET_SP(\ctx) # %esp -> ctx->sp 57 movl %esp,OFFSET_SP(\ctx) # %esp -> ctx->sp 59 58 movl \pc,OFFSET_PC(\ctx) # %eip -> ctx->pc 60 movl %ebx,OFFSET_EBX(\ctx) # %ebx -> ctx->ebx 61 movl %esi,OFFSET_ESI(\ctx) # %esi -> ctx->esi 62 movl %edi,OFFSET_EDI(\ctx) # %edi -> ctx->edi 63 movl %ebp,OFFSET_EBP(\ctx) # %ebp -> ctx->ebp 59 movl %ebx,OFFSET_EBX(\ctx) # %ebx -> ctx->ebx 60 movl %esi,OFFSET_ESI(\ctx) # %esi -> ctx->esi 61 movl %edi,OFFSET_EDI(\ctx) # %edi -> ctx->edi 62 movl %ebp,OFFSET_EBP(\ctx) # %ebp -> ctx->ebp 64 63 .endm 65 64 66 # ctx: address of the structure with saved context 65 # ctx: address of the structure with saved context 67 66 68 67 .macro CONTEXT_RESTORE_ARCH_CORE ctx:req pc:req … … 75 74 .endm 76 75 77 #endif /* __ASM__ */ 76 #endif /* __ASM__ */ 78 77 79 78 #endif … … 81 80 /** @} 82 81 */ 83 -
kernel/arch/ia32/include/cpu.h
r8b3bff5 rdc0b964 44 44 45 45 /* Support for SYSENTER and SYSEXIT */ 46 #define IA32_MSR_SYSENTER_CS 0x17447 #define IA32_MSR_SYSENTER_ESP 0x17548 #define IA32_MSR_SYSENTER_EIP 0x17646 #define IA32_MSR_SYSENTER_CS 0x174U 47 #define IA32_MSR_SYSENTER_ESP 0x175U 48 #define IA32_MSR_SYSENTER_EIP 0x176U 49 49 50 50 #ifndef __ASM__ -
kernel/arch/ia32/include/drivers/i8259.h
r8b3bff5 rdc0b964 39 39 #include <arch/interrupt.h> 40 40 41 #define PIC_PIC0PORT1 ((ioport8_t *) 0x20 )42 #define PIC_PIC0PORT2 ((ioport8_t *) 0x21 )43 #define PIC_PIC1PORT1 ((ioport8_t *) 0xa0 )44 #define PIC_PIC1PORT2 ((ioport8_t *) 0xa1 )41 #define PIC_PIC0PORT1 ((ioport8_t *) 0x20U) 42 #define PIC_PIC0PORT2 ((ioport8_t *) 0x21U) 43 #define PIC_PIC1PORT1 ((ioport8_t *) 0xa0U) 44 #define PIC_PIC1PORT2 ((ioport8_t *) 0xa1U) 45 45 46 46 #define PIC_NEEDICW4 (1 << 0) -
kernel/arch/ia32/include/istate.h
r8b3bff5 rdc0b964 37 37 38 38 #ifdef KERNEL 39 39 40 #include <typedefs.h> 40 41 #include <trace.h> 41 #else 42 43 #else /* KERNEL */ 44 42 45 #include <sys/types.h> 46 43 47 #define NO_TRACE 44 #endif 48 49 #endif /* KERNEL */ 45 50 46 51 typedef struct istate { … … 77 82 NO_TRACE static inline int istate_from_uspace(istate_t *istate) 78 83 { 79 return !(istate->eip & 0x80000000);84 return !(istate->eip & UINT32_C(0x80000000)); 80 85 } 81 86 -
kernel/arch/ia32/include/mm/as.h
r8b3bff5 rdc0b964 36 36 #define KERN_ia32_AS_H_ 37 37 38 #define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH 038 #define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH 0 39 39 40 #define KERNEL_ADDRESS_SPACE_START_ARCH ((unsigned long)0x80000000)41 #define KERNEL_ADDRESS_SPACE_END_ARCH ((unsigned long)0xffffffff)42 #define USER_ADDRESS_SPACE_START_ARCH ((unsigned long)0x00000000)43 #define USER_ADDRESS_SPACE_END_ARCH ((unsigned long)0x7fffffff)40 #define KERNEL_ADDRESS_SPACE_START_ARCH UINT32_C(0x80000000) 41 #define KERNEL_ADDRESS_SPACE_END_ARCH UINT32_C(0xffffffff) 42 #define USER_ADDRESS_SPACE_START_ARCH UINT32_C(0x00000000) 43 #define USER_ADDRESS_SPACE_END_ARCH UINT32_C(0x7fffffff) 44 44 45 #define USTACK_ADDRESS_ARCH (USER_ADDRESS_SPACE_END_ARCH - (PAGE_SIZE - 1))45 #define USTACK_ADDRESS_ARCH (USER_ADDRESS_SPACE_END_ARCH - (PAGE_SIZE - 1)) 46 46 47 47 typedef struct { … … 50 50 #include <genarch/mm/as_pt.h> 51 51 52 #define as_constructor_arch(as, flags) (as != as)53 #define as_destructor_arch(as) (as != as)54 #define as_create_arch(as, flags) (as != as)52 #define as_constructor_arch(as, flags) (as != as) 53 #define as_destructor_arch(as) (as != as) 54 #define as_create_arch(as, flags) (as != as) 55 55 #define as_install_arch(as) 56 56 #define as_deinstall_arch(as) -
kernel/arch/ia32/include/mm/page.h
r8b3bff5 rdc0b964 39 39 #include <trace.h> 40 40 41 #define PAGE_WIDTH FRAME_WIDTH42 #define PAGE_SIZE FRAME_SIZE41 #define PAGE_WIDTH FRAME_WIDTH 42 #define PAGE_SIZE FRAME_SIZE 43 43 44 44 #ifdef KERNEL 45 45 46 46 #ifndef __ASM__ 47 # define KA2PA(x) (((uintptr_t) (x)) - 0x80000000) 48 # define PA2KA(x) (((uintptr_t) (x)) + 0x80000000) 49 #else 50 # define KA2PA(x) ((x) - 0x80000000) 51 # define PA2KA(x) ((x) + 0x80000000) 52 #endif 47 48 #define KA2PA(x) (((uintptr_t) (x)) - UINT32_C(0x80000000)) 49 #define PA2KA(x) (((uintptr_t) (x)) + UINT32_C(0x80000000)) 50 51 #else /* __ASM__ */ 52 53 #define KA2PA(x) ((x) - 0x80000000) 54 #define PA2KA(x) ((x) + 0x80000000) 55 56 #endif /* __ASM__ */ 53 57 54 58 /* … … 58 62 59 63 /* Number of entries in each level. */ 60 #define PTL0_ENTRIES_ARCH 102461 #define PTL1_ENTRIES_ARCH 062 #define PTL2_ENTRIES_ARCH 063 #define PTL3_ENTRIES_ARCH 102464 #define PTL0_ENTRIES_ARCH 1024 65 #define PTL1_ENTRIES_ARCH 0 66 #define PTL2_ENTRIES_ARCH 0 67 #define PTL3_ENTRIES_ARCH 1024 64 68 65 69 /* Page table sizes for each level. */ 66 #define PTL0_SIZE_ARCH ONE_FRAME67 #define PTL1_SIZE_ARCH 068 #define PTL2_SIZE_ARCH 069 #define PTL3_SIZE_ARCH ONE_FRAME70 #define PTL0_SIZE_ARCH ONE_FRAME 71 #define PTL1_SIZE_ARCH 0 72 #define PTL2_SIZE_ARCH 0 73 #define PTL3_SIZE_ARCH ONE_FRAME 70 74 71 75 /* Macros calculating indices for each level. */ 72 #define PTL0_INDEX_ARCH(vaddr) (((vaddr) >> 22) & 0x3ff)73 #define PTL1_INDEX_ARCH(vaddr) 074 #define PTL2_INDEX_ARCH(vaddr) 075 #define PTL3_INDEX_ARCH(vaddr) (((vaddr) >> 12) & 0x3ff)76 #define PTL0_INDEX_ARCH(vaddr) (((vaddr) >> 22) & 0x3ffU) 77 #define PTL1_INDEX_ARCH(vaddr) 0 78 #define PTL2_INDEX_ARCH(vaddr) 0 79 #define PTL3_INDEX_ARCH(vaddr) (((vaddr) >> 12) & 0x3ffU) 76 80 77 81 /* Get PTE address accessors for each level. */ … … 122 126 #define PTE_WRITABLE_ARCH(p) \ 123 127 ((p)->writeable != 0) 124 #define PTE_EXECUTABLE_ARCH(p) 1128 #define PTE_EXECUTABLE_ARCH(p) 1 125 129 126 130 #ifndef __ASM__ … … 144 148 145 149 /** When bit on this position is 1, a reserved bit was set in page directory. */ 146 #define PFERR_CODE_RSVD (1 << 3) 150 #define PFERR_CODE_RSVD (1 << 3) 147 151 148 152 /** Page Table Entry. */ -
kernel/arch/ia32/include/smp/ap.h
r8b3bff5 rdc0b964 27 27 */ 28 28 29 /** @addtogroup ia32 29 /** @addtogroup ia32 30 30 * @{ 31 31 */ -
kernel/arch/ia32/include/smp/apic.h
r8b3bff5 rdc0b964 49 49 50 50 /** Delivery modes. */ 51 #define DELMOD_FIXED 0x0 52 #define DELMOD_LOWPRI 0x1 53 #define DELMOD_SMI 0x2 51 #define DELMOD_FIXED 0x0U 52 #define DELMOD_LOWPRI 0x1U 53 #define DELMOD_SMI 0x2U 54 54 /* 0x3 reserved */ 55 #define DELMOD_NMI 0x4 56 #define DELMOD_INIT 0x5 57 #define DELMOD_STARTUP 0x6 58 #define DELMOD_EXTINT 0x7 55 #define DELMOD_NMI 0x4U 56 #define DELMOD_INIT 0x5U 57 #define DELMOD_STARTUP 0x6U 58 #define DELMOD_EXTINT 0x7U 59 59 60 60 /** Destination modes. */ 61 #define DESTMOD_PHYS 0x0 62 #define DESTMOD_LOGIC 0x1 61 #define DESTMOD_PHYS 0x0U 62 #define DESTMOD_LOGIC 0x1U 63 63 64 64 /** Trigger Modes. */ 65 #define TRIGMOD_EDGE 0x0 66 #define TRIGMOD_LEVEL 0x1 65 #define TRIGMOD_EDGE 0x0U 66 #define TRIGMOD_LEVEL 0x1U 67 67 68 68 /** Levels. */ 69 #define LEVEL_DEASSERT 0x0 70 #define LEVEL_ASSERT 0x1 69 #define LEVEL_DEASSERT 0x0U 70 #define LEVEL_ASSERT 0x1U 71 71 72 72 /** Destination Shorthands. */ 73 #define SHORTHAND_NONE 0x0 74 #define SHORTHAND_SELF 0x1 75 #define SHORTHAND_ALL_INCL 0x2 76 #define SHORTHAND_ALL_EXCL 0x3 73 #define SHORTHAND_NONE 0x0U 74 #define SHORTHAND_SELF 0x1U 75 #define SHORTHAND_ALL_INCL 0x2U 76 #define SHORTHAND_ALL_EXCL 0x3U 77 77 78 78 /** Interrupt Input Pin Polarities. */ 79 #define POLARITY_HIGH 0x0 80 #define POLARITY_LOW 0x1 79 #define POLARITY_HIGH 0x0U 80 #define POLARITY_LOW 0x1U 81 81 82 82 /** Divide Values. (Bit 2 is always 0) */ 83 #define DIVIDE_2 0x0 84 #define DIVIDE_4 0x1 85 #define DIVIDE_8 0x2 86 #define DIVIDE_16 0x3 87 #define DIVIDE_32 0x8 88 #define DIVIDE_64 0x9 89 #define DIVIDE_128 0xa 90 #define DIVIDE_1 0xb 83 #define DIVIDE_2 0x0U 84 #define DIVIDE_4 0x1U 85 #define DIVIDE_8 0x2U 86 #define DIVIDE_16 0x3U 87 #define DIVIDE_32 0x8U 88 #define DIVIDE_64 0x9U 89 #define DIVIDE_128 0xaU 90 #define DIVIDE_1 0xbU 91 91 92 92 /** Timer Modes. */ 93 #define TIMER_ONESHOT 0x0 94 #define TIMER_PERIODIC 0x1 93 #define TIMER_ONESHOT 0x0U 94 #define TIMER_PERIODIC 0x1U 95 95 96 96 /** Delivery status. */ 97 #define DELIVS_IDLE 0x0 98 #define DELIVS_PENDING 0x1 97 #define DELIVS_IDLE 0x0U 98 #define DELIVS_PENDING 0x1U 99 99 100 100 /** Destination masks. */ 101 #define DEST_ALL 0xff 101 #define DEST_ALL 0xffU 102 102 103 103 /** Dest format models. */ 104 #define MODEL_FLAT 0xf 105 #define MODEL_CLUSTER 0x0 104 #define MODEL_FLAT 0xfU 105 #define MODEL_CLUSTER 0x0U 106 106 107 107 /** Interrupt Command Register. */ 108 #define ICRlo (0x300 / sizeof(uint32_t))109 #define ICRhi (0x310 / sizeof(uint32_t))108 #define ICRlo (0x300U / sizeof(uint32_t)) 109 #define ICRhi (0x310U / sizeof(uint32_t)) 110 110 111 111 typedef struct { … … 135 135 136 136 /* End Of Interrupt. */ 137 #define EOI (0x0b0 / sizeof(uint32_t))137 #define EOI (0x0b0U / sizeof(uint32_t)) 138 138 139 139 /** Error Status Register. */ 140 #define ESR (0x280 / sizeof(uint32_t))140 #define ESR (0x280U / sizeof(uint32_t)) 141 141 142 142 typedef union { … … 157 157 158 158 /* Task Priority Register */ 159 #define TPR (0x080 / sizeof(uint32_t))159 #define TPR (0x080U / sizeof(uint32_t)) 160 160 161 161 typedef union { … … 168 168 169 169 /** Spurious-Interrupt Vector Register. */ 170 #define SVR (0x0f0 / sizeof(uint32_t))170 #define SVR (0x0f0U / sizeof(uint32_t)) 171 171 172 172 typedef union { … … 181 181 182 182 /** Time Divide Configuration Register. */ 183 #define TDCR (0x3e0 / sizeof(uint32_t))183 #define TDCR (0x3e0U / sizeof(uint32_t)) 184 184 185 185 typedef union { … … 192 192 193 193 /* Initial Count Register for Timer */ 194 #define ICRT (0x380 / sizeof(uint32_t))194 #define ICRT (0x380U / sizeof(uint32_t)) 195 195 196 196 /* Current Count Register for Timer */ 197 #define CCRT (0x390 / sizeof(uint32_t))197 #define CCRT (0x390U / sizeof(uint32_t)) 198 198 199 199 /** LVT Timer register. */ 200 #define LVT_Tm (0x320 / sizeof(uint32_t))200 #define LVT_Tm (0x320U / sizeof(uint32_t)) 201 201 202 202 typedef union { … … 214 214 215 215 /** LVT LINT registers. */ 216 #define LVT_LINT0 (0x350 / sizeof(uint32_t))217 #define LVT_LINT1 (0x360 / sizeof(uint32_t))216 #define LVT_LINT0 (0x350U / sizeof(uint32_t)) 217 #define LVT_LINT1 (0x360U / sizeof(uint32_t)) 218 218 219 219 typedef union { … … 233 233 234 234 /** LVT Error register. */ 235 #define LVT_Err (0x370 / sizeof(uint32_t))235 #define LVT_Err (0x370U / sizeof(uint32_t)) 236 236 237 237 typedef union { … … 248 248 249 249 /** Local APIC ID Register. */ 250 #define L_APIC_ID (0x020 / sizeof(uint32_t))250 #define L_APIC_ID (0x020U / sizeof(uint32_t)) 251 251 252 252 typedef union { … … 259 259 260 260 /** Local APIC Version Register */ 261 #define LAVR (0x030 / sizeof(uint32_t))262 #define LAVR_Mask 0xff 263 264 #define is_local_apic(x) (((x) & LAVR_Mask & 0xf0 ) == 0x1)265 #define is_82489DX_apic(x) ((((x) & LAVR_Mask & 0xf0 ) == 0x0))266 #define is_local_xapic(x) (((x) & LAVR_Mask) == 0x14 )261 #define LAVR (0x030U / sizeof(uint32_t)) 262 #define LAVR_Mask 0xffU 263 264 #define is_local_apic(x) (((x) & LAVR_Mask & 0xf0U) == 0x1U) 265 #define is_82489DX_apic(x) ((((x) & LAVR_Mask & 0xf0U) == 0x0U)) 266 #define is_local_xapic(x) (((x) & LAVR_Mask) == 0x14U) 267 267 268 268 /** Logical Destination Register. */ 269 #define LDR (0x0d0 / sizeof(uint32_t))269 #define LDR (0x0d0U / sizeof(uint32_t)) 270 270 271 271 typedef union { … … 278 278 279 279 /** Destination Format Register. */ 280 #define DFR (0x0e0 / sizeof(uint32_t))280 #define DFR (0x0e0U / sizeof(uint32_t)) 281 281 282 282 typedef union { … … 289 289 290 290 /* IO APIC */ 291 #define IOREGSEL (0x00 / sizeof(uint32_t))292 #define IOWIN (0x10 / sizeof(uint32_t))293 294 #define IOAPICID 0x00 295 #define IOAPICVER 0x01 296 #define IOAPICARB 0x02 297 #define IOREDTBL 0x10 291 #define IOREGSEL (0x00U / sizeof(uint32_t)) 292 #define IOWIN (0x10U / sizeof(uint32_t)) 293 294 #define IOAPICID 0x00U 295 #define IOAPICVER 0x01U 296 #define IOAPICARB 0x02U 297 #define IOREDTBL 0x10U 298 298 299 299 /** I/O Register Select Register. */ -
kernel/arch/ia32/include/types.h
r8b3bff5 rdc0b964 50 50 } fncptr_t; 51 51 52 #define PRIp "x" /**< Format for uintptr_t. */ 53 #define PRIs "u" /**< Format for size_t. */ 54 55 #define PRId8 "d" /**< Format for int8_t. */ 56 #define PRId16 "d" /**< Format for int16_t. */ 57 #define PRId32 "d" /**< Format for int32_t. */ 58 #define PRId64 "lld" /**< Format for int64_t. */ 59 #define PRIdn "d" /**< Format for native_t. */ 60 61 #define PRIu8 "u" /**< Format for uint8_t. */ 62 #define PRIu16 "u" /**< Format for uint16_t. */ 63 #define PRIu32 "u" /**< Format for uint32_t. */ 64 #define PRIu64 "llu" /**< Format for uint64_t. */ 65 #define PRIun "u" /**< Format for unative_t. */ 66 67 #define PRIx8 "x" /**< Format for hexadecimal (u)int8_t. */ 68 #define PRIx16 "x" /**< Format for hexadecimal (u)int16_t. */ 69 #define PRIx32 "x" /**< Format for hexadecimal (u)uint32_t. */ 70 #define PRIx64 "llx" /**< Format for hexadecimal (u)int64_t. */ 71 #define PRIxn "x" /**< Format for hexadecimal (u)native_t. */ 52 #define PRIp PRIx32 /**< Format for uintptr_t. */ 53 #define PRIs PRIu32 /**< Format for size_t. */ 54 #define PRIdn PRId32 /**< Format for native_t. */ 55 #define PRIun PRIu32 /**< Format for unative_t. */ 56 #define PRIxn PRIx32 /**< Format for hexadecimal unative_t. */ 72 57 73 58 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
