Lines Matching defs:hal

48 static s1394_addr_space_blk_t *s1394_free_list_search(s1394_hal_t *hal,
51 static s1394_addr_space_blk_t *s1394_free_list_find(s1394_hal_t *hal,
54 static s1394_addr_space_blk_t *s1394_free_list_delete(s1394_hal_t *hal,
57 static void s1394_used_tree_insert(s1394_hal_t *hal, s1394_addr_space_blk_t *x);
87 s1394_request_addr_blk(s1394_hal_t *hal, t1394_alloc_addr_t *addr_allocp)
96 ASSERT(hal != NULL);
99 mutex_enter(&hal->addr_space_free_mutex);
101 curr_blk = s1394_free_list_find(hal, addr_allocp->aa_type,
105 mutex_exit(&hal->addr_space_free_mutex);
119 curr_blk = s1394_free_list_delete(hal, curr_blk);
122 mutex_exit(&hal->addr_space_free_mutex);
133 s1394_used_tree_insert(hal, curr_blk);
135 s1394_addr_alloc_kstat(hal, addr_allocp->aa_address);
147 mutex_exit(&hal->addr_space_free_mutex);
170 mutex_exit(&hal->addr_space_free_mutex);
173 s1394_used_tree_insert(hal, new_blk);
175 s1394_addr_alloc_kstat(hal, addr_allocp->aa_address);
192 s1394_claim_addr_blk(s1394_hal_t *hal, t1394_alloc_addr_t *addr_allocp)
202 ASSERT(hal != NULL);
205 mutex_enter(&hal->addr_space_free_mutex);
208 curr_blk = s1394_free_list_search(hal, addr_allocp->aa_address);
213 mutex_exit(&hal->addr_space_free_mutex);
234 curr_blk = s1394_free_list_delete(hal,
238 mutex_exit(&hal->addr_space_free_mutex);
249 s1394_used_tree_insert(hal, curr_blk);
251 s1394_addr_alloc_kstat(hal,
270 mutex_exit(&hal->addr_space_free_mutex);
293 mutex_exit(&hal->addr_space_free_mutex);
296 s1394_used_tree_insert(hal, new_blk);
298 s1394_addr_alloc_kstat(hal,
319 mutex_exit(&hal->addr_space_free_mutex);
342 mutex_exit(&hal->addr_space_free_mutex);
345 s1394_used_tree_insert(hal, new_blk);
347 s1394_addr_alloc_kstat(hal,
366 mutex_exit(&hal->addr_space_free_mutex);
380 mutex_exit(&hal->addr_space_free_mutex);
412 s1394_free_list_insert(hal, new_blk);
415 mutex_exit(&hal->addr_space_free_mutex);
418 s1394_used_tree_insert(hal, middle_blk);
420 s1394_addr_alloc_kstat(hal,
432 mutex_exit(&hal->addr_space_free_mutex);
445 s1394_free_addr_blk(s1394_hal_t *hal, s1394_addr_space_blk_t *blk)
451 mutex_enter(&hal->addr_space_free_mutex);
454 blk = s1394_used_tree_delete(hal, blk);
458 mutex_exit(&hal->addr_space_free_mutex);
468 s1394_free_list_insert(hal, blk);
471 mutex_exit(&hal->addr_space_free_mutex);
488 s1394_reserve_addr_blk(s1394_hal_t *hal, t1394_alloc_addr_t *addr_allocp)
498 ASSERT(hal != NULL);
501 mutex_enter(&hal->addr_space_free_mutex);
504 curr_blk = s1394_free_list_search(hal, addr_allocp->aa_address);
508 mutex_exit(&hal->addr_space_free_mutex);
521 mutex_exit(&hal->addr_space_free_mutex);
540 mutex_exit(&hal->addr_space_free_mutex);
553 mutex_exit(&hal->addr_space_free_mutex);
571 s1394_free_list_insert(hal, new_blk);
574 mutex_exit(&hal->addr_space_free_mutex);
589 mutex_exit(&hal->addr_space_free_mutex);
607 s1394_free_list_insert(hal, new_blk);
610 mutex_exit(&hal->addr_space_free_mutex);
623 mutex_exit(&hal->addr_space_free_mutex);
638 mutex_exit(&hal->addr_space_free_mutex);
663 s1394_free_list_insert(hal, middle_blk);
664 s1394_free_list_insert(hal, new_blk);
667 mutex_exit(&hal->addr_space_free_mutex);
677 mutex_exit(&hal->addr_space_free_mutex);
694 s1394_init_addr_space(s1394_hal_t *hal)
710 mutex_init(&hal->addr_space_free_mutex,
712 mutex_init(&hal->addr_space_used_mutex,
713 NULL, MUTEX_DRIVER, hal->halinfo.hw_interrupt);
716 hal->addr_space_free_list = NULL;
717 hal->addr_space_used_tree = NULL;
720 num_blks = hal->halinfo.addr_map_num_entries;
721 addr_map = hal->halinfo.addr_map;
724 mutex_enter(&hal->addr_space_free_mutex);
727 hal->posted_write_addr_lo = ADDR_LO_INVALID;
728 hal->posted_write_addr_hi = ADDR_HI_INVALID;
731 hal->physical_addr_lo = ADDR_LO_INVALID;
732 hal->physical_addr_hi = ADDR_HI_INVALID;
735 hal->csr_addr_lo = ADDR_LO_INVALID;
736 hal->csr_addr_hi = ADDR_HI_INVALID;
739 hal->normal_addr_lo = ADDR_LO_INVALID;
740 hal->normal_addr_hi = ADDR_HI_INVALID;
754 hal->posted_write_addr_lo = addr_blk->addr_lo;
755 hal->posted_write_addr_hi = addr_blk->addr_hi;
760 hal->normal_addr_lo = addr_blk->addr_lo;
761 hal->normal_addr_hi = addr_blk->addr_hi;
766 hal->csr_addr_lo = addr_blk->addr_lo;
767 hal->csr_addr_hi = addr_blk->addr_hi;
772 hal->physical_addr_lo = addr_blk->addr_lo;
773 hal->physical_addr_hi = addr_blk->addr_hi;
778 mutex_exit(&hal->addr_space_free_mutex);
779 s1394_destroy_addr_space(hal);
787 s1394_free_list_insert(hal, addr_blk);
791 mutex_exit(&hal->addr_space_free_mutex);
794 if (s1394_setup_CSR_space(hal) != DDI_SUCCESS) {
795 s1394_destroy_addr_space(hal);
806 num_blks = hal->halinfo.resv_map_num_entries;
807 resv_map = hal->halinfo.resv_map;
813 if ((lo >= hal->physical_addr_lo) &&
814 (hi <= hal->physical_addr_hi)) {
815 s1394_destroy_addr_space(hal);
826 ret = s1394_reserve_addr_blk(hal, &addr_alloc);
828 s1394_destroy_addr_space(hal);
852 s1394_destroy_addr_space(s1394_hal_t *hal)
864 mutex_enter(&hal->addr_space_used_mutex);
866 addr_blk = hal->addr_space_used_tree;
901 mutex_exit(&hal->addr_space_used_mutex);
902 mutex_destroy(&hal->addr_space_used_mutex);
905 mutex_enter(&hal->addr_space_free_mutex);
907 addr_blk = hal->addr_space_free_list;
918 mutex_exit(&hal->addr_space_free_mutex);
919 mutex_destroy(&hal->addr_space_free_mutex);
933 s1394_free_list_insert(s1394_hal_t *hal, s1394_addr_space_blk_t *new_blk)
942 ASSERT(MUTEX_HELD(&hal->addr_space_free_mutex));
945 curr_blk = hal->addr_space_free_list;
966 hal->addr_space_free_list = new_blk;
986 if (hal->addr_space_free_list == left_blk)
987 hal->addr_space_free_list = new_blk;
1020 s1394_free_list_search(s1394_hal_t *hal, uint64_t addr)
1027 ASSERT(MUTEX_HELD(&hal->addr_space_free_mutex));
1030 curr_blk = hal->addr_space_free_list;
1049 s1394_free_list_find(s1394_hal_t *hal, uint32_t type, uint32_t length)
1057 ASSERT(MUTEX_HELD(&hal->addr_space_free_mutex));
1060 curr_blk = hal->addr_space_free_list;
1093 s1394_free_list_delete(s1394_hal_t *hal, s1394_addr_space_blk_t *del_blk)
1101 ASSERT(MUTEX_HELD(&hal->addr_space_free_mutex));
1112 hal->addr_space_free_list = right_blk;
1135 s1394_used_tree_insert(s1394_hal_t *hal, s1394_addr_space_blk_t *x)
1144 mutex_enter(&hal->addr_space_used_mutex);
1147 root = &hal->addr_space_used_tree;
1199 mutex_exit(&hal->addr_space_used_mutex);
1250 s1394_used_tree_search(s1394_hal_t *hal, uint64_t addr)
1257 ASSERT(MUTEX_HELD(&hal->addr_space_used_mutex));
1260 curr_blk = s1394_tree_search(hal->addr_space_used_tree, addr);
1300 s1394_used_tree_delete(s1394_hal_t *hal, s1394_addr_space_blk_t *z)
1314 mutex_enter(&hal->addr_space_used_mutex);
1317 root = &hal->addr_space_used_tree;
1397 mutex_exit(&hal->addr_space_used_mutex);
1644 s1394_is_posted_write(s1394_hal_t *hal, uint64_t addr)
1648 if ((addr >= hal->posted_write_addr_lo) &&
1649 (addr <= hal->posted_write_addr_hi))
1661 s1394_is_physical_addr(s1394_hal_t *hal, uint64_t addr)
1665 if ((addr >= hal->physical_addr_lo) &&
1666 (addr <= hal->physical_addr_hi))
1678 s1394_is_csr_addr(s1394_hal_t *hal, uint64_t addr)
1682 if ((addr >= hal->csr_addr_lo) &&
1683 (addr <= hal->csr_addr_hi))
1695 s1394_is_normal_addr(s1394_hal_t *hal, uint64_t addr)
1699 if ((addr >= hal->normal_addr_lo) &&
1700 (addr <= hal->normal_addr_hi))