Lines Matching +full:y +full:- +full:rc
1 // SPDX-License-Identifier: GPL-2.0
18 #include <asm/asm-offsets.h>
24 #define PTR_ADD(x, y) (((char *) (x)) + ((unsigned long) (y))) argument
25 #define PTR_SUB(x, y) (((char *) (x)) - ((unsigned long) (y))) argument
26 #define PTR_DIFF(x, y) ((unsigned long)(((char *) (x)) - ((unsigned long) (y)))) argument
68 list_add(&sa->list, &dump_save_areas); in save_area_alloc()
70 list_add_tail(&sa->list, &dump_save_areas); in save_area_alloc()
89 lc = (struct lowcore *)(regs - __LC_FPREGS_SAVE_AREA); in save_area_add_regs()
90 memcpy(&sa->psw, &lc->psw_save_area, sizeof(sa->psw)); in save_area_add_regs()
91 memcpy(&sa->ctrs, &lc->cregs_save_area, sizeof(sa->ctrs)); in save_area_add_regs()
92 memcpy(&sa->gprs, &lc->gpregs_save_area, sizeof(sa->gprs)); in save_area_add_regs()
93 memcpy(&sa->acrs, &lc->access_regs_save_area, sizeof(sa->acrs)); in save_area_add_regs()
94 memcpy(&sa->fprs, &lc->floating_pt_save_area, sizeof(sa->fprs)); in save_area_add_regs()
95 memcpy(&sa->fpc, &lc->fpt_creg_save_area, sizeof(sa->fpc)); in save_area_add_regs()
96 memcpy(&sa->prefix, &lc->prefixreg_save_area, sizeof(sa->prefix)); in save_area_add_regs()
97 memcpy(&sa->todpreg, &lc->tod_progreg_save_area, sizeof(sa->todpreg)); in save_area_add_regs()
98 memcpy(&sa->timer, &lc->cpu_timer_save_area, sizeof(sa->timer)); in save_area_add_regs()
99 memcpy(&sa->todcmp, &lc->clock_comp_save_area, sizeof(sa->todcmp)); in save_area_add_regs()
109 /* Copy lower halves of vector registers 0-15 */ in save_area_add_vxrs()
111 memcpy(&sa->vxrs_low[i], &vxrs[i].u[2], 8); in save_area_add_vxrs()
112 /* Copy vector registers 16-31 */ in save_area_add_vxrs()
113 memcpy(sa->vxrs_high, vxrs + 16, 16 * sizeof(__vector128)); in save_area_add_vxrs()
139 int rc; in copy_oldmem_kernel() local
145 len = min(count, sclp.hsa_size - from); in copy_oldmem_kernel()
146 rc = memcpy_hsa_kernel(dst, from, len); in copy_oldmem_kernel()
147 if (rc) in copy_oldmem_kernel()
148 return rc; in copy_oldmem_kernel()
151 if (oldmem_data.start && from - oldmem_data.start < oldmem_data.size) { in copy_oldmem_kernel()
152 from -= oldmem_data.start; in copy_oldmem_kernel()
153 len = min(count, oldmem_data.size - from); in copy_oldmem_kernel()
155 len = min(count, oldmem_data.size - from); in copy_oldmem_kernel()
162 len = min(PAGE_SIZE - offset_in_page(ra), len); in copy_oldmem_kernel()
167 return -EFAULT; in copy_oldmem_kernel()
171 count -= len; in copy_oldmem_kernel()
182 int rc; in copy_oldmem_user() local
188 len = min(count, sclp.hsa_size - from); in copy_oldmem_user()
189 rc = memcpy_hsa_user(dst, from, len); in copy_oldmem_user()
190 if (rc) in copy_oldmem_user()
191 return rc; in copy_oldmem_user()
194 if (oldmem_data.start && from - oldmem_data.size < oldmem_data.size) { in copy_oldmem_user()
195 from -= oldmem_data.size; in copy_oldmem_user()
196 len = min(count, oldmem_data.size - from); in copy_oldmem_user()
198 len = min(count, oldmem_data.size - from); in copy_oldmem_user()
203 rc = copy_to_user_real(dst, (void *) from, count); in copy_oldmem_user()
204 if (rc) in copy_oldmem_user()
205 return rc; in copy_oldmem_user()
209 count -= len; in copy_oldmem_user()
221 int rc; in copy_oldmem_page() local
227 rc = copy_oldmem_user((void __force __user *) buf, src, csize); in copy_oldmem_page()
229 rc = copy_oldmem_kernel((void *) buf, src, csize); in copy_oldmem_page()
230 return rc; in copy_oldmem_page()
237 * [0 - OLDMEM_SIZE] is mapped to [OLDMEM_BASE - OLDMEM_BASE + OLDMEM_SIZE]
244 int rc; in remap_oldmem_pfn_range_kdump() local
247 size_old = min(size, oldmem_data.size - (pfn << PAGE_SHIFT)); in remap_oldmem_pfn_range_kdump()
248 rc = remap_pfn_range(vma, from, in remap_oldmem_pfn_range_kdump()
251 if (rc || size == size_old) in remap_oldmem_pfn_range_kdump()
252 return rc; in remap_oldmem_pfn_range_kdump()
253 size -= size_old; in remap_oldmem_pfn_range_kdump()
275 size_hsa = min(size, hsa_end - (pfn << PAGE_SHIFT)); in remap_oldmem_pfn_range_zfcpdump()
278 size -= size_hsa; in remap_oldmem_pfn_range_zfcpdump()
317 note->n_namesz = strlen(name) + 1; in nt_init_name()
318 note->n_descsz = d_len; in nt_init_name()
319 note->n_type = type; in nt_init_name()
322 memcpy(buf + len, name, note->n_namesz); in nt_init_name()
323 len = roundup(len + note->n_namesz, 4); in nt_init_name()
325 memcpy(buf + len, desc, note->n_descsz); in nt_init_name()
326 len = roundup(len + note->n_descsz, 4); in nt_init_name()
365 memcpy(&nt_prstatus.pr_reg.gprs, sa->gprs, sizeof(sa->gprs)); in fill_cpu_elf_notes()
366 memcpy(&nt_prstatus.pr_reg.psw, sa->psw, sizeof(sa->psw)); in fill_cpu_elf_notes()
367 memcpy(&nt_prstatus.pr_reg.acrs, sa->acrs, sizeof(sa->acrs)); in fill_cpu_elf_notes()
371 memcpy(&nt_fpregset.fpc, &sa->fpc, sizeof(sa->fpc)); in fill_cpu_elf_notes()
372 memcpy(&nt_fpregset.fprs, &sa->fprs, sizeof(sa->fprs)); in fill_cpu_elf_notes()
376 ptr = nt_init(ptr, NT_S390_TIMER, &sa->timer, sizeof(sa->timer)); in fill_cpu_elf_notes()
377 ptr = nt_init(ptr, NT_S390_TODCMP, &sa->todcmp, sizeof(sa->todcmp)); in fill_cpu_elf_notes()
378 ptr = nt_init(ptr, NT_S390_TODPREG, &sa->todpreg, sizeof(sa->todpreg)); in fill_cpu_elf_notes()
379 ptr = nt_init(ptr, NT_S390_CTRS, &sa->ctrs, sizeof(sa->ctrs)); in fill_cpu_elf_notes()
380 ptr = nt_init(ptr, NT_S390_PREFIX, &sa->prefix, sizeof(sa->prefix)); in fill_cpu_elf_notes()
383 &sa->vxrs_high, sizeof(sa->vxrs_high)); in fill_cpu_elf_notes()
385 &sa->vxrs_low, sizeof(sa->vxrs_low)); in fill_cpu_elf_notes()
400 size += nt_size(NT_S390_TIMER, sizeof(sa->timer)); in get_cpu_elf_notes_size()
401 size += nt_size(NT_S390_TODCMP, sizeof(sa->todcmp)); in get_cpu_elf_notes_size()
402 size += nt_size(NT_S390_TODPREG, sizeof(sa->todpreg)); in get_cpu_elf_notes_size()
403 size += nt_size(NT_S390_CTRS, sizeof(sa->ctrs)); in get_cpu_elf_notes_size()
404 size += nt_size(NT_S390_PREFIX, sizeof(sa->prefix)); in get_cpu_elf_notes_size()
406 size += nt_size(NT_S390_VXRS_HIGH, sizeof(sa->vxrs_high)); in get_cpu_elf_notes_size()
407 size += nt_size(NT_S390_VXRS_LOW, sizeof(sa->vxrs_low)); in get_cpu_elf_notes_size()
427 * Get vmcoreinfo using lowcore->vmcore_info (new kernel)
441 sizeof(nt_name) - 1)) in get_vmcoreinfo_old()
503 note->n_namesz = 0; in nt_final()
504 note->n_descsz = 0; in nt_final()
505 note->n_type = 0; in nt_final()
515 memcpy(ehdr->e_ident, ELFMAG, SELFMAG); in ehdr_init()
516 ehdr->e_ident[EI_CLASS] = ELFCLASS64; in ehdr_init()
517 ehdr->e_ident[EI_DATA] = ELFDATA2MSB; in ehdr_init()
518 ehdr->e_ident[EI_VERSION] = EV_CURRENT; in ehdr_init()
519 memset(ehdr->e_ident + EI_PAD, 0, EI_NIDENT - EI_PAD); in ehdr_init()
520 ehdr->e_type = ET_CORE; in ehdr_init()
521 ehdr->e_machine = EM_S390; in ehdr_init()
522 ehdr->e_version = EV_CURRENT; in ehdr_init()
523 ehdr->e_phoff = sizeof(Elf64_Ehdr); in ehdr_init()
524 ehdr->e_ehsize = sizeof(Elf64_Ehdr); in ehdr_init()
525 ehdr->e_phentsize = sizeof(Elf64_Phdr); in ehdr_init()
526 ehdr->e_phnum = mem_chunk_cnt + 1; in ehdr_init()
539 if (sa->prefix != 0) in get_cpu_cnt()
566 phdr->p_filesz = end - start; in loads_init()
567 phdr->p_type = PT_LOAD; in loads_init()
568 phdr->p_offset = start; in loads_init()
569 phdr->p_vaddr = start; in loads_init()
570 phdr->p_paddr = start; in loads_init()
571 phdr->p_memsz = end - start; in loads_init()
572 phdr->p_flags = PF_R | PF_W | PF_X; in loads_init()
573 phdr->p_align = PAGE_SIZE; in loads_init()
591 if (sa->prefix != 0) in notes_init()
596 phdr->p_type = PT_NOTE; in notes_init()
597 phdr->p_offset = notes_offset; in notes_init()
598 phdr->p_filesz = (unsigned long) PTR_SUB(ptr, ptr_start); in notes_init()
599 phdr->p_memsz = phdr->p_filesz; in notes_init()
640 return -ENODEV; in elfcorehdr_alloc()