Changeset 5f70118 in mainline for kernel/arch/ia64
- Timestamp:
- 2010-01-10T12:16:59Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c77a64f
- Parents:
- 309ede1 (diff), 1ac3a52 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- kernel/arch/ia64
- Files:
-
- 1 added
- 8 edited
- 1 moved
-
Makefile.inc (modified) (1 diff)
-
_link.ld.in (modified) (4 diffs)
-
include/asm.h (modified) (1 diff)
-
include/interrupt.h (modified) (2 diffs)
-
src/cpu/cpu.c (modified) (1 diff)
-
src/debug/stacktrace.c (moved) (moved from kernel/generic/include/stackarg.h ) (3 diffs)
-
src/debug/stacktrace_asm.S (added)
-
src/ivt.S (modified) (1 diff)
-
src/mm/as.c (modified) (1 diff)
-
src/start.S (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/Makefile.inc
r309ede1 r5f70118 53 53 arch/$(KARCH)/src/context.S \ 54 54 arch/$(KARCH)/src/cpu/cpu.c \ 55 arch/$(KARCH)/src/debug/stacktrace.c \ 56 arch/$(KARCH)/src/debug/stacktrace_asm.S \ 55 57 arch/$(KARCH)/src/ivt.S \ 56 58 arch/$(KARCH)/src/interrupt.c \ -
kernel/arch/ia64/_link.ld.in
r309ede1 r5f70118 7 7 */ 8 8 9 #define LOAD_ADDRESS_V 0xe000000004404000 10 #define LOAD_ADDRESS_P 0x0000000004404000 11 9 12 ENTRY(kernel_image_start) 10 13 11 14 SECTIONS { 12 .image 0xe000000004404000: AT (0x0000000004404000) {15 .image LOAD_ADDRESS_V: AT (LOAD_ADDRESS_P) { 13 16 ktext_start = .; 14 17 *(K_TEXT_START); … … 21 24 *(.opd) 22 25 *(.data .data.*) 26 hardcoded_load_address = .; 27 QUAD(LOAD_ADDRESS_V); 28 hardcoded_ktext_size = .; 29 QUAD(ktext_end - ktext_start); 30 hardcoded_kdata_size = .; 31 QUAD(kdata_end - kdata_start); 23 32 *(.got .got.*) 24 33 *(.sdata) … … 28 37 *(COMMON); 29 38 39 . = ALIGN(8); 30 40 symbol_table = .; 31 41 *(symtab.*); /* Symbol table, must be LAST symbol!*/ … … 38 48 } 39 49 40 _hardcoded_ktext_size = ktext_end - ktext_start;41 _hardcoded_kdata_size = kdata_end - kdata_start;42 _hardcoded_load_address = 0xe000000004404000;43 44 50 } -
kernel/arch/ia64/include/asm.h
r309ede1 r5f70118 422 422 asm volatile ( 423 423 "rsm %[mask]\n" 424 ";;\n" 425 "srlz.d\n" 424 426 :: [mask] "i" (PSR_PK_MASK) 425 427 ); -
kernel/arch/ia64/include/interrupt.h
r309ede1 r5f70118 72 72 #define EOI 0 /**< The actual value doesn't matter. */ 73 73 74 typedef struct {74 typedef struct istate { 75 75 uint128_t f2; 76 76 uint128_t f3; … … 143 143 } 144 144 145 static inline unative_t istate_get_fp(istate_t *istate) 146 { 147 return 0; /* FIXME */ 148 } 149 145 150 static inline int istate_from_uspace(istate_t *istate) 146 151 { -
kernel/arch/ia64/src/cpu/cpu.c
r309ede1 r5f70118 37 37 #include <arch/register.h> 38 38 #include <print.h> 39 #include <memstr.h> 39 40 40 41 void cpu_arch_init(void) -
kernel/arch/ia64/src/debug/stacktrace.c
r309ede1 r5f70118 1 1 /* 2 * Copyright (c) 20 05Jakub Jermar2 * Copyright (c) 2010 Jakub Jermar 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup generic29 /** @addtogroup ia64 30 30 * @{ 31 31 */ … … 33 33 */ 34 34 35 /* 36 * Variable argument list manipulation macros 37 * for architectures using stack to pass arguments. 38 */ 39 40 #ifndef KERN_STACKARG_H_ 41 #define KERN_STACKARG_H_ 35 #include <stacktrace.h> 36 #include <syscall/copy.h> 37 #include <arch/types.h> 38 #include <typedefs.h> 42 39 43 #include <arch/types.h> 40 bool kernel_frame_pointer_validate(uintptr_t fp) 41 { 42 return false; 43 } 44 44 45 typedef struct va_list { 46 int pos; 47 uint8_t *last;48 } va_list;45 bool kernel_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 46 { 47 return false; 48 } 49 49 50 #define va_start(ap, lst) \ 51 (ap).pos = sizeof(lst); \ 52 (ap).last = (uint8_t *) &(lst) 50 bool kernel_return_address_get(uintptr_t fp, uintptr_t *ra) 51 { 52 return false; 53 } 53 54 54 #define va_arg(ap, type) \ 55 (*((type *)((ap).last + ((ap).pos += sizeof(type)) - sizeof(type)))) 55 bool uspace_frame_pointer_validate(uintptr_t fp) 56 { 57 return false; 58 } 56 59 57 #define va_copy(dst, src) dst = src 58 #define va_end(ap) 60 bool uspace_frame_pointer_prev(uintptr_t fp, uintptr_t *prev) 61 { 62 return false; 63 } 59 64 60 61 #endif 65 bool uspace_return_address_get(uintptr_t fp, uintptr_t *ra) 66 { 67 return false; 68 } 62 69 63 70 /** @} -
kernel/arch/ia64/src/ivt.S
r309ede1 r5f70118 391 391 392 392 /* 10. call handler */ 393 movl r1 = _hardcoded_load_address393 movl r1 = kernel_image_start 394 394 395 395 mov b1 = loc2 -
kernel/arch/ia64/src/mm/as.c
r309ede1 r5f70118 73 73 rr.map.ps = PAGE_WIDTH; 74 74 rr_write(i, rr.word); 75 srlz_d(); 76 srlz_i(); 75 77 } 76 srlz_d();77 srlz_i();78 78 } 79 79 -
kernel/arch/ia64/src/start.S
r309ede1 r5f70118 186 186 movl r20 = (VRN_KERNEL << VRN_SHIFT) ;; 187 187 or r20 = r20, r1 ;; 188 movl r1 = _hardcoded_load_address188 movl r1 = kernel_image_start 189 189 190 190 /* 191 * Initialize hardcoded_* variables. Do only BSP191 * Initialize bootinfo on BSP. 192 192 */ 193 (p3) movl r14 = _hardcoded_ktext_size 194 (p3) movl r15 = _hardcoded_kdata_size 195 (p3) movl r16 = _hardcoded_load_address ;; 196 (p3) addl r17 = @gprel(hardcoded_ktext_size), gp 197 (p3) addl r18 = @gprel(hardcoded_kdata_size), gp 198 (p3) addl r19 = @gprel(hardcoded_load_address), gp 199 (p3) addl r21 = @gprel(bootinfo), gp 200 ;; 201 (p3) st8 [r17] = r14 202 (p3) st8 [r18] = r15 203 (p3) st8 [r19] = r16 193 (p3) addl r21 = @gprel(bootinfo), gp ;; 204 194 (p3) st8 [r21] = r20 205 195
Note:
See TracChangeset
for help on using the changeset viewer.
