Rev 4156 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4156 | Rev 4537 | ||
---|---|---|---|
Line 55... | Line 55... | ||
55 | * |
55 | * |
56 | * @return 0 on success or an error code from errno.h. |
56 | * @return 0 on success or an error code from errno.h. |
57 | */ |
57 | */ |
58 | int ddi_iospace_enable_arch(task_t *task, uintptr_t ioaddr, size_t size) |
58 | int ddi_iospace_enable_arch(task_t *task, uintptr_t ioaddr, size_t size) |
59 | { |
59 | { |
60 | count_t bits; |
60 | size_t bits; |
61 | 61 | ||
62 | bits = ioaddr + size; |
62 | bits = ioaddr + size; |
63 | if (bits > IO_PORTS) |
63 | if (bits > IO_PORTS) |
64 | return ENOENT; |
64 | return ENOENT; |
65 | 65 | ||
Line 97... | Line 97... | ||
97 | } |
97 | } |
98 | 98 | ||
99 | /* |
99 | /* |
100 | * Enable the range and we are done. |
100 | * Enable the range and we are done. |
101 | */ |
101 | */ |
102 | bitmap_clear_range(&task->arch.iomap, (index_t) ioaddr, (count_t) size); |
102 | bitmap_clear_range(&task->arch.iomap, (size_t) ioaddr, (size_t) size); |
103 | 103 | ||
104 | /* |
104 | /* |
105 | * Increment I/O Permission bitmap generation counter. |
105 | * Increment I/O Permission bitmap generation counter. |
106 | */ |
106 | */ |
107 | task->arch.iomapver++; |
107 | task->arch.iomapver++; |
Line 116... | Line 116... | ||
116 | * |
116 | * |
117 | * Interrupts must be disabled prior this call. |
117 | * Interrupts must be disabled prior this call. |
118 | */ |
118 | */ |
119 | void io_perm_bitmap_install(void) |
119 | void io_perm_bitmap_install(void) |
120 | { |
120 | { |
121 | count_t bits; |
121 | size_t bits; |
122 | ptr_16_32_t cpugdtr; |
122 | ptr_16_32_t cpugdtr; |
123 | descriptor_t *gdt_p; |
123 | descriptor_t *gdt_p; |
124 | count_t ver; |
124 | size_t ver; |
125 | 125 | ||
126 | /* First, copy the I/O Permission Bitmap. */ |
126 | /* First, copy the I/O Permission Bitmap. */ |
127 | spinlock_lock(&TASK->lock); |
127 | spinlock_lock(&TASK->lock); |
128 | ver = TASK->arch.iomapver; |
128 | ver = TASK->arch.iomapver; |
129 | if ((bits = TASK->arch.iomap.bits)) { |
129 | if ((bits = TASK->arch.iomap.bits)) { |