diff options
-rw-r--r-- | sys/mips/mips/locore.S | 16 | ||||
-rw-r--r-- | sys/mips/sentry5/s5_machdep.c | 22 | ||||
-rw-r--r-- | sys/mips/sibyte/sb_machdep.c | 22 |
3 files changed, 18 insertions, 42 deletions
diff --git a/sys/mips/mips/locore.S b/sys/mips/mips/locore.S index a332325..11d9cdc 100644 --- a/sys/mips/mips/locore.S +++ b/sys/mips/mips/locore.S @@ -77,12 +77,6 @@ GLOBAL(fenvp) .space 4 # Assumes mips32? Is that OK? #endif -#ifdef CFE /* Assumes MIPS32, bad? */ -GLOBAL(cfe_handle) - .space 4 -GLOBAL(cfe_vector) - .space 4 -#endif GLOBAL(stackspace) .space NBPG /* Smaller than it should be since it's temp. */ .align 8 @@ -176,16 +170,6 @@ VECTOR(_locore, unknown) /* Save YAMON boot environment pointer */ sw a2, _C_LABEL(fenvp) #endif -#ifdef CFE - /* - * Save the CFE context passed to us by the loader. - */ - li t1, 0x43464531 - bne a3, t1, no_cfe /* Check for "CFE1" signature */ - sw a0, _C_LABEL(cfe_handle)/* Firmware data segment */ - sw a2, _C_LABEL(cfe_vector)/* Firmware entry vector */ -no_cfe: -#endif /* * The following needs to be done differently for each platform and diff --git a/sys/mips/sentry5/s5_machdep.c b/sys/mips/sentry5/s5_machdep.c index d326f73..8a76bda 100644 --- a/sys/mips/sentry5/s5_machdep.c +++ b/sys/mips/sentry5/s5_machdep.c @@ -79,11 +79,6 @@ __FBSDID("$FreeBSD$"); #include <dev/cfe/cfe_api.h> #endif -#ifdef CFE -extern uint32_t cfe_handle; -extern uint32_t cfe_vector; -#endif - extern int *edata; extern int *end; @@ -183,8 +178,8 @@ platform_trap_exit(void) } void -platform_start(__register_t a0 __unused, __register_t a1 __unused, - __register_t a2 __unused, __register_t a3 __unused) +platform_start(__register_t a0, __register_t a1, __register_t a2, + __register_t a3) { vm_offset_t kernend; uint64_t platform_counter_freq; @@ -197,16 +192,17 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused, /* * Initialize CFE firmware trampolines before * we initialize the low-level console. + * + * CFE passes the following values in registers: + * a0: firmware handle + * a2: firmware entry point + * a3: entry point seal */ - if (cfe_handle != 0) - cfe_init(cfe_handle, cfe_vector); + if (a3 == CFE_EPTSEAL) + cfe_init(a0, a2); #endif cninit(); -#ifdef CFE - if (cfe_handle == 0) - panic("CFE was not detected by locore.\n"); -#endif mips_init(); # if 0 diff --git a/sys/mips/sibyte/sb_machdep.c b/sys/mips/sibyte/sb_machdep.c index d6bee76..3a2b555 100644 --- a/sys/mips/sibyte/sb_machdep.c +++ b/sys/mips/sibyte/sb_machdep.c @@ -86,11 +86,6 @@ __FBSDID("$FreeBSD$"); #endif #endif -#ifdef CFE -extern uint32_t cfe_handle; -extern uint32_t cfe_vector; -#endif - #ifdef CFE_ENV extern void cfe_env_init(void); #endif @@ -236,8 +231,8 @@ platform_trap_exit(void) } void -platform_start(__register_t a0 __unused, __register_t a1 __unused, - __register_t a2 __unused, __register_t a3 __unused) +platform_start(__register_t a0, __register_t a1, __register_t a2, + __register_t a3) { vm_offset_t kernend; @@ -249,16 +244,17 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused, /* * Initialize CFE firmware trampolines before * we initialize the low-level console. + * + * CFE passes the following values in registers: + * a0: firmware handle + * a2: firmware entry point + * a3: entry point seal */ - if (cfe_handle != 0) - cfe_init(cfe_handle, cfe_vector); + if (a3 == CFE_EPTSEAL) + cfe_init(a0, a2); #endif cninit(); -#ifdef CFE - if (cfe_handle == 0) - panic("CFE was not detected by locore.\n"); -#endif mips_init(); mips_timer_init_params(sb_cpu_speed(), 0); |