Module Name:    src
Committed By:   skrll
Date:           Wed Mar 10 18:53:40 UTC 2010

Modified Files:
        src/sys/arch/hppa/hppa: trap.S

Log Message:
More comment improvement.


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/hppa/hppa/trap.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/hppa/hppa/trap.S
diff -u src/sys/arch/hppa/hppa/trap.S:1.42 src/sys/arch/hppa/hppa/trap.S:1.43
--- src/sys/arch/hppa/hppa/trap.S:1.42	Wed Mar 10 18:17:42 2010
+++ src/sys/arch/hppa/hppa/trap.S	Wed Mar 10 18:53:40 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.S,v 1.42 2010/03/10 18:17:42 skrll Exp $	*/
+/*	$NetBSD: trap.S,v 1.43 2010/03/10 18:53:40 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -125,9 +125,8 @@
  * Kernel Gateway Page (must be at known address)
  *	System Call Gate
  *
- * GATEway instructions have to be at a fixed known locations
- * because their addresses are hard coded in routines such as
- * those in the C library.
+ * GATEway instructions have to be at a fixed known locations because their
+ * addresses are hard coded in routines such as those in the C library.
  */
 
 	.align	NBPG
@@ -169,8 +168,8 @@
 
 bsd_syscall:
 	/*
-	 * set up a space register and a protection id so that
-	 * we can access kernel memory
+	 * Set up a space register and a protection id so that we can access
+	 * kernel memory.
 	 */
 	mfctl	%eiem, %r1
 	mtctl	%r0, %eiem
@@ -212,16 +211,16 @@
 	ldw	L_PCB(%sr1, %t3), %t2			/* XXX can use ,sl */
 
 	/*
-	 * NB: Even though t4 is a caller-saved register, we
-	 * save it anyways, as a convenience to __vfork14 and
-	 * any other syscalls that absolutely must have a 
-	 * register that is saved for it.
+	 * NB: Even though t4 is a caller-saved register, we save it anyways, as
+	 * a convenience to __vfork14 and any other syscalls that absolutely
+	 * must have a register that is saved for it.
 	 */
+
 	/* calculate kernel sp, load, create kernel stack frame */
-	ldo	NBPG+TRAPFRAME_SIZEOF(%t2), %t3	/* see cpu_lwp_fork */
+	ldo	NBPG+TRAPFRAME_SIZEOF(%t2), %t3		/* see cpu_lwp_fork */
 
-	stw	%t4, TF_R19 -TRAPFRAME_SIZEOF(%sr1, %t3)    /* t4 for vfork */
-	stw	%t1, TF_R22 -TRAPFRAME_SIZEOF(%sr1, %t3)    /* syscall # */
+	stw	%t4, TF_R19-TRAPFRAME_SIZEOF(%sr1, %t3)	/* t4 for vfork */
+	stw	%t1, TF_R22-TRAPFRAME_SIZEOF(%sr1, %t3)	/* syscall # */
 	copy	%sp, %t4
 
 	/* gotta save the args, in case we gonna restart */
@@ -235,8 +234,8 @@
 	/*
 	 * Make space for the syscall arguments.
 	 *
-	 * Match the offset from %sp to the trapframe with the
-	 * offset in TLABEL(all) for the benefit of ddb.
+	 * Match the offset from %sp to the trapframe with the offset in
+	 * TLABEL(all) for the benefit of ddb.
 	 */
 	stwm	%r0, HPPA_FRAME_SIZE+HPPA_FRAME_MAXARGS(%sr1, %sp)
 
@@ -259,11 +258,11 @@
 	mtctl	%r1, %eiem
 
 	/*
-	 * Normally, we only have to save the caller-saved registers,
-	 * because the callee-saved registers will be naturally
-	 * saved and restored by our callee(s).  However, see the
-	 * longer comment in the trap handling code below for the
-	 * reasons why we need to save and restore all of them.
+	 * Normally, we only have to save the caller-saved registers, because
+	 * the callee-saved registers will be naturally saved and restored by
+	 * our callee(s).  However, see the longer comment in the trap handling
+	 * code below for the reasons why we need to save and restore all of
+	 * them.
 	 */
 	stw	%r2 , TF_R2 -TRAPFRAME_SIZEOF(%sr1, %t3)
 	stw	%r3 , TF_R3 -TRAPFRAME_SIZEOF(%sr1, %t3)
