- Timestamp:
- 2011-09-24T20:25:46Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d03da17
- Parents:
- 4093b14 (diff), f1a9e87 (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
- Files:
-
- 3 edited
-
arch/ia64/include/asm.h (modified) (4 diffs)
-
generic/src/adt/btree.c (modified) (7 diffs)
-
generic/src/adt/list.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/include/asm.h
r4093b14 reb87adb 44 44 #define IA64_IOSPACE_ADDRESS 0xE001000000000000ULL 45 45 46 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 47 46 48 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t v) 47 49 { 48 uintptr_t prt = (uintptr_t) port; 49 50 *((ioport8_t *) (IA64_IOSPACE_ADDRESS + 51 ((prt & 0xfff) | ((prt >> 2) << 12)))) = v; 50 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 51 uintptr_t prt = (uintptr_t) port; 52 53 *((ioport8_t *) (IA64_IOSPACE_ADDRESS + 54 ((prt & 0xfff) | ((prt >> 2) << 12)))) = v; 55 } else { 56 *port = v; 57 } 52 58 53 59 asm volatile ( … … 59 65 NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t v) 60 66 { 61 uintptr_t prt = (uintptr_t) port; 62 63 *((ioport16_t *) (IA64_IOSPACE_ADDRESS + 64 ((prt & 0xfff) | ((prt >> 2) << 12)))) = v; 67 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 68 uintptr_t prt = (uintptr_t) port; 69 70 *((ioport16_t *) (IA64_IOSPACE_ADDRESS + 71 ((prt & 0xfff) | ((prt >> 2) << 12)))) = v; 72 } else { 73 *port = v; 74 } 65 75 66 76 asm volatile ( … … 72 82 NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t v) 73 83 { 74 uintptr_t prt = (uintptr_t) port; 75 76 *((ioport32_t *) (IA64_IOSPACE_ADDRESS + 77 ((prt & 0xfff) | ((prt >> 2) << 12)))) = v; 84 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 85 uintptr_t prt = (uintptr_t) port; 86 87 *((ioport32_t *) (IA64_IOSPACE_ADDRESS + 88 ((prt & 0xfff) | ((prt >> 2) << 12)))) = v; 89 } else { 90 *port = v; 91 } 78 92 79 93 asm volatile ( … … 85 99 NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port) 86 100 { 87 uintptr_t prt = (uintptr_t) port; 88 89 asm volatile ( 90 "mf\n" 91 ::: "memory" 92 ); 93 94 return *((ioport8_t *) (IA64_IOSPACE_ADDRESS + 95 ((prt & 0xfff) | ((prt >> 2) << 12)))); 101 uint8_t v; 102 103 asm volatile ( 104 "mf\n" 105 ::: "memory" 106 ); 107 108 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 109 uintptr_t prt = (uintptr_t) port; 110 111 v = *((ioport8_t *) (IA64_IOSPACE_ADDRESS + 112 ((prt & 0xfff) | ((prt >> 2) << 12)))); 113 } else { 114 v = *port; 115 } 116 117 return v; 96 118 } 97 119 98 120 NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port) 99 121 { 100 uintptr_t prt = (uintptr_t) port; 101 102 asm volatile ( 103 "mf\n" 104 ::: "memory" 105 ); 106 107 return *((ioport16_t *) (IA64_IOSPACE_ADDRESS + 108 ((prt & 0xfff) | ((prt >> 2) << 12)))); 122 uint16_t v; 123 124 asm volatile ( 125 "mf\n" 126 ::: "memory" 127 ); 128 129 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 130 uintptr_t prt = (uintptr_t) port; 131 132 v = *((ioport16_t *) (IA64_IOSPACE_ADDRESS + 133 ((prt & 0xfff) | ((prt >> 2) << 12)))); 134 } else { 135 v = *port; 136 } 137 138 return v; 109 139 } 110 140 111 141 NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port) 112 142 { 113 uintptr_t prt = (uintptr_t) port; 114 115 asm volatile ( 116 "mf\n" 117 ::: "memory" 118 ); 119 120 return *((ioport32_t *) (IA64_IOSPACE_ADDRESS + 121 ((prt & 0xfff) | ((prt >> 2) << 12)))); 143 uint32_t v; 144 145 asm volatile ( 146 "mf\n" 147 ::: "memory" 148 ); 149 150 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 151 uintptr_t prt = (uintptr_t) port; 152 153 v = *((ioport32_t *) (IA64_IOSPACE_ADDRESS + 154 ((prt & 0xfff) | ((prt >> 2) << 12)))); 155 } else { 156 v = *port; 157 } 158 159 return v; 122 160 } 123 161 -
kernel/generic/src/adt/btree.c
r4093b14 reb87adb 38 38 * 39 39 * The B+tree has the following properties: 40 * @li it is a bal lanced 3-4-5 tree (i.e. BTREE_M = 5)40 * @li it is a balanced 3-4-5 tree (i.e. BTREE_M = 5) 41 41 * @li values (i.e. pointers to values) are stored only in leaves 42 42 * @li leaves are linked in a list 43 43 * 44 * Be careful lwhen using these trees. They need to allocate44 * Be careful when using these trees. They need to allocate 45 45 * and deallocate memory for their index nodes and as such 46 46 * can sleep. … … 146 146 * also makes use of this feature. 147 147 * 148 * @param node B-tree node into w ich the new key is to be inserted.148 * @param node B-tree node into which the new key is to be inserted. 149 149 * @param key The key to be inserted. 150 150 * @param value Pointer to value to be inserted. … … 270 270 * This feature is used during insert by right rotation. 271 271 * 272 * @param node B-tree node into w ich the new key is to be inserted.272 * @param node B-tree node into which the new key is to be inserted. 273 273 * @param key The key to be inserted. 274 274 * @param value Pointer to value to be inserted. … … 463 463 if (rnode->keys < BTREE_MAX_KEYS) { 464 464 /* 465 * The rota ion can be done. The right sibling has free space.465 * The rotation can be done. The right sibling has free space. 466 466 */ 467 467 node_insert_key_and_rsubtree(node, inskey, insvalue, rsubtree); … … 484 484 * the median will be copied there. 485 485 * 486 * @param node B-tree node w ich is going to be split.486 * @param node B-tree node which is going to be split. 487 487 * @param key The key to be inserted. 488 488 * @param value Pointer to the value to be inserted. … … 562 562 if (node->keys < BTREE_MAX_KEYS) { 563 563 /* 564 * Node con atins enough space, the key can be stored immediately.564 * Node contains enough space, the key can be stored immediately. 565 565 */ 566 566 node_insert_key_and_rsubtree(node, key, value, rsubtree); … … 806 806 807 807 /* 808 * The key can be immediatel ly removed.808 * The key can be immediately removed. 809 809 * 810 810 * Note that the right subtree is removed because when -
kernel/generic/src/adt/list.c
r4093b14 reb87adb 33 33 /** 34 34 * @file 35 * @brief Functions completing doubly linked circular list implementa ion.35 * @brief Functions completing doubly linked circular list implementation. 36 36 * 37 37 * This file contains some of the functions implementing doubly linked circular lists.
Note:
See TracChangeset
for help on using the changeset viewer.
