summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authorbenno <benno@FreeBSD.org>2003-02-28 03:35:42 +0000
committerbenno <benno@FreeBSD.org>2003-02-28 03:35:42 +0000
commit367f245ca982ba4b092369744ffd496293d2aaa9 (patch)
tree18c1ef426a4b4028b1aefa4d9552d6dafa829b6d /sys/powerpc
parentdb29ab160b253857456e6bcb6a3be2dae34f414e (diff)
downloadFreeBSD-src-367f245ca982ba4b092369744ffd496293d2aaa9.zip
FreeBSD-src-367f245ca982ba4b092369744ffd496293d2aaa9.tar.gz
These files are no longer used. They have been replaced with similarly named
.S files.
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/powerpc/atomic.s137
-rw-r--r--sys/powerpc/powerpc/locore.s224
-rw-r--r--sys/powerpc/powerpc/ofwmagic.s75
-rw-r--r--sys/powerpc/powerpc/swtch.s161
4 files changed, 0 insertions, 597 deletions
diff --git a/sys/powerpc/powerpc/atomic.s b/sys/powerpc/powerpc/atomic.s
deleted file mode 100644
index a844f7a..0000000
--- a/sys/powerpc/powerpc/atomic.s
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2000, 2001 Benno Rice
- * 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$
- */
-
-#include <machine/asm.h>
-
- .text
-
-ASENTRY(atomic_set_8)
-0: lwarx 0, 0, 3 /* load old value */
- slwi 4, 4, 24 /* shift the byte so it's in the right place */
- or 0, 0, 4 /* generate new value */
- stwcx. 0, 0, 3 /* attempt to store */
- bne- 0 /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
-
-ASENTRY(atomic_clear_8)
-0: lwarx 0, 0, 3 /* load old value */
- slwi 4, 4, 24 /* shift the byte so it's in the right place */
- andc 0, 0, 4 /* generate new value */
- stwcx. 0, 0, 3 /* attempt to store */
- bne- 0 /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
-
-ASENTRY(atomic_add_8)
-0: lwarx 9, 0, 3 /* load old value */
- srwi 0, 9, 24 /* byte alignment */
- add 0, 4, 0 /* calculate new value */
- slwi 0, 9, 24 /* byte alignment */
- clrlwi 9, 9, 8 /* clear the byte in the original word */
- or 9, 9, 0 /* copy back in to the original word */
- stwcx. 9, 0, 3 /* attempt to store */
- bne- 0 /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
-
-ASENTRY(atomic_subtract_8)
-0: lwarx 9, 0, 3 /* load old value */
- srwi 0, 9, 24 /* byte alignment */
- subf 0, 4, 0 /* calculate new value */
- slwi 0, 9, 24 /* byte alignment */
- clrlwi 9, 9, 8 /* clear the byte in the original word */
- or 9, 9, 0 /* copy back in to the original word */
- stwcx. 9, 0, 3 /* attempt to store */
- bne- 0 /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
-
-ASENTRY(atomic_set_16)
- li 11, 3 /* mask to test for alignment */
- andc. 11, 3, 11 /* force address to be word-aligned */
-0: lwarx 12, 0, 11 /* load old value */
- bne 1f /* no realignment needed if it's aligned */
- slwi 4, 4, 16 /* realign operand */
-1: or 12, 12, 4 /* calculate new value */
- stwcx. 12, 0, 11 /* attempt to store */
- bne- 0b /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
-
-ASENTRY(atomic_clear_16)
- li 11, 3 /* mask to test for alignment */
- andc. 11, 3, 11 /* force address to be word-aligned */
-0: lwarx 12, 0, 11 /* load old value */
- bne 1f /* no realignment needed if it's aligned */
- slwi 4, 4, 16 /* realign operand */
-1: andc 12, 12, 4 /* calculate new value */
- stwcx. 12, 0, 11 /* attempt to store */
- bne- 0b /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
-
-ASENTRY(atomic_add_16)
- li 11, 3 /* mask to test for alignment */
- andc. 11, 3, 11 /* force address to be word-aligned */
-0: lwarx 12, 0, 11 /* load old value */
- bne 1f /* no realignment needed if it's aligned */
- srwi 12, 9, 16 /* realign */
-1: add 12, 4, 12 /* calculate new value */
- bne 2f /* no realignment needed if it's aligned */
- slwi 12, 12, 16 /* realign */
-2: clrlwi 9, 9, 16 /* clear old value */
- or 9, 9, 12 /* copy in new value */
- stwcx. 12, 0, 11 /* attempt to store */
- bne- 0b /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
-
-ASENTRY(atomic_subtract_16)
- li 11, 3 /* mask to test for alignment */
- andc. 11, 3, 11 /* force address to be word-aligned */
-0: lwarx 12, 0, 11 /* load old value */
- bne 1f /* no realignment needed if it's aligned */
- srwi 12, 9, 16 /* realign */
-1: subf 12, 4, 12 /* calculate new value */
- bne 2f /* no realignment needed if it's aligned */
- slwi 12, 12, 16 /* realign */
-2: clrlwi 9, 9, 16 /* clear old value */
- or 9, 9, 12 /* copy in new value */
- stwcx. 12, 0, 11 /* attempt to store */
- bne- 0 /* loop if failed */
- eieio /* synchronise */
- sync
- blr /* return */
diff --git a/sys/powerpc/powerpc/locore.s b/sys/powerpc/powerpc/locore.s
deleted file mode 100644
index 697fde8..0000000
--- a/sys/powerpc/powerpc/locore.s
+++ /dev/null
@@ -1,224 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: locore.S,v 1.24 2000/05/31 05:09:17 thorpej Exp $ */
-
-/*
- * Copyright (C) 2001 Benno Rice
- * 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 Benno Rice ``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 TOOLS GMBH 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.
- */
-/*
- * Copyright (C) 1995, 1996 Wolfgang Solfrank.
- * Copyright (C) 1995, 1996 TooLs GmbH.
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by TooLs GmbH.
- * 4. The name of TooLs GmbH may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``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 TOOLS GMBH 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.
- */
-
-#include "opt_ddb.h"
-#include "opt_ipkdb.h"
-#include "assym.s"
-
-#include <sys/syscall.h>
-
-#include <machine/trap.h>
-#include <machine/param.h>
-#include <machine/sr.h>
-#include <machine/spr.h>
-#include <machine/psl.h>
-#include <machine/asm.h>
-
-/*
- * Some instructions gas doesn't understand (yet?)
- */
-#define bdneq bdnzf 2,
-
-/*
- * Globals
- */
- .data
-GLOBAL(tmpstk)
- .space 8208
-GLOBAL(esym)
- .long 0 /* end of symbol table */
-
-GLOBAL(ofmsr)
- .long 0 /* msr used in Open Firmware */
-
-GLOBAL(powersave)
- .long 0
-
-#define INTSTK 8192 /* 8K interrupt stack */
-#define SPILLSTK 4096 /* 4K spill stack */
-
-/*
- * Dummy interrupt table to keep sysctl happy until
- * it's worked out what to do with naming
- */
-GLOBAL(intrnames)
- .asciz "dummy"
-GLOBAL(eintrnames)
- .align 4
-GLOBAL(intrcnt)
- .long 0
-GLOBAL(eintrcnt)
-
-/*
- * File-scope for locore.S
- */
-idle_u:
- .long 0 /* fake uarea during idle after exit */
-openfirmware_entry:
- .long 0 /* openfirmware entry point */
-srsave:
- .long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-
-/*
- * This symbol is here for the benefit of kvm_mkdb, and is supposed to
- * mark the start of kernel text.
- */
- .text
- .globl kernel_text
-kernel_text:
-
-/*
- * Startup entry. Note, this must be the first thing in the text
- * segment!
- */
- .text
- .globl __start
-__start:
-#ifdef FIRMWORKSBUGS
- mfmsr 0
- andi. 0,0,PSL_IR|PSL_DR
- beq 1f
-
- bl ofwr_init
-1:
-#endif
- li 8,0
- li 9,0x100
- mtctr 9
-1:
- dcbf 0,8
- icbi 0,8
- addi 8,8,0x20
- bdnz 1b
- sync
- isync
-
- mtibatu 0,0
- mtibatu 1,0
- mtibatu 2,0
- mtibatu 3,0
- mtdbatu 0,0
- mtdbatu 1,0
- mtdbatu 2,0
- mtdbatu 3,0
-
- li 9,0x12
- mtibatl 0,9
- mtdbatl 0,9
- li 9,0x1ffe
- mtibatu 0,9
- mtdbatu 0,9
- isync
-
- /* Save the argument pointer and length */
- mr 20,6
- mr 21,7
-
- lis 8,openfirmware_entry@ha
- stw 5,openfirmware_entry@l(8) /* save client interface handler */
- mr 3,5
-
- lis 1,tmpstk@ha
- addi 1,1,tmpstk@l
- addi 1,1,8192
-
- mfmsr 0
- lis 9,ofmsr@ha
- stw 0,ofmsr@l(9)
-
- bl OF_init
-
- lis 4,end@ha
- addi 4,4,end@l
- mr 5,4
-
- lis 3,kernel_text@ha
- addi 3,3,kernel_text@l
-
- /* Restore the argument pointer and length */
- mr 6,20
- mr 7,21
-
- bl powerpc_init
- bl mi_startup
- b OF_exit
-
-/*
- * int setfault()
- *
- * Similar to setjmp to setup for handling faults on accesses to user memory.
- * Any routine using this may only call bcopy, either the form below,
- * or the (currently used) C code optimized, so it doesn't use any non-volatile
- * registers.
- */
- .globl setfault
-setfault:
- mflr 0
- mfcr 12
- mfsprg 4,0
- lwz 4,PC_CURTHREAD(4)
- lwz 4,TD_PCB(4)
- stw 3,PCB_ONFAULT(4)
- stw 0,0(3)
- stw 1,4(3)
- stw 2,8(3)
- stmw 12,12(3)
- xor 3,3,3
- blr
-
-#include <powerpc/powerpc/trap_subr.S>
diff --git a/sys/powerpc/powerpc/ofwmagic.s b/sys/powerpc/powerpc/ofwmagic.s
deleted file mode 100644
index 890e86e..0000000
--- a/sys/powerpc/powerpc/ofwmagic.s
+++ /dev/null
@@ -1,75 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: ofwmagic.S,v 1.2 1997/10/09 08:38:18 jtc Exp $ */
-
-/*-
- * Copyright (c) 1997 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Jason R. Thorpe.
- *
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
- */
-
-/*
- * Magic note section used by OpenFirmware.
- */
-
- .section ".note"
-
- # note header
-
- # length of name
- .long 8
-
- # note descriptor size
- .long 20
-
- # note type (IEEE 1275)
- .long 0x1275
-
- # name of owner
- .asciz "PowerPC"
- .balign 4
-
-
- # note descriptor
-
- # real mode (-1) or virtual mode (0)
- .long 0
-
- # real-base
- .long -1
- # real-size
- .long -1
-
- # virt-base
- .long -1
- # virt-size
- .long -1
diff --git a/sys/powerpc/powerpc/swtch.s b/sys/powerpc/powerpc/swtch.s
deleted file mode 100644
index 188d5cf..0000000
--- a/sys/powerpc/powerpc/swtch.s
+++ /dev/null
@@ -1,161 +0,0 @@
-/* $FreeBSD$ */
-/* $NetBSD: locore.S,v 1.24 2000/05/31 05:09:17 thorpej Exp $ */
-
-/*
- * Copyright (C) 2001 Benno Rice
- * 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 Benno Rice ``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 TOOLS GMBH 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.
-*/
-/*
- * Copyright (C) 1995, 1996 Wolfgang Solfrank.
- * Copyright (C) 1995, 1996 TooLs GmbH.
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by TooLs GmbH.
- * 4. The name of TooLs GmbH may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``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 TOOLS GMBH 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.
- */
-
-#include "assym.s"
-
-#include <sys/syscall.h>
-
-#include <machine/trap.h>
-#include <machine/param.h>
-#include <machine/sr.h>
-#include <machine/psl.h>
-#include <machine/asm.h>
-
-/*
- * void cpu_switch()
- * Find a runnable thread and switch to it.
- */
-ENTRY(cpu_switch)
- mfsprg %r3,0 /* Get the pcpu pointer */
- lwz %r4,PC_CURTHREAD(%r3) /* Get the current thread */
- lwz %r3,TD_PCB(%r4) /* Get a pointer to the PCB */
-
- mr %r12,%r2
- stmw %r12,PCB_CONTEXT(%r3) /* Save the non-volatile GP regs */
- mr %r14,%r3 /* Copy the current pcb pointer */
- mr %r15,%r4 /* ... and the curthread pointer */
- mfcr %r16 /* Save the condition register */
- stw %r16,PCB_CR(%r3)
- mflr %r16 /* Save the link register */
- stw %r16,PCB_LR(%r3)
- mfsr %r16,USER_SR /* Save USER_SR for copyin/out */
- isync
- stw %r16,PCB_USR(%r3)
- stw %r1,PCB_SP(%r3) /* Save the stack pointer */
-
-#if 0
- lwz %r29,PCB_FLAGS(%r3)
- andi. %r9, %r29, 1 /* XXX - don't hard code */
- beq .L1
- bl save_fpu
-#endif
-
-.L1:
- bl choosethread /* Find a new thread to run */
- cmplw 0,%r3,%r15 /* Compare to curthread */
- beq .L2 /* If it's the same, we're done */
-
- mr %r16,%r3 /* Save off the (struct thread *) */
-
- mr %r3,%r15
- bl pmap_deactivate /* Deactivate the current pmap */
-
- mr %r3,%r16
- bl pmap_activate /* Activate the new address space */
-
- mfsprg %r4,0 /* Get the pcpu pointer */
- stw %r16,PC_CURTHREAD(%r4) /* Store new current thread */
- mr %r3,%r16 /* and save in r3 */
- lwz %r16,TD_PCB(%r16) /* Store new current PCB */
- stw %r16,PC_CURPCB(%r4)
-
-#if 0
- lwz %r29, PCB_FLAGS(%r4) /* Restore FPU regs if needed */
- andi. %r9, %r29, 1
- beq .L2
- mr %r3, %r4
- bl enable_fpu
-#endif
-
- /* thread to restore is in r3 */
-.L2:
- lwz %r3, TD_PCB(%r3)
- lmw %r12,PCB_CONTEXT(%r3) /* Load the non-volatile GP regs */
- mr %r2,%r12
- lwz %r5,PCB_CR(%r3) /* Load the condition register */
- mtcr %r5
- lwz %r5,PCB_LR(%r3) /* Load the link register */
- mtlr %r5
- lwz %r5,PCB_USR(%r3) /* Load the USER_SR segment reg */
- mtsr USER_SR,%r5
- isync
- lwz %r1,PCB_SP(%r3) /* Load the stack pointer */
- blr
-
-/*
- * savectx(pcb)
- * Update pcb, saving current processor state
- */
-ENTRY(savectx)
- mr %r12,%r2
- stmw %r12,PCB_CONTEXT(%r3) /* Save the non-volatile GP regs */
- mfcr %r4 /* Save the condition register */
- stw %r4,PCB_CONTEXT(%r3)
- blr
-
-/*
- * fork_trampoline()
- * Set up the return from cpu_fork()
- */
-ENTRY(fork_trampoline)
- lwz %r3,CF_FUNC(%r1)
- lwz %r4,CF_ARG0(%r1)
- lwz %r5,CF_ARG1(%r1)
- bl fork_exit
- addi %r1,%r1,4
- b trapexit
OpenPOWER on IntegriCloud