@@ -294,15 +293,13 @@
 	stw	%r0, HPPA_FRAME_CRP(%sr1, %sp)
 
 	/*
-	 * Is this copying required... OpenBSD doesn't do it!
-	 *
 	 * Copy Arguments
-	 * unfortunately mmap() under bsd requires 7 words;
-	 * linux is confined to 5, and hpux to 6.
-	 * assuming the `long' syscall it gives us the maximum
-	 * 9 words, which very much overkill for an average of 3.
-	 * we keep it at 10, since bundling will keep it
-	 * at the same speed as 9 anyway.
+	 *
+	 * Unfortunately mmap() under bsd requires 7 words; linux is confined to
+	 * 5, and hpux to 6.  Assuming the `long' syscall it gives us the
+	 * maximum 9 words, which very much overkill for an average of 3.  We
+	 * keep it at 10, since bundling will keep it at the same speed as 9
+	 * anyway.
 	 */
 	/*
 	 * XXX fredette - possible security hole here.
@@ -448,9 +445,8 @@
 	ldw	TF_R2(%t3), %r2
 	ldw	TF_R3(%t3), %r3
 	/*
-	 * See the comment in the trap handling code below
-	 * about why we need to save and restore all general
-	 * registers under these cases.
+	 * See the comment in the trap handling code below about why we need to
+	 * save and restore all general registers under these cases.
 	 */
 #if defined(DDB) || defined(KGDB) || defined(FPEMUL)
 	ldw	TF_R4(%t3), %r4
@@ -516,10 +512,10 @@
 	mtctl	%t1, CR_UPADDR
 
 	/*
-	 * clear the system mask, this puts us back into physical mode.
-	 * reload trapframe pointer w/ correspondent PA value.
-	 * sp will be left in virtual until restored from trapframe,
-	 * since we don't use it anyway.
+	 * Clear the system mask, this puts us back into physical mode.  Reload
+	 * the trapframe pointer with the correspondent PA value.  %sp will be
+	 * left in virtual until restored from trapframe, since we don't use it
+	 * anyway.
 	 */
 	ssm	0, %r0
 	ldil	L%L$trap_tmp_save, %t3
@@ -732,10 +728,9 @@
 	.size	ivaaddr, .-ivaaddr
 
 /*
- * This is the locore support for HPMC and TOC machine checks.
- * In the HPMC case, this is a continuation of the HPMC handler
- * that begins in the interrupt vector table.  In the TOC
- * case, this is the handler installed in page zero.
+ * This is the locore support for HPMC and TOC machine checks.  In the HPMC
+ * case, this is a continuation of the HPMC handler that begins in the interrupt
+ * vector table.  In the TOC case, this is the handler installed in page zero.
  *
  * Notable points about the CPU state for the OS_TOC handler:
  *
@@ -744,7 +739,7 @@
  * - CR22 (IPSW) is valid.
  * - All other control registers HVERSION dependent.
  * - The TLB is initialized and invalid.
- * 
+ *
  * Notable points about the CPU state for the OS_HPMC handler:
  *
  * - The PSW M bit is 1, all other PSW bits are 0.
@@ -753,13 +748,12 @@
  * - All other control registers HVERSION dependent.
  * - The TLB is unchanged.
  *
- * The TOC CPU state is actually trickier.  Whereas in the HPMC 
- * case, we can return to virtual mode right away, in the TOC 
- * case we can't return to virtual mode until the kernel mapping 
- * is reloaded into the BTLB.
- * 
- * Otherwise, we set up the kernel context, move onto the 
- * emergency stack, and call hppa_machine_check.
+ * The TOC CPU state is actually trickier.  Whereas in the HPMC case, we can
+ * return to virtual mode right away, in the TOC case we can't return to virtual
+ * mode until the kernel mapping is reloaded into the BTLB.
+ *
+ * Otherwise, we set up the kernel context, move onto the emergency stack, and
+ * call hppa_machine_check.
  */
 ENTRY_NOPROFILE(os_toc, 0)
 	/* This loads %arg0 and nullifies the next instruction. */
