Linux PARISC architecture development
 help / color / mirror / Atom feed
From: Ryan Bradetich <rbradetich@uswest.net>
To: Parisc Linux <parisc-linux@thepuffingroup.com>
Subject: [parisc-linux] Questions understanding exec_kernel
Date: Tue, 21 Sep 1999 19:12:06 -0600	[thread overview]
Message-ID: <37E82CE6.3A5DFFB0@uswest.net> (raw)

Hello hackers:

I'm still trying to debug why I can load the kernel from exec_kernel (in
arch/parisc/boot/boot_code/ipl_s.S)


I've snipped the relevent section of code and have some questions
reguarding it.  (Pleae remember I'm, this is my first attempt with
PA-RISC, and I've been learning by reading the PA-RISC 1.1 Architecture
and Instruction Set Reference Manual, HP Assembler Reference Manual,
various comments throughout the code, and trial and error.)

/*
 *  exec_kernel(entry_point, &commandline, Kernel_FreeMemStart,
half_bss_size );
 *  exec_kernel() calls our kernel...
 */

 .EXPORT exec_kernel,code
 .PROC
 .CALLINFO
 .ENTRY
exec_kernel
 mtsm     %r0                 ; Disable traps and interrupts.

 mtctl    %r0,        %cr17   ; Clear two-level IIA Space Queue
 mtctl    %r0,        %cr17   ;    effectively setting kernel space.
 [Question: Page 5-149 from the PA-RISC 1.1 Architecture and Instruction
Set Reference Manual states: "Level 0:  If the target control register
is CR 8, 9, 12, 13, 17, or 20, this instructin executes as a null
instruction."  I am assuming we are running at level 0 since the rfi
command required running at level 0, so what is the difference between a
null instruction and a nop?]

 mtctl    %arg0,      %cr18   ; Stuff entry point into head of IIA
 ldo      4(%arg0),   %arg0   ;    Offset Queue, and entry point + 4
 mtctl    %arg0,      %cr18   ;    into tail of IIA Offset Queue.

 ldi      0x9,        %arg0   ; Set PSW Q & I bits (collect intrpt
 mtctl    %arg0,      %ipsw   ;    state, allow external intrpts).

 copy     %arg2,      %arg0   ; commandline to arg1
 [Note:  I think the comment is incorrect... we are actually copying the
Kernel_FreeMemStart into arg0 ... Am I missunderstanding the comment?]
                              ; arg3 is not changed..
 .EXIT
 rfi    ; begin execution of kernel.
 nop
 [Question: Page 5-139 from the PA-RISC 1.1 Architecture and Instruction
Set Reference Manual states: "Execution of an RFI instruction when any
of the PSW !, I, or R bits are ones is an undefined operation."  We are
explicitly setting the Q & I bits before calling the rfi command.  I
don't understand how this works ... ]
 .PROCEND

Thanks,
-Ryan

             reply	other threads:[~1999-09-22  1:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-09-22  1:12 Ryan Bradetich [this message]
1999-09-22  4:26 ` [parisc-linux] Questions understanding exec_kernel Grant Grundler
1999-09-22  6:45   ` [parisc-linux] C360 boot problem Hannu Martikka
1999-09-22 13:34     ` Philipp Rumpf
1999-09-22 13:32   ` [parisc-linux] Questions understanding exec_kernel Philipp Rumpf
1999-09-22 12:46 ` Hai Vo-Ba
1999-09-22 13:36   ` Philipp Rumpf
1999-09-22 13:29 ` Philipp Rumpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=37E82CE6.3A5DFFB0@uswest.net \
    --to=rbradetich@uswest.net \
    --cc=parisc-linux@thepuffingroup.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox