Home
last modified time | relevance | path

Searched full:seg (Results 1 – 25 of 434) sorted by relevance

12345678910>>...18

/openbmc/linux/arch/s390/mm/
H A Dextmem.c165 query_segment_type (struct dcss_segment *seg) in query_segment_type() argument
183 memcpy (qin->qname, seg->dcss_name, 8); in query_segment_type()
203 seg->vm_segtype = qout->range[0].start & 0xff; in query_segment_type()
222 seg->vm_segtype = SEG_TYPE_EWEN; in query_segment_type()
225 /* analyze diag output and update seg */ in query_segment_type()
226 seg->start_addr = qout->segstart; in query_segment_type()
227 seg->end = qout->segend; in query_segment_type()
229 memcpy (seg->range, qout->range, 6*sizeof(struct qrange)); in query_segment_type()
230 seg->segcnt = qout->segcnt; in query_segment_type()
254 struct dcss_segment seg; in segment_type() local
[all …]
/openbmc/linux/drivers/infiniband/hw/mlx5/
H A Dwr.c55 void **seg, int *size, void **cur_edge) in set_eth_seg() argument
57 struct mlx5_wqe_eth_seg *eseg = *seg; in set_eth_seg()
85 *seg += stride; in set_eth_seg()
88 handle_post_send_edge(&qp->sq, seg, *size, cur_edge); in set_eth_seg()
91 mlx5r_memcpy_send_wqe(&qp->sq, cur_edge, seg, size, in set_eth_seg()
98 *seg += sizeof(struct mlx5_wqe_eth_seg); in set_eth_seg()
189 static void set_reg_mkey_seg(struct mlx5_mkey_seg *seg, in set_reg_mkey_seg() argument
195 memset(seg, 0, sizeof(*seg)); in set_reg_mkey_seg()
198 seg->log2_page_size = ilog2(mr->ibmr.page_size); in set_reg_mkey_seg()
203 seg->flags = get_umr_flags(access) | mr->access_mode; in set_reg_mkey_seg()
[all …]
H A Dwr.h47 * @seg: Current WQE position (16B aligned).
51 static inline void handle_post_send_edge(struct mlx5_ib_wq *sq, void **seg, in handle_post_send_edge() argument
56 if (likely(*seg != *cur_edge)) in handle_post_send_edge()
62 *seg = mlx5_frag_buf_get_wqe(&sq->fbc, idx); in handle_post_send_edge()
66 * WQ's pointers. At the end @seg is aligned to 16B regardless the copied size.
69 * @seg: Current WQE position (16B aligned).
75 void **seg, u32 *wqe_sz, in mlx5r_memcpy_send_wqe() argument
79 size_t leftlen = *cur_edge - *seg; in mlx5r_memcpy_send_wqe()
83 memcpy(*seg, src, copysz); in mlx5r_memcpy_send_wqe()
88 *seg += stride; in mlx5r_memcpy_send_wqe()
[all …]
/openbmc/linux/ipc/
H A Dmsgutil.c63 struct msg_msgseg *seg; in alloc_msg() local
68 seg = kmalloc(sizeof(*seg) + alen, GFP_KERNEL_ACCOUNT); in alloc_msg()
69 if (seg == NULL) in alloc_msg()
71 *pseg = seg; in alloc_msg()
72 seg->next = NULL; in alloc_msg()
73 pseg = &seg->next; in alloc_msg()
87 struct msg_msgseg *seg; in load_msg() local
99 for (seg = msg->next; seg != NULL; seg = seg->next) { in load_msg()
103 if (copy_from_user(seg + 1, src, alen)) in load_msg()
153 struct msg_msgseg *seg; in store_msg() local
[all …]
/openbmc/qemu/target/i386/hvf/
H A Dx86_descr.c24 #define VMX_SEGMENT_FIELD(seg) \ argument
25 [R_##seg] = { \
26 .selector = VMCS_GUEST_##seg##_SELECTOR, \
27 .base = VMCS_GUEST_##seg##_BASE, \
28 .limit = VMCS_GUEST_##seg##_LIMIT, \
29 .ar_bytes = VMCS_GUEST_##seg##_ACCESS_RIGHTS, \
48 uint32_t vmx_read_segment_limit(CPUState *cpu, X86Seg seg) in vmx_read_segment_limit() argument
50 return (uint32_t)rvmcs(cpu->accel->fd, vmx_segment_fields[seg].limit); in vmx_read_segment_limit()
53 uint32_t vmx_read_segment_ar(CPUState *cpu, X86Seg seg) in vmx_read_segment_ar() argument
55 return (uint32_t)rvmcs(cpu->accel->fd, vmx_segment_fields[seg].ar_bytes); in vmx_read_segment_ar()
[all …]
H A Dx86hvf.c88 struct vmx_segment seg; in hvf_put_segments() local
104 hvf_set_segment(cs, &seg, &env->segs[R_CS], false); in hvf_put_segments()
105 vmx_write_segment_descriptor(cs, &seg, R_CS); in hvf_put_segments()
107 hvf_set_segment(cs, &seg, &env->segs[R_DS], false); in hvf_put_segments()
108 vmx_write_segment_descriptor(cs, &seg, R_DS); in hvf_put_segments()
110 hvf_set_segment(cs, &seg, &env->segs[R_ES], false); in hvf_put_segments()
111 vmx_write_segment_descriptor(cs, &seg, R_ES); in hvf_put_segments()
113 hvf_set_segment(cs, &seg, &env->segs[R_SS], false); in hvf_put_segments()
114 vmx_write_segment_descriptor(cs, &seg, R_SS); in hvf_put_segments()
116 hvf_set_segment(cs, &seg, &env->segs[R_FS], false); in hvf_put_segments()
[all …]
H A Dx86_descr.h33 struct vmx_segment *desc, enum X86Seg seg);
35 enum X86Seg seg);
38 enum X86Seg seg);
41 enum X86Seg seg);
43 uint64_t vmx_read_segment_base(CPUState *cpu, enum X86Seg seg);
44 void vmx_write_segment_base(CPUState *cpu, enum X86Seg seg,
52 uint32_t vmx_read_segment_limit(CPUState *cpu, enum X86Seg seg);
53 uint32_t vmx_read_segment_ar(CPUState *cpu, enum X86Seg seg);
/openbmc/linux/tools/testing/selftests/sgx/
H A Dload.c106 static bool encl_ioc_add_pages(struct encl *encl, struct encl_segment *seg) in encl_ioc_add_pages() argument
113 secinfo.flags = seg->flags; in encl_ioc_add_pages()
115 ioc.src = (uint64_t)seg->src; in encl_ioc_add_pages()
116 ioc.offset = seg->offset; in encl_ioc_add_pages()
117 ioc.length = seg->size; in encl_ioc_add_pages()
119 if (seg->measure) in encl_ioc_add_pages()
180 struct encl_segment *seg; in encl_load() local
253 seg = &encl->segment_tbl[j]; in encl_load()
273 seg->prot = PROT_READ | PROT_WRITE; in encl_load()
274 seg->flags = SGX_PAGE_TYPE_TCS << 8; in encl_load()
[all …]
/openbmc/linux/arch/x86/kvm/
H A Dmtrr.c189 static u64 fixed_mtrr_seg_unit_size(int seg) in fixed_mtrr_seg_unit_size() argument
191 return 8 << fixed_seg_table[seg].range_shift; in fixed_mtrr_seg_unit_size()
194 static bool fixed_msr_to_seg_unit(u32 msr, int *seg, int *unit) in fixed_msr_to_seg_unit() argument
198 *seg = 0; in fixed_msr_to_seg_unit()
202 *seg = 1; in fixed_msr_to_seg_unit()
208 *seg = 2; in fixed_msr_to_seg_unit()
220 static void fixed_mtrr_seg_unit_range(int seg, int unit, u64 *start, u64 *end) in fixed_mtrr_seg_unit_range() argument
222 struct fixed_mtrr_segment *mtrr_seg = &fixed_seg_table[seg]; in fixed_mtrr_seg_unit_range()
223 u64 unit_size = fixed_mtrr_seg_unit_size(seg); in fixed_mtrr_seg_unit_range()
230 static int fixed_mtrr_seg_unit_range_index(int seg, int unit) in fixed_mtrr_seg_unit_range_index() argument
[all …]
/openbmc/linux/drivers/net/ethernet/mellanox/mlx5/core/steering/
H A Ddr_buddy.c77 unsigned int seg, order_iter, m; in dr_buddy_find_free_seg() local
85 seg = find_first_bit(buddy->bitmap[order_iter], m); in dr_buddy_find_free_seg()
87 if (WARN(seg >= m, in dr_buddy_find_free_seg()
98 *segment = seg; in dr_buddy_find_free_seg()
123 unsigned int seg, order_iter; in mlx5dr_buddy_alloc_mem() local
126 err = dr_buddy_find_free_seg(buddy, order, &seg, &order_iter); in mlx5dr_buddy_alloc_mem()
130 bitmap_clear(buddy->bitmap[order_iter], seg, 1); in mlx5dr_buddy_alloc_mem()
139 seg <<= 1; in mlx5dr_buddy_alloc_mem()
140 bitmap_set(buddy->bitmap[order_iter], seg ^ 1, 1); in mlx5dr_buddy_alloc_mem()
144 seg <<= order; in mlx5dr_buddy_alloc_mem()
[all …]
/openbmc/u-boot/arch/arm/mach-rockchip/
H A Dmake_fit_atf.py134 seg = uboot.get_segment(i)
135 if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)):
136 p_paddr = seg.__getitem__(ELF_SEG_P_PADDR)
147 seg = bl31.get_segment(i)
148 if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)):
149 paddr = seg.__getitem__(ELF_SEG_P_PADDR)
150 p= seg.__getitem__(ELF_SEG_P_PADDR)
167 seg = bl31.get_segment(i)
168 if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)):
169 paddr = seg.__getitem__(ELF_SEG_P_PADDR)
[all …]
/openbmc/linux/drivers/firmware/google/
H A Dmemconsole-coreboot.c45 struct seg { /* describes ring buffer segments in logical order */ in memconsole_coreboot_read() struct
48 } seg[2] = { {0}, {0} }; in memconsole_coreboot_read() local
55 seg[0] = (struct seg){.phys = cursor, .len = size - cursor}; in memconsole_coreboot_read()
56 seg[1] = (struct seg){.phys = 0, .len = cursor}; in memconsole_coreboot_read()
58 seg[0] = (struct seg){.phys = 0, .len = min(cursor, size)}; in memconsole_coreboot_read()
61 for (i = 0; i < ARRAY_SIZE(seg) && count > done; i++) { in memconsole_coreboot_read()
63 cbmem_console->body + seg[i].phys, seg[i].len); in memconsole_coreboot_read()
64 pos -= seg[i].len; in memconsole_coreboot_read()
/openbmc/linux/net/ipv4/
H A Dudp_offload.c192 static void __udpv4_gso_segment_csum(struct sk_buff *seg, in __udpv4_gso_segment_csum() argument
202 uh = udp_hdr(seg); in __udpv4_gso_segment_csum()
203 iph = ip_hdr(seg); in __udpv4_gso_segment_csum()
206 inet_proto_csum_replace4(&uh->check, seg, *oldip, *newip, in __udpv4_gso_segment_csum()
208 inet_proto_csum_replace2(&uh->check, seg, *oldport, *newport, in __udpv4_gso_segment_csum()
221 struct sk_buff *seg; in __udpv4_gso_segment_list_csum() local
225 seg = segs; in __udpv4_gso_segment_list_csum()
226 uh = udp_hdr(seg); in __udpv4_gso_segment_list_csum()
227 iph = ip_hdr(seg); in __udpv4_gso_segment_list_csum()
229 if ((udp_hdr(seg)->dest == udp_hdr(seg->next)->dest) && in __udpv4_gso_segment_list_csum()
[all …]
/openbmc/linux/arch/m68k/sun3/
H A Dmmu_emu.c128 unsigned long seg, num; in mmu_emu_init() local
151 for(seg = bootmem_end; seg < 0x0f800000; seg += SUN3_PMEG_SIZE) { in mmu_emu_init()
152 i = sun3_get_segmap(seg); in mmu_emu_init()
157 print_pte_vaddr (seg); in mmu_emu_init()
159 sun3_put_segmap(seg, SUN3_INVALID_PMEG); in mmu_emu_init()
164 for (num=0, seg=0x0F800000; seg<0x10000000; seg+=16*PAGE_SIZE) { in mmu_emu_init()
165 if (sun3_get_segmap (seg) != SUN3_INVALID_PMEG) { in mmu_emu_init()
169 print_pte_vaddr (seg + (i*PAGE_SIZE)); in mmu_emu_init()
176 m68k_vmalloc_end = seg; in mmu_emu_init()
181 pmeg_alloc[sun3_get_segmap(seg)] = 2; in mmu_emu_init()
[all …]
/openbmc/linux/drivers/acpi/
H A Dpci_mcfg.c46 #define AL_ECAM(table_id, rev, seg, ops) \ argument
47 { "AMAZON", table_id, rev, seg, MCFG_BUS_ANY, ops }
58 #define QCOM_ECAM32(seg) \ argument
59 { "QCOM ", "QDF2432 ", 1, seg, MCFG_BUS_ANY, &pci_32b_ops }
70 #define HISI_QUAD_DOM(table_id, seg, ops) \ argument
71 { "HISI ", table_id, 0, (seg) + 0, MCFG_BUS_ANY, ops }, \
72 { "HISI ", table_id, 0, (seg) + 1, MCFG_BUS_ANY, ops }, \
73 { "HISI ", table_id, 0, (seg) + 2, MCFG_BUS_ANY, ops }, \
74 { "HISI ", table_id, 0, (seg) + 3, MCFG_BUS_ANY, ops }
100 #define THUNDER_ECAM_QUIRK(rev, seg) \ argument
[all …]
/openbmc/linux/drivers/usb/cdns3/
H A Dcdnsp-mem.c34 struct cdnsp_segment *seg; in cdnsp_segment_alloc() local
38 seg = kzalloc(sizeof(*seg), flags); in cdnsp_segment_alloc()
39 if (!seg) in cdnsp_segment_alloc()
42 seg->trbs = dma_pool_zalloc(pdev->segment_pool, flags, &dma); in cdnsp_segment_alloc()
43 if (!seg->trbs) { in cdnsp_segment_alloc()
44 kfree(seg); in cdnsp_segment_alloc()
49 seg->bounce_buf = kzalloc(max_packet, flags | GFP_DMA); in cdnsp_segment_alloc()
50 if (!seg->bounce_buf) in cdnsp_segment_alloc()
57 seg->trbs[i].link.control |= cpu_to_le32(TRB_CYCLE); in cdnsp_segment_alloc()
59 seg->dma = dma; in cdnsp_segment_alloc()
[all …]
/openbmc/qemu/hw/xen/
H A Dxen-operations.c52 XenGrantCopySegment *seg = &segs[i]; in libxengnttab_fallback_grant_copy() local
54 refs[i] = to_domain ? seg->dest.foreign.ref : in libxengnttab_fallback_grant_copy()
55 seg->source.foreign.ref; in libxengnttab_fallback_grant_copy()
68 XenGrantCopySegment *seg = &segs[i]; in libxengnttab_fallback_grant_copy() local
72 memcpy(page + seg->dest.foreign.offset, seg->source.virt, in libxengnttab_fallback_grant_copy()
73 seg->len); in libxengnttab_fallback_grant_copy()
75 memcpy(seg->dest.virt, page + seg->source.foreign.offset, in libxengnttab_fallback_grant_copy()
76 seg->len); in libxengnttab_fallback_grant_copy()
106 XenGrantCopySegment *seg = &segs[i]; in libxengnttab_backend_grant_copy() local
112 xengnttab_seg->dest.foreign.ref = seg->dest.foreign.ref; in libxengnttab_backend_grant_copy()
[all …]
/openbmc/linux/drivers/auxdisplay/
H A Dht16k33.c105 struct ht16k33_seg seg; member
146 memcpy(buf, &priv->seg.map, priv->seg.map_size); in map_seg_show()
147 return priv->seg.map_size; in map_seg_show()
155 if (cnt != priv->seg.map_size) in map_seg_store()
158 memcpy(&priv->seg.map, buf, cnt); in map_seg_store()
447 seg.linedisp); in ht16k33_linedisp_update()
456 struct ht16k33_seg *seg = &priv->seg; in ht16k33_seg7_update() local
457 char *s = seg->curr; in ht16k33_seg7_update()
460 buf[0] = map_to_seg7(&seg->map.seg7, *s++); in ht16k33_seg7_update()
462 buf[2] = map_to_seg7(&seg->map.seg7, *s++); in ht16k33_seg7_update()
[all …]
/openbmc/linux/drivers/net/ethernet/intel/ice/
H A Dice_ethtool_fdir.c624 * @seg: protocol header description pointer in ice_fdir_set_hw_fltr_rule()
629 ice_fdir_set_hw_fltr_rule(struct ice_pf *pf, struct ice_flow_seg_info *seg, in ice_fdir_set_hw_fltr_rule()
664 if (!memcmp(old_seg, seg, sizeof(*seg))) in ice_fdir_set_hw_fltr_rule()
690 err = ice_flow_add_prof(hw, ICE_BLK_FD, ICE_FLOW_RX, prof_id, seg, in ice_fdir_set_hw_fltr_rule()
696 seg, &entry1_h); in ice_fdir_set_hw_fltr_rule()
701 seg, &entry2_h); in ice_fdir_set_hw_fltr_rule()
705 hw_prof->fdir_seg[tun] = seg; in ice_fdir_set_hw_fltr_rule()
724 ICE_FLOW_PRIO_NORMAL, seg, in ice_fdir_set_hw_fltr_rule()
780 * @seg
621 ice_fdir_set_hw_fltr_rule(struct ice_pf * pf,struct ice_flow_seg_info * seg,enum ice_fltr_ptype flow,enum ice_fd_hw_seg tun) ice_fdir_set_hw_fltr_rule() argument
781 ice_set_init_fdir_seg(struct ice_flow_seg_info * seg,enum ice_flow_seg_hdr l3_proto,enum ice_flow_seg_hdr l4_proto) ice_set_init_fdir_seg() argument
841 struct ice_flow_seg_info *seg, *tun_seg; ice_create_init_fdir_rule() local
915 ice_set_fdir_ip4_seg(struct ice_flow_seg_info * seg,struct ethtool_tcpip4_spec * tcp_ip4_spec,enum ice_flow_seg_hdr l4_proto,bool * perfect_fltr) ice_set_fdir_ip4_seg() argument
1000 ice_set_fdir_ip4_usr_seg(struct ice_flow_seg_info * seg,struct ethtool_usrip4_spec * usr_ip4_spec,bool * perfect_fltr) ice_set_fdir_ip4_usr_seg() argument
1056 ice_set_fdir_ip6_seg(struct ice_flow_seg_info * seg,struct ethtool_tcpip6_spec * tcp_ip6_spec,enum ice_flow_seg_hdr l4_proto,bool * perfect_fltr) ice_set_fdir_ip6_seg() argument
1146 ice_set_fdir_ip6_usr_seg(struct ice_flow_seg_info * seg,struct ethtool_usrip6_spec * usr_ip6_spec,bool * perfect_fltr) ice_set_fdir_ip6_usr_seg() argument
1206 struct ice_flow_seg_info *seg, *tun_seg; ice_cfg_fdir_xtrct_seq() local
[all...]
/openbmc/linux/drivers/media/test-drivers/visl/
H A Dvisl-trace-vp9.h25 "seg.feature_data {%s}\n"
26 "seg.feature_enabled %s\n"
27 "seg.tree_probs %s\n"
28 "seg.pred_probs %s\n"
29 "seg.flags %s\n"
65 __entry->f.seg.feature_data,
66 sizeof(__entry->f.seg.feature_data),
68 __print_array(__entry->f.seg.feature_enabled,
69 ARRAY_SIZE(__entry->f.seg.feature_enabled),
70 sizeof(__entry->f.seg.feature_enabled[0])),
[all …]
/openbmc/qemu/hw/ssi/
H A Daspeed_smc.c241 AspeedSegments seg; in aspeed_smc_flash_overlap() local
249 asc->reg_to_segment(s, s->regs[R_SEG_ADDR0 + i], &seg); in aspeed_smc_flash_overlap()
251 if (new->addr + new->size > seg.addr && in aspeed_smc_flash_overlap()
252 new->addr < seg.addr + seg.size) { in aspeed_smc_flash_overlap()
257 i, seg.addr, seg.addr + seg.size); in aspeed_smc_flash_overlap()
269 AspeedSegments seg; in aspeed_smc_flash_set_segment_region() local
271 asc->reg_to_segment(s, regval, &seg); in aspeed_smc_flash_set_segment_region()
274 memory_region_set_size(&fl->mmio, seg.size); in aspeed_smc_flash_set_segment_region()
275 memory_region_set_address(&fl->mmio, seg.addr - asc->flash_window_base); in aspeed_smc_flash_set_segment_region()
276 memory_region_set_enabled(&fl->mmio, !!seg.size); in aspeed_smc_flash_set_segment_region()
[all …]
/openbmc/linux/arch/m68k/include/asm/
H A Dtlbflush.h143 unsigned char seg; in flush_tlb_mm() local
150 seg = sun3_get_segmap(i); in flush_tlb_mm()
151 if(seg == SUN3_INVALID_PMEG) in flush_tlb_mm()
155 pmeg_alloc[seg] = 0; in flush_tlb_mm()
156 pmeg_ctx[seg] = 0; in flush_tlb_mm()
157 pmeg_vaddr[seg] = 0; in flush_tlb_mm()
191 unsigned char seg, oldctx; in flush_tlb_range() local
200 if((seg = sun3_get_segmap(start)) == SUN3_INVALID_PMEG) in flush_tlb_range()
202 if(pmeg_ctx[seg] == mm->context) { in flush_tlb_range()
203 pmeg_alloc[seg] = 0; in flush_tlb_range()
[all …]
/openbmc/linux/drivers/net/ethernet/marvell/octeontx2/nic/
H A Dotx2_txrx.c84 struct sk_buff *skb, int seg, int *len) in otx2_dma_map_skb_frag() argument
91 if (!seg) { in otx2_dma_map_skb_frag()
96 frag = &skb_shinfo(skb)->frags[seg - 1]; in otx2_dma_map_skb_frag()
106 int seg; in otx2_dma_unmap_skb_frags() local
108 for (seg = 0; seg < sg->num_segs; seg++) { in otx2_dma_unmap_skb_frags()
109 otx2_dma_unmap_page(pfvf, sg->dma_addr[seg], in otx2_dma_unmap_skb_frags()
110 sg->size[seg], DMA_TO_DEVICE); in otx2_dma_unmap_skb_frags()
260 int seg; in otx2_free_rcv_seg() local
267 for (seg = 0; seg < sg->segs; seg++, seg_addr++) in otx2_free_rcv_seg()
349 int seg; in otx2_rcv_pkt_handler() local
[all …]
/openbmc/linux/fs/
H A Dbinfmt_elf_fdpic.c747 struct elf_fdpic_loadseg *seg; in elf_fdpic_map_file() local
790 seg = loadmap->segs; in elf_fdpic_map_file()
791 for (loop = loadmap->nsegs; loop > 0; loop--, seg++) { in elf_fdpic_map_file()
792 if (params->hdr.e_entry >= seg->p_vaddr && in elf_fdpic_map_file()
793 params->hdr.e_entry < seg->p_vaddr + seg->p_memsz) { in elf_fdpic_map_file()
795 (params->hdr.e_entry - seg->p_vaddr) + in elf_fdpic_map_file()
796 seg->addr; in elf_fdpic_map_file()
815 seg = loadmap->segs; in elf_fdpic_map_file()
816 for (loop = loadmap->nsegs; loop > 0; loop--, seg++) { in elf_fdpic_map_file()
817 if (phdr->p_vaddr >= seg->p_vaddr && in elf_fdpic_map_file()
[all …]
/openbmc/linux/fs/nfsd/
H A Dflexfilelayout.c26 struct nfsd4_layout_seg *seg = &args->lg_seg; in nfsd4_ff_proc_layoutget() local
53 if (seg->iomode == IOMODE_READ) { in nfsd4_ff_proc_layoutget()
68 seg->offset = 0; in nfsd4_ff_proc_layoutget()
69 seg->length = NFS4_MAX_UINT64; in nfsd4_ff_proc_layoutget()
71 dprintk("GET: 0x%llx:0x%llx %d\n", seg->offset, seg->length, in nfsd4_ff_proc_layoutget()
72 seg->iomode); in nfsd4_ff_proc_layoutget()
76 seg->length = 0; in nfsd4_ff_proc_layoutget()

12345678910>>...18