@@ -875,101 +869,91 @@
 EXIT(TLABEL(hpmc))
 
 /*
- * This handles all assist emulation traps.  We break
- * these down into three categories: emulate special
- * function unit, emulate non-FPU coprocessor, and
- * emulate FPU coprocessor, and dispatch accordingly.
+ * This handles all assist emulation traps.  We break these down into three
+ * categories and dispatch accordingly. The categories are:
+ *
+ *  - emulate special function unit,
+ *  - emulate non-FPU coprocessor, and
+ *  - emulate FPU coprocessor.
+ *
  */
 	.export TLABEL(emu), entry
 LEAF_ENTRY_NOPROFILE(TLABEL(emu))
 
 	/*
-	 * Save %arg0 and load it with the instruction
-	 * that caused the emulation trap.
+	 * Save %arg0 and load it with the instruction that caused the emulation
+	 * trap.
 	 */
 	mtctl	%arg0, %tr2
 	mfctl	%iir, %arg0
 	
 	/*
-	 * If the opcode field in the instruction is 4,
-	 * indicating a special function unit SPOP
-	 * instruction, branch to emulate an sfu.
-	 * If the opcode field is 0xe, then it's an FPU instruction.
+	 * If the opcode field in the instruction is 4, indicating a special
+	 * function unit SPOP instruction, branch to emulate an sfu.  If the
+	 * opcode field is 0xe, then it's an FPU instruction.
 	 */
 	extru	%arg0, 5, 6, %r1
 	comib,=,n 4, %r1, L$emulate_sfu
 	comib,=,n 0xe, %r1, hppa_fpu_nop0
 
 	/*
-	 * If the uid field in the instruction is not
-	 * zero or one, indicating a coprocessor other
-	 * than an FPU, branch to emulate a non-FPU
+	 * If the uid field in the instruction is not zero or one, indicating a
+	 * coprocessor other than an FPU, branch to emulate a non-FPU
 	 * coprocessor.
 	 */
 	extru	%arg0, 25, 3, %r1
 	comib,<<,n 1, %r1, L$emulate_coproc
 
 	/*
-	 * If we're still here, this is a FPU 
-	 * coprocessor instruction.  That we trapped
-	 * to emulate it means one of three things.
+	 * If we're still here, this is a FPU coprocessor instruction.  That we
+	 * trapped to emulate it means one of three things.
 	 *
-	 * If we do not have a hardware FPU, we need
-	 * to emulate this instruction.
+	 * If we do not have a hardware FPU, we need to emulate this instr-
+	 * uction.
 	 *
-	 * If we do have a hardware FPU but it is
-	 * disabled, we trapped because the current
-	 * process' state is not loaded into the
-	 * FPU.  We load that state in, possibly
-	 * swapping out another process' state first.
+	 * If we do have a hardware FPU but it is disabled, we trapped because
+	 * the current process' state is not loaded into the FPU.  We load that
+	 * state in, possibly swapping out another process' state first.
 	 *
-	 * If we do have a hardware FPU and it is
-	 * enabled, we trapped because of an
-	 * instruction that isn't supported by this
-	 * FPU, and so we need to emulate it.
+	 * If we do have a hardware FPU and it is enabled, we trapped because of
+	 * an instruction that isn't supported by this FPU, and so we need to
+	 * emulate it.
 	 */
 
 	/*
-	 * As an optimization, hppa_fpu_bootstrap
-	 * replaces this branch instruction with a
-	 * nop if there is a hardware FPU.
+	 * As an optimization, hppa_fpu_bootstrap replaces this branch inst-
+	 * ruction with a nop if there is a hardware FPU.
 	 *
-	 * Otherwise, this is the branch to emulate
-	 * an FPU coprocessor.
+	 * Otherwise, this is the branch to emulate an FPU coprocessor.
 	 */
 ALTENTRY(hppa_fpu_nop0)
 	b,n	L$emulate_fpu
 
 	/*
-	 * We have a hardware FPU.  If it is enabled,
-	 * branch to emulate the instruction.
+	 * We have a hardware FPU.  If it is enabled,  branch to emulate the
+	 * instruction.
 	 */
 	mfctl	%ccr, %arg0
 	extru,= %arg0, 25, 2, %r1
 	b,n	L$emulate_fpu
 
 	/*
-	 * The hardware FPU is disabled, so we need to swap 
-	 * in the FPU state of the process whose uspace
-	 * physical address in CR_UPADDR.  We may also need 
-	 * to swap out the FPU state of any process whose 
-	 * uspace physical address is in the fpu_cur_uspace 
-	 * variable.
+	 * The hardware FPU is disabled, so we need to swap in the FPU state of
+	 * the process whose uspace physical address in CR_UPADDR.  We may also
+	 * need to swap out the FPU state of any process whose uspace physical
+	 * address is in the fpu_cur_uspace variable.
 	 */
 	
 	/*
-	 * So far, the CTRAP() macro has saved %r1 in
-	 * %tr7, and the dispatching above has saved
-	 * %arg0 in tr2.  Save the other registers that 
-	 * we want to use.  hppa_fpu_swap deliberately 
-	 * uses only these registers and %r1 and %arg0.
+	 * So far, the CTRAP() macro has saved %r1 in %tr7, and the dispatching
+	 * above has saved %arg0 in tr2.  Save the other registers that we want
+	 * to use.  hppa_fpu_swap deliberately uses only these registers and %r1
+	 * and %arg0.
 	 */
 	mtctl	%arg1, %tr3
 	mtctl	%rp, %tr5
 
