b45ea0fe80
increased to 256TiB. The kernel address space can also be increased to be the same size, but this will be performed in a later change. To help work with an extra level of page tables two new functions have been added, one to file the lowest level table entry, and one to find the block/page level. Both of these find the entry for a given pmap and virtual address. This has been tested with a combination of buildworld, stress2 tests, and by using sort to consume a large amount of memory by sorting /dev/zero. No new issues are known to be present from this change. Reviewed by: kib Obtained from: ABT Systems Ltd Relnotes: yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5720
69 lines
2.2 KiB
C
69 lines
2.2 KiB
C
/*-
|
|
* Copyright (c) 2001 Jake Burkholder.
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* $FreeBSD$
|
|
*/
|
|
|
|
#ifndef _MACHINE_PCB_H_
|
|
#define _MACHINE_PCB_H_
|
|
|
|
#ifndef LOCORE
|
|
|
|
struct trapframe;
|
|
|
|
#define PCB_LR 30
|
|
struct pcb {
|
|
uint64_t pcb_x[31];
|
|
uint64_t pcb_pc;
|
|
/* These two need to be in order as we access them together */
|
|
uint64_t pcb_sp;
|
|
uint64_t pcb_tpidr_el0;
|
|
vm_offset_t pcb_l0addr;
|
|
|
|
/* Fault handler, the error value is passed in x0 */
|
|
vm_offset_t pcb_onfault;
|
|
|
|
u_int pcb_flags;
|
|
#define PCB_SINGLE_STEP_SHIFT 0
|
|
#define PCB_SINGLE_STEP (1 << PCB_SINGLE_STEP_SHIFT)
|
|
|
|
/* Place last to simplify the asm to access the rest if the struct */
|
|
__uint128_t pcb_vfp[32];
|
|
uint32_t pcb_fpcr;
|
|
uint32_t pcb_fpsr;
|
|
int pcb_fpflags;
|
|
#define PCB_FP_STARTED 0x01
|
|
u_int pcb_vfpcpu; /* Last cpu this thread ran VFP code */
|
|
};
|
|
|
|
#ifdef _KERNEL
|
|
void makectx(struct trapframe *tf, struct pcb *pcb);
|
|
int savectx(struct pcb *pcb) __returns_twice;
|
|
#endif
|
|
|
|
#endif /* !LOCORE */
|
|
|
|
#endif /* !_MACHINE_PCB_H_ */
|