Subversion Repositories HelenOS

Rev

Rev 4377 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4377 Rev 4692
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)) {