-	/*
-	 * Call hppa_fpu_swap.
-	 */
+	/* Call hppa_fpu_swap. */
 	ldil	L%fpu_cur_uspace, %arg0
 	ldw	R%fpu_cur_uspace(%arg0), %arg0
 	mfctl	CR_UPADDR, %arg1
@@ -986,67 +970,56 @@
 	nop
 
 	/*
-	 * We branch here to emulate a special function
-	 * unit instruction.  On entry, %r1 is saved in %tr7
-	 * (courtesy of CTRAP), and %arg0 is saved in %tr2
-	 * (courtesy of the sfu/coprocessor dispatcher).
+	 * We branch here to emulate a special function unit instruction.  On
+	 * entry, %r1 is saved in %tr7 (courtesy of CTRAP), and %arg0 is saved
+	 * in %tr2 (courtesy of the sfu/coprocessor dispatcher).
 	 */
 L$emulate_sfu:
 	/*
-	 * Currently we just restore %arg0 and
-	 * trap with an illegal instruction.
+	 * Currently we just restore %arg0 and trap with an illegal instruction.
 	 */
 	mfctl	%tr2, %arg0
 	b	TLABEL(all)
 	ldi	T_ILLEGAL, %r1
 
 	/*
-	 * We branch here to emulate a non-FPU coprocessor
-	 * instruction.  On entry, %r1 is saved in %tr7
-	 * (courtesy of CTRAP), and %t1 is saved in %tr2
-	 * (courtesy of the sfu/coprocessor dispatcher).
+	 * We branch here to emulate a non-FPU coprocessor instruction.  On
+	 * entry, %r1 is saved in %tr7 (courtesy of CTRAP), and %t1 is saved in
+	 * %tr2 (courtesy of the sfu/coprocessor dispatcher).
 	 */
 L$emulate_coproc:
 	/*
-	 * Currently we just restore %arg0 and
-	 * trap with an illegal instruction.
+	 * Currently we just restore %arg0 and trap with an illegal instruction.
 	 */
 	mfctl	%tr2, %arg0
 	b	TLABEL(all)
 	ldi	T_ILLEGAL, %r1
 
 	/*
-	 * We branch here to emulate an FPU coprocessor
-	 * instruction.  On entry, %r1 is saved in %tr7
-	 * (courtesy of CTRAP), and %t1 is saved in %tr2
+	 * We branch here to emulate an FPU coprocessor instruction.  On entry,
+	 * %r1 is saved in %tr7 (courtesy of CTRAP), and %t1 is saved in %tr2
 	 * (courtesy of the sfu/coprocessor dispatcher).
 	 */
 L$emulate_fpu:
 	/*
-	 * We get back to C via the normal generic trap 
-	 * mechanism, as opposed to switching to a special 
-	 * stack, setting up a trapframe, etc., ourselves,
+	 * We get back to C via the normal generic trap mechanism, as opposed to
+	 * switching to a special stack, setting up a trapframe, etc. ourselves,
 	 * for three reasons.
 	 *
-	 * One, I want to turn interrupts back on, since
-	 * the emulation code might not be fast.  Two, 
-	 * because the instruction to emulate might be
-	 * a load or a store, I need to turn address
-	 * translation back on (i.e., return to virtual
-	 * mode.)  Third, doing both of those plus
-	 * setting up a trapframe is a pain, and the
-	 * generic trap handling already does it all.
+	 * One, I want to turn interrupts back on, since the emulation code
+	 * might not be fast.  Two, because the instruction to emulate might be
+	 * a load or a store, I need to turn address translation back on (i.e.,
+	 * return to virtual mode.)  Third, doing both of those plus setting up
+	 * a trapframe is a pain, and the generic trap handling already does it
+	 * all.
 	 *
-	 * To relieve trap() from having to check for
-	 * sfu and non-FPU instructions again, it assumes
-	 * that these kinds of instructions have already 
-	 * been translated into some other trap type (as 
-	 * they have, by the above L$emulate_sfu and 
-	 * L$emulate_coproc), and all T_EMULATION | T_USER 
-	 * traps are FPU instructions that need emulating.
+	 * To relieve trap() from having to check for sfu and non-FPU inst-
+	 * ructions again, it assumes that these kinds of instructions have
+	 * already been translated into some other trap type (as they have, by
+	 * the above L$emulate_sfu and L$emulate_coproc), and all
+	 * T_EMULATION | T_USER traps are FPU instructions that need emulating.
 	 *
-	 * So we just restore %arg0 and trap with
-	 * T_EMULATION.
+	 * So we just restore %arg0 and trap with T_EMULATION.
 	 */
 	mfctl	%tr2, %arg0
 	b	TLABEL(all)
@@ -1061,18 +1034,15 @@
 LEAF_ENTRY_NOPROFILE(hppa_fpu_swap)
 
 	/*
-	 * Note that this function must work in 
-	 * physical mode as well as virtual mode,
-	 * because it can be called by a trap
-	 * handler.  This also further restricts 
-	 * the registers we can use.  We can only
-	 * use %arg0, %arg1, and %r1.
+	 * Note that this function must work in physical mode as well as virtual
+	 * mode, because it can be called by a trap handler.  This also further
+	 * restricts the registers we can use.  We can only use %arg0, %arg1,
+	 * and %r1.
 	 */
 
 	/*
-	 * Assuming that out and in aren't both NULL,
-	 * we will have to run coprocessor instructions,
-	 * so we'd better enable it.
+	 * Assuming that out and in aren't both NULL, we will have to run co-
+	 * processor instructions, so we'd better enable it.
 	 * 
 	 * Also, branch if there's no FPU state to swap out.
 	 */
@@ -1134,17 +1104,14 @@
 L$fpu_swap_in:
 
 	/*
-	 * Stash the incoming user structure in
-	 * fpu_cur_uspace.  Because this variable
-	 * holds a physical address, this means 
-	 * that hppa_fpu_swap can only be called 
-	 * with a non-zero user_in from physical 
-	 * mode (i.e., from the emulation assist
-	 * trap handler).  And that's exactly
-	 * what happens now.
+	 * Stash the incoming user structure in fpu_cur_uspace.  Because this
+	 * variable holds a physical address, this means that hppa_fpu_swap can
+	 * only be called with a non-zero user_in from physical mode (i.e., from
+	 * the emulation assist trap handler).  And that's exactly what happens
+	 * now.
 	 *
-	 * So stash fpu_cur_uspace, branching
-	 * past the swap-in code if it is zero.
+	 * So stash fpu_cur_uspace, branching past the swap-in code if it is
+	 * zero.
 	 */
 	ldil	L%fpu_cur_uspace, %r1
 	comb,=	%r0, %arg1, L$fpu_no_swap_in
@@ -2074,7 +2041,8 @@
 	/* save the trap type and flags */
 	stw	%r1, TF_FLAGS(%t3)
 
-	mfctl	%rctr, %t1		/* gotta get it before R is up */
+	/* gotta get it before R is up */
+	mfctl	%rctr, %t1
 
 	copy	%sp, %t3
 	ldo	HPPA_FRAME_SIZE+TRAPFRAME_SIZEOF(%sp), %sp

Reply via email to