patch-2.3.42 linux/arch/sparc/ap1000/hw.c
Next file: linux/arch/sparc/ap1000/irq.c
Previous file: linux/arch/sparc/ap1000/dma.c
Back to the patch index
Back to the overall index
- Lines: 201
- Date:
Wed Dec 31 16:00:00 1969
- Orig file:
v2.3.41/linux/arch/sparc/ap1000/hw.c
- Orig date:
Tue May 13 22:41:03 1997
diff -u --recursive --new-file v2.3.41/linux/arch/sparc/ap1000/hw.c linux/arch/sparc/ap1000/hw.c
@@ -1,200 +0,0 @@
- /*
- * Copyright 1996 The Australian National University.
- * Copyright 1996 Fujitsu Laboratories Limited
- *
- * This software may be distributed under the terms of the Gnu
- * Public License version 2 or later
- */
-/*
- * Initialize the AP1000 hardware: BIF, MSC+, MC+, etc.
- */
-
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <linux/malloc.h>
-#include <linux/mpp.h>
-#include <asm/irq.h>
-#include <asm/ap1000/apservice.h>
-#include <asm/ap1000/apreg.h>
-
-#define APLOG 0
-
-/* these make using CellOS code easier */
-int cap_nopt0;
-int cap_cid0;
-int cap_ncel0;
-
-unsigned _cid, _ncel, _ncelx, _ncely, _cidx, _cidy;
-
-/* yuck - needed for sun4c! */
-static unsigned char dummy;
-unsigned char *auxio_register = &dummy;
-
-
-extern struct cap_init cap_init;
-
-static void unexpected_irq(int irq, void *dev_id, struct pt_regs *regs)
-{
- ap_panic("** unexpected interrupt %d **\n",irq);
-}
-
-static void ap_other_irqs(void)
-{
- request_irq(3, unexpected_irq, SA_INTERRUPT, "unused", 0);
- request_irq(5, unexpected_irq, SA_INTERRUPT, "unused", 0);
- request_irq(12, unexpected_irq, SA_INTERRUPT, "unused", 0);
- request_irq(15, unexpected_irq, SA_INTERRUPT, "unused", 0);
-}
-
-int ap_memory_size(void)
-{
- if ((MSC_IN(MSC_SIMMCHK) & MSC_SIMMCHK_MASK) == 0) {
- return 16*1024*1024;
- }
- return 64*1024*1024;
-}
-
-static void show_registers(void)
-{
- extern struct pt_regs *bif_pt_regs;
- if (bif_pt_regs)
- show_regs(bif_pt_regs);
- else
- printk("unable to show registers\n");
-}
-
-
-static void check_alive(void)
-{
- printk("Cell %d is alive\n",mpp_cid());
-}
-
-
-
-static void show_task(struct task_struct *t)
-{
- printk("cell=%3d uid=%5d pid=%5d utime=%3d stime=%3d etime=%3d name=%s\n",
- mpp_cid(),
- t->uid,
- (int)t->pid,
- (int)t->utime,
- (int)t->stime,
- (jiffies - (int)t->start_time) / 100,
- t->comm);
-}
-
-static void show_ptasks(void)
-{
- extern struct task_struct *task[];
- struct task_struct *p;
- int i;
- int count=0;
-
- read_lock(&tasklist_lock);
- for_each_task(p) {
- struct task_struct **tp = p->tarray_ptr;
-
- if(tp >= &task[MPP_TASK_BASE]) {
- show_task(p);
- count++;
- }
- }
- read_unlock(&tasklist_lock);
-
- if (count == 0)
- printk("no parallel tasks on cell %d\n",mpp_cid());
-}
-
-static void show_utasks(void)
-{
- extern struct task_struct *task[];
- struct task_struct *p;
- int i;
- int count=0;
-
- read_lock(&tasklist_lock);
- for_each_task(p) {
- if(p->uid > 1) {
- show_task(task[i]);
- count++;
- }
- }
- read_unlock(&tasklist_lock);
-
- if (count == 0)
- printk("no user tasks on cell %d\n",mpp_cid());
-}
-
-
-static void show_otasks(void)
-{
- extern struct task_struct *task[];
- struct task_struct *p;
- int i;
- int count=0;
- extern int ap_current_uid;
-
- read_lock(&tasklist_lock);
- for_each_task(p) {
- if(p->uid == ap_current_uid) {
- show_task(task[i]);
- count++;
- }
- }
- read_unlock(&tasklist_lock);
-
- if (count == 0)
- printk("no tasks on cell %d\n",mpp_cid());
-}
-
-
-void do_panic(void)
-{
- int *x = 0;
- *x = 1; /* uggh */
-}
-
-
-void mpp_hw_init(void)
-{
- extern void show_state(void);
- extern void breakpoint(void);
- extern void ctrl_alt_del(void);
- extern void mac_print_state(void);
- extern void show_debug_keys(void);
-
- bif_add_debug_key('c',check_alive,"check if a cell is alive");
- bif_add_debug_key('k',show_debug_keys,"show the kernel debug keys");
- bif_add_debug_key('p',show_registers,"show register info");
- bif_add_debug_key('p',show_registers,"show register info");
- bif_add_debug_key('m',show_mem,"detailed memory stats");
- bif_add_debug_key('s',show_state,"detailed process stats");
- bif_add_debug_key('D',ap_start_debugger,"launch the kernel debugger");
- bif_add_debug_key('i',breakpoint,"send a breakpoint");
- bif_add_debug_key('r',ctrl_alt_del,"run shutdown (doesn't work)");
- bif_add_debug_key('P',show_ptasks,"show running parallel tasks");
- bif_add_debug_key('U',show_utasks,"show all user tasks");
- bif_add_debug_key('O',show_otasks,"show own user tasks");
- bif_add_debug_key('^',do_panic,"panic :-)");
-
-
- cap_cid0 = BIF_IN(BIF_CIDR1);
- cap_ncel0 = cap_init.numcells;
-
- _cid = cap_cid0;
- _ncel = cap_ncel0;
- _ncelx = _ncel<8?_ncel:8;
- _ncely = ((_ncel-1) / _ncelx) + 1;
- _cidx = _cid % _ncelx;
- _cidy = _cid / _ncelx;
-
- ap_bif_init();
- ap_msc_init();
- ap_tnet_init();
- ap_profile_init();
- ap_other_irqs();
- ap_ringbuf_init();
-#if APLOG
- ap_log(NULL,-1);
-#endif
-}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)