Rev 1789 | Rev 1792 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1789 | Rev 1790 | ||
|---|---|---|---|
| Line 24... | Line 24... | ||
| 24 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 26 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | # |
27 | # |
| 28 | 28 | ||
| 29 | #include <arch/boot/boot.h> |
- | |
| 30 | #include <arch/regdef.h> |
29 | #include <arch/regdef.h> |
| 31 | 30 | ||
| 32 | .register %g2, #scratch |
31 | .register %g2, #scratch |
| 33 | .register %g3, #scratch |
32 | .register %g3, #scratch |
| 34 | .register %g6, #scratch |
33 | .register %g6, #scratch |
| Line 37... | Line 36... | ||
| 37 | .section K_TEXT_START, "ax" |
36 | .section K_TEXT_START, "ax" |
| 38 | 37 | ||
| 39 | /* |
38 | /* |
| 40 | * Here is where the kernel is passed control |
39 | * Here is where the kernel is passed control |
| 41 | * from the boot loader. |
40 | * from the boot loader. |
| - | 41 | * |
|
| - | 42 | * The registers are expected to be in this state: |
|
| - | 43 | * %o0 bootinfo structure address |
|
| - | 44 | * %o1 bootinfo structure size |
|
| 42 | */ |
45 | */ |
| 43 | 46 | ||
| 44 | .global kernel_image_start |
47 | .global kernel_image_start |
| 45 | kernel_image_start: |
48 | kernel_image_start: |
| 46 | flushw ! flush all but the active register window |
49 | flushw ! flush all but the active register window |
| 47 | 50 | ||
| - | 51 | /* |
|
| - | 52 | * Disable interrupts and disable 32-bit address masking. |
|
| - | 53 | */ |
|
| 48 | rdpr %pstate, %l0 |
54 | rdpr %pstate, %l0 |
| 49 | and %l0, ~PSTATE_AM_BIT, %l0 |
55 | and %l0, ~(PSTATE_AM_BIT|PSTATE_IE_BIT), %l0 |
| 50 | wrpr %l0, 0, %pstate |
56 | wrpr %l0, 0, %pstate |
| 51 | 57 | ||
| - | 58 | /* |
|
| - | 59 | * Copy the bootinfo structure passed from the boot loader |
|
| 52 | set ofw_cif, %l0 |
60 | * to the kernel bootinfo structure. |
| 53 | 61 | */ |
|
| 54 | call ofw_init |
62 | mov %o1, %o2 |
| 55 | stx %o4, [%l0] |
63 | mov %o0, %o1 |
| 56 | - | ||
| - | 64 | set bootinfo, %o0 |
|
| 57 | call ofw_init_memmap |
65 | call memcpy |
| 58 | nop |
66 | nop |
| 59 | 67 | ||
| 60 | wrpr %r0, 0, %pil |
68 | wrpr %r0, 0, %pil |
| 61 | 69 | ||
| 62 | call main_bsp |
70 | call main_bsp |